Recently Written · git

cl-yag

Mirror and rewrite of Solène Rapenne's cl-yag SSG of renown

git clone https://github.com/equwal/cl-yag

Log | Files | Refs


commit 707f5e747aa837657993f852439c99063a416cf6
lambda <lambda@fnord.one>
2017-11-29 11:33:19 +0100

~README.md and data/README.md		Remove bmake and CLISP references.
					Correct spelling errors.
					Add links to websites of sbcl, ecl, multimarkdown in section 'Requirements'.
					Add :title to data/articles.lisp section.
					Use *bar* for *vars* and *functions* (exception: Beginning of list-item).
					Use ``bar`` for ``:keywords``, booleans, inline-examples.
					Use **bar** for **foo/path/** and **foo/path/file.name**.

Status of this commit: Suggestion.

 README.md      | 162 ++++++++++++++++++++++++++++-----------------------------
 data/README.md | 162 ++++++++++++++++++++++++++++-----------------------------
 2 files changed, 160 insertions(+), 164 deletions(-)
diff --git a/README.md b/README.md
index a54a176..2c1c3a7 100644
--- a/README.md
+++ b/README.md
@@ -1,9 +1,9 @@
-# README
+o# README
 
 
 ## Introduction
 
-cl-yag is a very lightweight, static site generator that produces **gopher** sites as well as **html** websites.  
+cl-yag is a lightweight, static-site generator that produces **gopher** sites as well as **html** websites.  
 The name 'cl-yag' stands for 'Common Lisp - Yet Another website Generator'.  
 It runs without Quicklisp.
 
@@ -21,20 +21,16 @@ gopher-space](gopher://dataswamp.org/1/~solene/).
 To use cl-yag you'll need:
 
 1. A Common Lisp Interpreter
-    - cl-yag's current default is **Steel Bank Common Lisp (SBCL)**.
-    - **Embeddable Common Lisp (ECL)** will do fine as well.
+    - cl-yag's current default is [Steel Bank Common Lisp (SBCL)](http://www.sbcl.org/).
+    - [Embeddable Common Lisp (ECL)](https://common-lisp.net/project/ecl/) will do fine as well.
 2. A Markdown-to-HTML Converter
-    - cl-yag's current default is **multimarkdown**.
-3. BSD Make
-    - Linux-Users, cl-yag uses a BSD Makefile syntax, that isn't compatible with GNU make's.
-    - You need to install a port of the NetBSD make tool, called **bmake**.
+    - cl-yag's current default is [multimarkdown](http://fletcherpenney.net/multimarkdown/).
 
 
 ## Usage
 
-Go into your project's directory and type ``make``. You'll find your new website/gopher page in 'output/'.  
-If you want to get rid of everything in your 'output/' subdirectories,
-type ``make clean``.  
+Go into your project's directory and type ``make``. You'll find your new website/gopher page in **output/**.  
+If you want to get rid of everything in your **output/** subdirectories, type ``make clean``.  
 For further commands: read the Makefile.  
 Read in the follwing section where to find it.
 
@@ -73,25 +69,25 @@ least the following files and folders:
     - This is cl-yag's core library.
 - **static/**
     - This directory holds content, that needs to be published without being changed (e.g. stylesheets, js-scripts).
-	- If you come from 'non-static CMS'-Country: 'static/' holds, what you would put in your 'assets/' directory.
+	- If you come from 'non-static CMS'-Country: **static/** holds, what you would put in your **assets/** directory.
 - **templates/**
     - The templates in this directory provide the structural skeleton(s) of the webpages and feeds you want to create.
 - **output/**
     - cl-yag puts in this directory everything ready to get deployed.
-	- Because cl-yag generates not only HTML, but gopher-compliant pages as well, output/ **holds two subdirectories**.
-		- **gopher/** : contains the website for gopher,
-		- **html/** : contains the website in HTML.
+	- Because cl-yag generates not only HTML, but gopher-compliant pages as well, **output/** **holds two subdirectories**.
+		- **gopher/** contains the website for gopher,
+		- **html/** contains the website in HTML.
 
 And there is the **data/** directory, which is important enough to get a subsubsection of its own.
 
-### The 'data/' Directory
+### The data/ Directory
 
 This directory is crucial for the usage of cl-yag.
 
 **data/** contains
 
-- the **articles.lisp configuration file**, which defines important metadata for posts and pages.
-- It also holds **${id}.md**-files, which are holding your posts' and pages' content. You can use markdown to write them.
+- the **articles.lisp** configuration file, which defines important metadata for posts and pages.
+- It also holds **${id}.md** files, which are holding your posts' (or pages') content. You can use markdown to write them.
 
 For more information: Read section 'Configuration'.
 
@@ -99,25 +95,25 @@ For more information: Read section 'Configuration'.
 ## Configuration
 
 cl-yag's main configuration file is **data/articles.lisp**.  
-In order to have a reliably running implementation of cl-yag, you have
+In order to have a running implementation of cl-yag, you have
 to set most of the values in this file.
 
 **data/articles.lisp** has two parts:
 
-1. A variable called **config**. It defines global values, that define your webpage.
-2. A variable called **articles**. It defines local values, that - in turn - define individual pages/posts.
+1. A variable called *config*. Its values define your webpage.
+2. A variable called *articles*. Its values define your posts.
 
-Values are assigned by placing a string (e.g. "foo") or a boolean
-(i.e. 't' or 'nil') behind a keyword (e.g. ':title').
+Values are assigned by placing a string (e.g. ``"foo"``) or a boolean
+(i.e. ``t`` or ``nil``) behind a keyword (e.g. ``:title``).
 
 
-### The **config** Variable
+### The *config* Variable
 
-The **config** variable is used to assign the following values:
+The *config* variable is used to assign the following values:
 
 - **:webmaster**
     - The name of the default(!) author. 
-	- :webmaster gets used, if **:author** is omitted. (see below: 'The **articles** variable'.)
+	- ``:webmaster`` gets used, if ``:author`` is omitted. (See below: 'The **articles** variable'.)
 - **:title**
     - The title of the webpage
 - **:description**
@@ -125,45 +121,49 @@ The **config** variable is used to assign the following values:
 - **:url**
     - This needs to be the full(!) URL of your website, including(!) a final slash.
 	- MIND: If the url contains a tilde (~), it needs to get duplicated
-	- Example: https://mydomain/~~user/ is a valid url.
+	- Example: ``https://mydomain/~~user/``
 - **:rss-item-number**
     - This holds the number of latest(!) RSS items you want to get published when you generate the files.
 - **html**
-    - *t* to export html website. Set *nil* to disable.
+    - ``t`` to export html website. Set ``nil`` to disable.
 - **gopher**
-    - *t* to export gopher website. Set *nil* to disable.
+    - ``t`` to export gopher website. Set ``nil`` to disable.
 - **gopher-path**
     - This is the full path of the directory to access your gopher hole.
 - **gopher-server**
-    - Hostname of the gopher server. Because gopher doesn't allow relative links (like html), you need to know where you put your files.
+    - Hostname of the gopher server. It needs to be included in every link.
 - **gopher-port**
-    - tcp port of the gopher server. 70 is the default port. It need to be included in every link (see: **gopher-server**).
+    - tcp port of the gopher server. 70 is the default port. It needs to be included in every link.
 
 
-### The **articles** Variable
+### The *articles* Variable
 
-The **articles** variable holds per page/post-metadata.  
-Of the following fields, only the *:author* and *:short* description can be omitted.
+The *articles* variable holds post metadata.  
+So you need to create an entry in the *articles* variable for each of your posts.
 
-- **:short**
-	- The _:short_ field's value is used for displaying a really short description of the posts content on your homepage.
-	- If _:short_ doesn't get a value, the full article gets displayed.
-	- Hint: Use ``:short "view the article for the full text"``, if you don't want to display the full text of an article on your index site.
+Of the following keywords, only ``:author`` and ``:short`` can be omitted.
+
+- **:author**
+    - The ``:author`` field is used to display the article's author.
+    - If you omit it, the generator will take the name from the ``:webmaster`` field of the *config* variable.
 - **:id**
-    - The _:id_ field holds the filename of your post/page. 
-	- Example: ``:id "2"`` will load file ``data/2.md``. Use text instead of numbers, if you want to.
+    - The ``:id`` field holds the filename of your post/page.
+	- Example: ``:id "2"`` will load file **data/2.md**. Use text instead of numbers, if you want to.
 	- (See section: 'The **data/** Directory'.)
-- **:author**
-    - The _:author_ field is used to display the article' author.
-    -  If you omit it, the generator will take the name from the **:webmaster** field of the *config* variable.
+- **:short**
+	- The ``:short`` field's value is used for displaying a really short description of the posts content on your homepage.
+	- If ``:short`` doesn't get a value, the full article gets displayed.
+	- Hint: Use ``:short "view the article for the full text"``, if you don't want to display the full text of an article on your index site.
 - **:tag**
-    - _:tag_ field is used to create a "view" containing all articles of the same tag.
-	-  MIND: Whitespaces are not allowed in(!) tags.
+    - ``:tag`` field is used to create a "view" containing all articles of the same tag.
+	-  MIND: Whitespaces are used to separate tags and are not allowed in(!) tags.
+- **:title**
+	- The ``:title`` field's value sets your post's title, its first headline, as well as its entry on the index.html.
 
 
 ## Howto Create A New Post
  
-Edit data/articles.lisp and add a new list to the *articles* variable:
+Edit **data/articles.lisp** and add a new list to the *articles* variable:
 
     (list :title "How do I use cl-yag" 
 		  :id "2"
@@ -172,30 +172,30 @@ Edit data/articles.lisp and add a new list to the *articles* variable:
 		  :short "I will explain how to use the generator" 
 		  :tag "example help code")
 
-Then write a corresponding ``2.md`` file, using markdown.
+Then write a corresponding **data/2.md** file, using markdown.
+
 
 ## Howto Publish A Post
 
 I prepared a Makefile to facilitate the process of generating and
-publishing your static sites.
-
+publishing your static sites.  
 All you need to do in order to publish is to go into your cl-yag
-directory and type "make".
+directory and type ``make``.
 
-The 'make' command does create html and gopher files in the defined
-**output/** location (which can be a symbolic link pointing to some
-other directory, somewhere else on your machine).
+The make command creates html and gopher files in the defined location.  
+The default is the **output/** directory, but you can use a symbolic link
+pointing to some other directory as well.
 
 
 ## Howto Add A New Page
 
 You may want to have some dedicated pages besides the index or a post.  
-To create one, edit the **generate-site** function in cl-yag's
-generator.lisp and add a function call, like this:
+To create one, edit the *generate-site* function in cl-yag's
+**generator.lisp** and add a function call, like this:
 
     (generate "somepage.html" (load-file "data/mypage.html"))
   
-This will produce the file **somepage.html** in the output folder.
+This will produce **output/html/somepage.html**.
 
 
 ## Further Customization
@@ -204,66 +204,64 @@ This will produce the file **somepage.html** in the output folder.
 
 cl-yags default Lisp interpreter is **sbcl**.  
 If you want to use a different lisp interpreter you need to set the
-variable 'LISP' to the name of your binary, when calling ``make``.
+variable *LISP* to the name of your binary, when calling ``make``:
 
-	`make LISP=ecl`
+    make LISP=ecl
 
 
 ### Using git Hooks For Publishing
 
 You may customize your publishing-process further, e.g. by using a git
-hook to call 'make' after each change in the repo so your website gets
-updated automatically.
+hook to call the make program after each change in the repo so your
+website gets updated automatically.
 
 
 ## Page-Includes
 
 Here is an example code, if you want to include another page in the template:
 
-1. Create **template/panel.tpl** with the html you want to include.
-2. Add a string in the target file, where the replacement should occur.  
-   In this case, we choose **%%Panel%%** for a string, and, because we want the panel to be displayed on each page, we add this string to **template/layout.tpl**.
+1. Create **templates/panel.tpl** containing the html you want to include.
+2. Add a replacement-string in the target file, where the replacement should occur.  
+   In this case, we choose **%%Panel%%** for a string, and, because we want the panel to be displayed on each page, we add this string to **templates/layout.tpl**.
 
 3. Modify the function *generate-layout* in cl-yag's **generator.lisp** accordingly.  
    This is done by adding the following template function call:
 
-		"**(template "%%Panel%%" (load-file "template/panel.tpl"))**" 
-
-(Note: You can insert your text directly into the layout template file
-as well.)
+		(template "%%Panel%%" (load-file "templates/panel.tpl"))
 
+Another valid approach is to writer your html directly into **templates/layout.tpl**.
 
 ## Known Limitations
 
 ### Use ~~ To Create ~
 
-cl-yag crashes if you use a single "**~**" caracter inside one data
-structure in **articles.lisp** files, because Common Lisp employs the
-tilde as a prefix to indicate format specifiers in format strings.
+cl-yag crashes if you use a single "~" character inside
+**templates/articles.lisp**, because Common Lisp employs the tilde as a
+prefix to indicate format specifiers in format strings.
 
-In order to use a literal `~` - e.g. for creating a :title or :url
-reference - you have to **escape** the tilde **by duplicating** it:
-``~~``.  
-(See _:url_ in section 'Configuration').
+In order to use a literal `~` -- e.g. for creating a ``:title`` or
+``:url`` reference -- you have to *escape* the tilde *by
+duplicating* it: ``~~``.  (See ``:url`` in section 'Configuration').
 
 
 ### Posting Without Tagging
 
-cl-yag allows posts to be 'untagged'- but with the default template
-you'll get a line below your title that displays: "Tags: ".
+cl-yag allows posts without tags, but, using the default
+**templates/layout.tpl**, you'll get a line below your title that
+displays: "Tags: ".
 
 (Note: If you are looking for a way to contribute this may be a task for you.)
 
 
 ### A Note On Themes
 
-Although cl-yag **may** ship with a **minimalistic** template, cl-yag
-focuses only on generating html- and gopher-compliant structural
-markup - not themed layouts.
+Although cl-yag may ship with a minimalistic template, cl-yag focuses
+on generating html- and gopher-compliant structural markup - not
+themed layouts.
 
 If you want some deeply refined, cross-browser compatible, responsive,
-webscale style-sheet, you need to create it yourself.  
-However, cl-yag will work nicely with it and if you want to make your
+webscale style sheets, you need to create them yourself.  However,
+cl-yag will work nicely with them and if you want to make your
 stylesheets a part of cl-yag you're very welcome to contact me.
 
 
@@ -275,4 +273,4 @@ If you want to contribute, feel free to contact me and/or to send in a patch.
 - If you are looking for a way to contribute:
     - You could find a way to "sanitize" cl-yag's behaviour regarding the tilde (see: above);
     - Also see: 'Note' in 'Posting Without Tagging';
-	- Also see: 'A Note On Themes.
+	- Also see: 'A Note On Themes'.
diff --git a/data/README.md b/data/README.md
index a54a176..2c1c3a7 100644
--- a/data/README.md
+++ b/data/README.md
@@ -1,9 +1,9 @@
-# README
+o# README
 
 
 ## Introduction
 
-cl-yag is a very lightweight, static site generator that produces **gopher** sites as well as **html** websites.  
+cl-yag is a lightweight, static-site generator that produces **gopher** sites as well as **html** websites.  
 The name 'cl-yag' stands for 'Common Lisp - Yet Another website Generator'.  
 It runs without Quicklisp.
 
@@ -21,20 +21,16 @@ gopher-space](gopher://dataswamp.org/1/~solene/).
 To use cl-yag you'll need:
 
 1. A Common Lisp Interpreter
-    - cl-yag's current default is **Steel Bank Common Lisp (SBCL)**.
-    - **Embeddable Common Lisp (ECL)** will do fine as well.
+    - cl-yag's current default is [Steel Bank Common Lisp (SBCL)](http://www.sbcl.org/).
+    - [Embeddable Common Lisp (ECL)](https://common-lisp.net/project/ecl/) will do fine as well.
 2. A Markdown-to-HTML Converter
-    - cl-yag's current default is **multimarkdown**.
-3. BSD Make
-    - Linux-Users, cl-yag uses a BSD Makefile syntax, that isn't compatible with GNU make's.
-    - You need to install a port of the NetBSD make tool, called **bmake**.
+    - cl-yag's current default is [multimarkdown](http://fletcherpenney.net/multimarkdown/).
 
 
 ## Usage
 
-Go into your project's directory and type ``make``. You'll find your new website/gopher page in 'output/'.  
-If you want to get rid of everything in your 'output/' subdirectories,
-type ``make clean``.  
+Go into your project's directory and type ``make``. You'll find your new website/gopher page in **output/**.  
+If you want to get rid of everything in your **output/** subdirectories, type ``make clean``.  
 For further commands: read the Makefile.  
 Read in the follwing section where to find it.
 
@@ -73,25 +69,25 @@ least the following files and folders:
     - This is cl-yag's core library.
 - **static/**
     - This directory holds content, that needs to be published without being changed (e.g. stylesheets, js-scripts).
-	- If you come from 'non-static CMS'-Country: 'static/' holds, what you would put in your 'assets/' directory.
+	- If you come from 'non-static CMS'-Country: **static/** holds, what you would put in your **assets/** directory.
 - **templates/**
     - The templates in this directory provide the structural skeleton(s) of the webpages and feeds you want to create.
 - **output/**
     - cl-yag puts in this directory everything ready to get deployed.
-	- Because cl-yag generates not only HTML, but gopher-compliant pages as well, output/ **holds two subdirectories**.
-		- **gopher/** : contains the website for gopher,
-		- **html/** : contains the website in HTML.
+	- Because cl-yag generates not only HTML, but gopher-compliant pages as well, **output/** **holds two subdirectories**.
+		- **gopher/** contains the website for gopher,
+		- **html/** contains the website in HTML.
 
 And there is the **data/** directory, which is important enough to get a subsubsection of its own.
 
-### The 'data/' Directory
+### The data/ Directory
 
 This directory is crucial for the usage of cl-yag.
 
 **data/** contains
 
-- the **articles.lisp configuration file**, which defines important metadata for posts and pages.
-- It also holds **${id}.md**-files, which are holding your posts' and pages' content. You can use markdown to write them.
+- the **articles.lisp** configuration file, which defines important metadata for posts and pages.
+- It also holds **${id}.md** files, which are holding your posts' (or pages') content. You can use markdown to write them.
 
 For more information: Read section 'Configuration'.
 
@@ -99,25 +95,25 @@ For more information: Read section 'Configuration'.
 ## Configuration
 
 cl-yag's main configuration file is **data/articles.lisp**.  
-In order to have a reliably running implementation of cl-yag, you have
+In order to have a running implementation of cl-yag, you have
 to set most of the values in this file.
 
 **data/articles.lisp** has two parts:
 
-1. A variable called **config**. It defines global values, that define your webpage.
-2. A variable called **articles**. It defines local values, that - in turn - define individual pages/posts.
+1. A variable called *config*. Its values define your webpage.
+2. A variable called *articles*. Its values define your posts.
 
-Values are assigned by placing a string (e.g. "foo") or a boolean
-(i.e. 't' or 'nil') behind a keyword (e.g. ':title').
+Values are assigned by placing a string (e.g. ``"foo"``) or a boolean
+(i.e. ``t`` or ``nil``) behind a keyword (e.g. ``:title``).
 
 
-### The **config** Variable
+### The *config* Variable
 
-The **config** variable is used to assign the following values:
+The *config* variable is used to assign the following values:
 
 - **:webmaster**
     - The name of the default(!) author. 
-	- :webmaster gets used, if **:author** is omitted. (see below: 'The **articles** variable'.)
+	- ``:webmaster`` gets used, if ``:author`` is omitted. (See below: 'The **articles** variable'.)
 - **:title**
     - The title of the webpage
 - **:description**
@@ -125,45 +121,49 @@ The **config** variable is used to assign the following values:
 - **:url**
     - This needs to be the full(!) URL of your website, including(!) a final slash.
 	- MIND: If the url contains a tilde (~), it needs to get duplicated
-	- Example: https://mydomain/~~user/ is a valid url.
+	- Example: ``https://mydomain/~~user/``
 - **:rss-item-number**
     - This holds the number of latest(!) RSS items you want to get published when you generate the files.
 - **html**
-    - *t* to export html website. Set *nil* to disable.
+    - ``t`` to export html website. Set ``nil`` to disable.
 - **gopher**
-    - *t* to export gopher website. Set *nil* to disable.
+    - ``t`` to export gopher website. Set ``nil`` to disable.
 - **gopher-path**
     - This is the full path of the directory to access your gopher hole.
 - **gopher-server**
-    - Hostname of the gopher server. Because gopher doesn't allow relative links (like html), you need to know where you put your files.
+    - Hostname of the gopher server. It needs to be included in every link.
 - **gopher-port**
-    - tcp port of the gopher server. 70 is the default port. It need to be included in every link (see: **gopher-server**).
+    - tcp port of the gopher server. 70 is the default port. It needs to be included in every link.
 
 
-### The **articles** Variable
+### The *articles* Variable
 
-The **articles** variable holds per page/post-metadata.  
-Of the following fields, only the *:author* and *:short* description can be omitted.
+The *articles* variable holds post metadata.  
+So you need to create an entry in the *articles* variable for each of your posts.
 
-- **:short**
-	- The _:short_ field's value is used for displaying a really short description of the posts content on your homepage.
-	- If _:short_ doesn't get a value, the full article gets displayed.
-	- Hint: Use ``:short "view the article for the full text"``, if you don't want to display the full text of an article on your index site.
+Of the following keywords, only ``:author`` and ``:short`` can be omitted.
+
+- **:author**
+    - The ``:author`` field is used to display the article's author.
+    - If you omit it, the generator will take the name from the ``:webmaster`` field of the *config* variable.
 - **:id**
-    - The _:id_ field holds the filename of your post/page. 
-	- Example: ``:id "2"`` will load file ``data/2.md``. Use text instead of numbers, if you want to.
+    - The ``:id`` field holds the filename of your post/page.
+	- Example: ``:id "2"`` will load file **data/2.md**. Use text instead of numbers, if you want to.
 	- (See section: 'The **data/** Directory'.)
-- **:author**
-    - The _:author_ field is used to display the article' author.
-    -  If you omit it, the generator will take the name from the **:webmaster** field of the *config* variable.
+- **:short**
+	- The ``:short`` field's value is used for displaying a really short description of the posts content on your homepage.
+	- If ``:short`` doesn't get a value, the full article gets displayed.
+	- Hint: Use ``:short "view the article for the full text"``, if you don't want to display the full text of an article on your index site.
 - **:tag**
-    - _:tag_ field is used to create a "view" containing all articles of the same tag.
-	-  MIND: Whitespaces are not allowed in(!) tags.
+    - ``:tag`` field is used to create a "view" containing all articles of the same tag.
+	-  MIND: Whitespaces are used to separate tags and are not allowed in(!) tags.
+- **:title**
+	- The ``:title`` field's value sets your post's title, its first headline, as well as its entry on the index.html.
 
 
 ## Howto Create A New Post
  
-Edit data/articles.lisp and add a new list to the *articles* variable:
+Edit **data/articles.lisp** and add a new list to the *articles* variable:
 
     (list :title "How do I use cl-yag" 
 		  :id "2"
@@ -172,30 +172,30 @@ Edit data/articles.lisp and add a new list to the *articles* variable:
 		  :short "I will explain how to use the generator" 
 		  :tag "example help code")
 
-Then write a corresponding ``2.md`` file, using markdown.
+Then write a corresponding **data/2.md** file, using markdown.
+
 
 ## Howto Publish A Post
 
 I prepared a Makefile to facilitate the process of generating and
-publishing your static sites.
-
+publishing your static sites.  
 All you need to do in order to publish is to go into your cl-yag
-directory and type "make".
+directory and type ``make``.
 
-The 'make' command does create html and gopher files in the defined
-**output/** location (which can be a symbolic link pointing to some
-other directory, somewhere else on your machine).
+The make command creates html and gopher files in the defined location.  
+The default is the **output/** directory, but you can use a symbolic link
+pointing to some other directory as well.
 
 
 ## Howto Add A New Page
 
 You may want to have some dedicated pages besides the index or a post.  
-To create one, edit the **generate-site** function in cl-yag's
-generator.lisp and add a function call, like this:
+To create one, edit the *generate-site* function in cl-yag's
+**generator.lisp** and add a function call, like this:
 
     (generate "somepage.html" (load-file "data/mypage.html"))
   
-This will produce the file **somepage.html** in the output folder.
+This will produce **output/html/somepage.html**.
 
 
 ## Further Customization
@@ -204,66 +204,64 @@ This will produce the file **somepage.html** in the output folder.
 
 cl-yags default Lisp interpreter is **sbcl**.  
 If you want to use a different lisp interpreter you need to set the
-variable 'LISP' to the name of your binary, when calling ``make``.
+variable *LISP* to the name of your binary, when calling ``make``:
 
-	`make LISP=ecl`
+    make LISP=ecl
 
 
 ### Using git Hooks For Publishing
 
 You may customize your publishing-process further, e.g. by using a git
-hook to call 'make' after each change in the repo so your website gets
-updated automatically.
+hook to call the make program after each change in the repo so your
+website gets updated automatically.
 
 
 ## Page-Includes
 
 Here is an example code, if you want to include another page in the template:
 
-1. Create **template/panel.tpl** with the html you want to include.
-2. Add a string in the target file, where the replacement should occur.  
-   In this case, we choose **%%Panel%%** for a string, and, because we want the panel to be displayed on each page, we add this string to **template/layout.tpl**.
+1. Create **templates/panel.tpl** containing the html you want to include.
+2. Add a replacement-string in the target file, where the replacement should occur.  
+   In this case, we choose **%%Panel%%** for a string, and, because we want the panel to be displayed on each page, we add this string to **templates/layout.tpl**.
 
 3. Modify the function *generate-layout* in cl-yag's **generator.lisp** accordingly.  
    This is done by adding the following template function call:
 
-		"**(template "%%Panel%%" (load-file "template/panel.tpl"))**" 
-
-(Note: You can insert your text directly into the layout template file
-as well.)
+		(template "%%Panel%%" (load-file "templates/panel.tpl"))
 
+Another valid approach is to writer your html directly into **templates/layout.tpl**.
 
 ## Known Limitations
 
 ### Use ~~ To Create ~
 
-cl-yag crashes if you use a single "**~**" caracter inside one data
-structure in **articles.lisp** files, because Common Lisp employs the
-tilde as a prefix to indicate format specifiers in format strings.
+cl-yag crashes if you use a single "~" character inside
+**templates/articles.lisp**, because Common Lisp employs the tilde as a
+prefix to indicate format specifiers in format strings.
 
-In order to use a literal `~` - e.g. for creating a :title or :url
-reference - you have to **escape** the tilde **by duplicating** it:
-``~~``.  
-(See _:url_ in section 'Configuration').
+In order to use a literal `~` -- e.g. for creating a ``:title`` or
+``:url`` reference -- you have to *escape* the tilde *by
+duplicating* it: ``~~``.  (See ``:url`` in section 'Configuration').
 
 
 ### Posting Without Tagging
 
-cl-yag allows posts to be 'untagged'- but with the default template
-you'll get a line below your title that displays: "Tags: ".
+cl-yag allows posts without tags, but, using the default
+**templates/layout.tpl**, you'll get a line below your title that
+displays: "Tags: ".
 
 (Note: If you are looking for a way to contribute this may be a task for you.)
 
 
 ### A Note On Themes
 
-Although cl-yag **may** ship with a **minimalistic** template, cl-yag
-focuses only on generating html- and gopher-compliant structural
-markup - not themed layouts.
+Although cl-yag may ship with a minimalistic template, cl-yag focuses
+on generating html- and gopher-compliant structural markup - not
+themed layouts.
 
 If you want some deeply refined, cross-browser compatible, responsive,
-webscale style-sheet, you need to create it yourself.  
-However, cl-yag will work nicely with it and if you want to make your
+webscale style sheets, you need to create them yourself.  However,
+cl-yag will work nicely with them and if you want to make your
 stylesheets a part of cl-yag you're very welcome to contact me.
 
 
@@ -275,4 +273,4 @@ If you want to contribute, feel free to contact me and/or to send in a patch.
 - If you are looking for a way to contribute:
     - You could find a way to "sanitize" cl-yag's behaviour regarding the tilde (see: above);
     - Also see: 'Note' in 'Posting Without Tagging';
-	- Also see: 'A Note On Themes.
+	- Also see: 'A Note On Themes'.