-
Notifications
You must be signed in to change notification settings - Fork 0
16 PracticalSeries Wiki conventions
In this Wiki, I’ve tried to explain (in some detail) how GitHub Wikis work and how Markdown and HTML can be used and abused to format the pages into something like and acceptable document format.
This section goes one step further. In this section I go through all the conventions I use to create the PracticalSeries Wiki pages. Obviously, the content is determined by whatever the Wiki pages are documenting, but the format and appearance is consistent across all the PracticalSeries Wiki page.
All of the conventions used within the PracticalSeries Wiki pages are given as examples in on the template page of the Wiki, here: Appendix E Template
All PracticalSeries Wiki pages have a standard arrangement, the following shows the typical arrangement (it’s a slightly abridged page to get everything in):
![]() |
Figure 16.1 — A typical PracticalSeries page |
---|
All PracticalSeries Wiki pages have these areas:
❶ Title area | This is generated by GitHub and cannot be reconfigured; the only configurable item is the page name |
❷ Heading area | The heading area contains a logo picture and a WebID badge that shows the chapter and section number of the page (along with a revision code) |
❸ Main body area | This is the main body text area, it contains headings, text, tables, images, links &c as required |
❹ Footer | The footers all have an identical format: a navigation bar (different for each page), copyright information, common links to the top of page, email and the PracticalSeries website and a location badge showing the chapter and section number of the footer |
❺ Sidebar |
The sidebars all have an identical format: a title (Wiki contents) and a location badge showing the chapter and section number of the sidebar. Followed by a navigation bar (different for each page) and a table of contents. The last part of the sidebar is a link to the bottom of the page. |
List 16.1 — PracticalSeries Wiki page areas |
---|
The following sections discuss each of these areas in turn and list the various objects and elements contained within each area of the page.
Section 3 gave details of how to structure a Wiki folder arrangement and the naming conventions used to name files within the structure.
This section shows a practical implementation of that folder structure in relation to this Wiki.
The folder structure is shown below (split into two columns):
![]() |
Figure 16.2 — The folder structure for this Wiki |
---|
Examining the contents of the root folder (on the GitHub website, the link to the root folder is: https://github.com/practicalseries/GitHub-Wiki-Design-and-Implementation/wiki/).
The unexpanded contents of the root folder are:
![]() |
Figure 16.3 — The root folder |
---|
Here we can see multiple folders organised int chapter, section and division numbers in the format:
Where
There are also four files:
File | Function |
---|---|
_footer.md |
The footer Markdown file for the Home page |
_sidebar.md |
The sidebar Markdown file for the Home page |
Home.md |
The Home page Markdown file |
ps-github-wiki_log.svg |
The logo image (shown in the heading area of each page) |
The GitHub logo file is the logo at the top of each page:
|
Figure 16.4 — The logo image |
---|
If the Home page needs to display any images (other than the logo), then these are contained in the folder:
The folder
Similarly, if the Home page has any data files (it does, the pdf version of this document), then these files are contained in the folder:
The PracticalSeries Wikis usually have one or more leading pages, they pretty much all have a licence page and during the development stages of the Wiki I include a “CaseNotes” page that contains a brief list of observations and points for current and upcoming items within the Wiki (a sort of aide-memoire of things I need to do).
All these leading pages live in the
![]() |
Figure 16.5 — The 00-0000 folder |
---|
Note
All the leading pages (in this case CaseNotes.md
and Licence.md
) share the same sidebar and footer, this is possible because these leading pages are usually outside the normal next chapter/previous chapter navigation hierarchy.
The wi-
(indicating Wiki image). Any images required by the Home page or any of the leading pages would also be stored in this folder (these would begin figm-
).
Most folders in the structure have a .gitkeep
file, this is a text file with the following contents:
Text |
---|
|
# /* PRACTICALSERIES (c) 2021
#
# *******************************************************************************
# Title : FOLDER PLACEHOLDER .GITKEEP
# *******************************************************************************
#
# PRACTICALSERIES: Practical Series of Publications by Michael Gledhill
# Published in the United Kingdom
#
# Email: [email protected]
# Web: www.practicalseries.com
#
# -------------------------------------------------------------------------------
# DETAILS
#
# This is an empty placeholder file.
#
# The Git and GitHub version control system will always ignore empty folders and
# will exclude them from the version control repository.
#
# With website development it is important to maintain the correct folder
# structure and the inclusion of empty folders within that structure is
# necessary.
#
# The purpose of this file is to force Git and GitHub to include folders that
# would otherwise be empty and thus not included in the repository.
#
# There is a somewhat unofficial convention within the Git community that
# such files are called .gitkeep.
#
# -------------------------------------------------------------------------------
#
#
# MODIFICATION HISTORY:
#
# This is a complete summary of all software modifications.
#
# Date Issue Author Reason for Modification
# -------------------------------------------------------------------------------
# 07 Feb 2020 001.000 M. Gledhill First release (all files updated)
# -------------------------------------------------------------------------------
|
Table 16.1 — .gitkeep file contents |
By default Git (and by extension, GitHub) ignores any empty folder in a folder structure. An empty folder cannot be added to a repository (and since Wikis are also repositories, the too cannot have empty folders).
The .gitkeep
file is a small text file that can be copied into an empty folder, forcing that folder to be added to the repository (or Wiki).
The name .gitkeep
is a longstanding tradition amongst Git users for such a place holder file.
Every chapter has its own folder, these are always numbered:
Where
For example the chapter
These can be seen below:
![]() |
Figure 16.6 — The 11-0000 folder |
---|
Expanding the folder shows all the images (5 of them, I’ve abbreviated the list for conciseness) stored in the 11-0000/02-image
folder. The 11-0000/04-data
folder is empty (apart from the.gitkeep
file).
There is the 11 Images.md
file and the _sidebar
and _footer
files for the page.
For the main chapter page (in the form cc-0000
, i.e. no section number), the .md
file name always has the form:
Where Images
— the full filename being 11 Images.md
.
The chapter filename should always start with a two-digit number followed by a space character. The
The above all deal with pages that start at a new chapter. It is possible (for long chapters) that the chapter is broken into more than one page. In the PracticalSeries Wikis, such breaks always occur at a new section (never at a new division).
Where new pages start at a section, that section has its own folder, these are always numbered:
Where
For example the chapter 11 Images
is split into two sections with the split occurring at section 11.5 (the first part is covered in the previous section, it is stored in folder 11-0000
). The second part (and its images and data) is stored in folder:
![]() |
Figure 16.7 — The section folder |
---|
Expanding the folder shows all the images (4 of them, I’ve abbreviated the list for conciseness) stored in the 11-0500/02-image
folder. The 11-0500/04-data
folder is empty (apart from the.gitkeep file).
The file name starts with the chapter and section number of the starting section (11.05
in this case), but the text remains that of the main chapter (Images
in this case), the whole thing being 11.05 Images.md
.
The page title area is entirely generated by GitHub, it looks like this:
![]() |
Figure 16.8 — The title area of a page |
---|
The main thing about the title page is the title itself, point 1; This is in a 32 pt Segoe UI font (with a reduced weight, 400 not the usual 600).
The title displayed here is the name of the .md
file for the page without the extension. In this case, the page file is 02 Cloning a Wiki.md
and the page title is thus
The filename is the only thing we have control over in the title area.
The point in the above diagram are as follows:
❶ Title |
TThe page .md filename without the extension |
❷ User | Username of the last person to modify the page |
❸ Modification date | The date of the last modification |
❹ Revisions |
The number of revisions made to the page Clicking will navigate to the modification history |
❺ Buttons | Edit and New page buttons (only visible if modification privileges have been granted) |
List 16.2 — Title area components |
---|
The page heading area has the same format for every page in the PracticalSeries Wikis, there are both visible and unseen elements to the heading area:
![]() |
Figure 16.9 — The heading area of a page |
---|
Point 1 is the logo for the Wiki (this is the same image on every page). This is the file:
ps-github-wiki_log.svg
Stored in the root folder of the Wiki.
Point 2 is a Web ID badge that shows the chapter and section number of the page and an encoded date that shows when the page was posted to GitHub.
The Markdown behind the heading area is:
Markdown and GitHub output |
---|
|
<a name="idtop"></a>
<img width="896px" src="./ps-github-wiki-logo.svg" alt="PAL Logo">
<p align="right"><img height="18" src="https://img.shields.io/badge/Web_ID-0200--djy-blue"></p>
|
|
|
Table 16.2 — Standard_Markdown_HTML_Output_table |
The first line <a name="idtop"></a>
is the top of page marker
This is followed by the Logo image <img width="896px" src="./ps-github-wiki-logo.svg" alt="PAL Logo">
and finally, the Web ID badge <p align="right"><img height="18" src="https://img.shields.io/badge/Web_ID-0200--djy-blue"></p>
Examining each in turn:
The top of page marker is named anchor element that is used to identify the top of the page and allow navigation back to it (navigation to named elements was covered in section 9.5)
This top of page marker is completely invisible and does not render on the page (it is essentially a named anchor point, but the anchor point itself is empty, there is no text or href attribute). The Markdown for this is:
Markdown |
---|
|
<a name="idtop"></a>
|
Table 16.3 — Top of page marker |
Every page in the PracticalSeries Wikis uses idtop
as the name of the element at the top of the page.
This is the point navigated to by the links at the end of each section:
The Markdown behind the link is as follows:
Markdown and GitHub output |
---|
|
**[:arrow_up: Top](#idtop)**
<HR>
<br>
|
|
|
Table 16.4 — Top of page navigation link |
The :arrow_up:
is the emoji ⬆. The link is #idtop
, this is the same name used in the top of page anchor name attribute preceded with a hash #
. The link should be preceded with a blank line, the <hr>
provides the horizontal line separating the sections and the <br>
at the end give the correct spacing to the following text, there should be a further blank line between the last <br>
and the next heading.
The logo image is the first visible element on each Wiki page. It is just a straight forward image (see section 11.2.1):
Markdown and GitHub output |
---|
|
<img width="896px" src="./ps-github-wiki-logo.svg" alt="PAL Logo">
|
|
|
Table 16.5 — Logo image Markdown |
It is an HTML image link <img>
tag that displays the image ps-github-wiki-logo.svg that is stored in the Wiki root folder (hence the ./
, current directory, that precedes the filename in the link, see section 9.8).
The first part width="896"
sets the image to be the full width of the page.
The alt
text is simply a textual description of what the image shows.
The Web ID is a right aligned Shields.IO badge (see section 15.2):
The Markdown is:
Markdown and GitHub output |
---|
|
<p align="right"><img height="18" src="https://img.shields.io/badge/Web_ID-0200--djy-blue"></p>
|
|
|
Table 16.6 — Web ID badge |
The Web ID badge is a Shields.IO static badge, the badge image is contained in a
<p align="right">
tag, this forces the badge to appear on the right-hand edge of the page.
The badge itself is within an <img>
tag that sets the image height to 18 px (slightly smaller than the 20 px default). The badge label is Web_ID
(the underscore appears as a space, see section 15.2), the badge text is 0200--djy
(the double dash is the escape code for a dash, section 15.2). Finally, the badge text background is set to the default blue colour.
The Web ID badge text 0200--djy
is in two parts: first a four-digit number, this contains the chapter and section number in the form ccss
(section number is 00 for the start of a chapter).
The second part is three alphabetical characters djy
in this case. This is an encoded version of the date the page was posted to GitHub.
Note
This encoded date is just for me, it would be perfectly possible to just use the modification date in the title area, but I wanted something that I had direct control over — it allows me to break the rules when I want to.
The characters are in the form XYZ
and are alphabetical (Roman) characters with the following meanings:
Character | Meaning | Encoding |
---|---|---|
X |
The year | a=2021, b=2022 … &c. |
Y |
The month | a=January, b=February … &c. |
Z |
The day | a=1, b=2, …, z=26, A=27, … E=31 |
Thus djy
is the date 25th October 2024.
|
|
|
|
|
The PracticalSeries of Publications — Copyright © 2025 Michael Gledhill
⬆️ Top | [email protected] | PracticalSeries of Publications | Main repository
|
|
|
|
|
Licence
The licences and other details
The Licence
Why did I choose the MIT Licence?
Permissive licences
Copyleft licence
Limiting liabilities
Which licence to use?
A note on spelling: licence or license
1 Introducing the GitHub Wiki
1.1 What are GitHub Wiki pages?
1.2 Understanding the Wiki pages
1.3 Creating a Wiki for a repository
1.3.1 Creating the first Wiki page
1.3.2 Creating additional pages
1.3.3 Editing a Wiki page
1.4 The Wiki is its own repository
1.4.1 Viewing a Wiki page history
1.4.2 How GitHub handles Wiki branche
1.4.3 The Wiki link to the main repository
1.5 Basic components of a Wiki page
1.5.1 Title bar and revision
1.5.2 Contents (pages) area
Listing pages in the order you want
1.5.3 Sidebars
1.5.4 Footers
1.6 Sidebars and footers
1.6.1 Creating a sidebar and footer
2 Cloning a Wiki
2.1 Why clone a Wiki?
2.2 How to clone a Wiki
2.3 Pushing local changes to GitHub
2.3.1 Configuring username and email
2.3.2 Modifying the local repository
2.3.3 Committing and synchronising
3 A Wiki folder structure
3.1 The default arrangement
3.2 Create a sidebar or footer locally
3.3 Page naming and Wiki limits
3.3.1 Supported file types
3.3.2 Page names and numbering
3.3.3 Rules for page numbering
3.3.4 Limits for Wiki pages
3.4 A Practical Wiki folder structure
3.4.1 Subfolder names for Wiki pages
3.4.2 Storing images and other data
4 Different sidebars and footers
4.1 How sidebars work
4.1.1 The PracticalSeries sidebar
4.2 How footers work
4.2.1 The PracticalSeries footer
5 Markdown, GitHub Markdown and HTML
5.1 Some useful Markdown sites
5.2 An overview of Markdown
5.3 How Markdown works
5.4 Markdown flavours
5.4.1 GitHub Flavoured Markdown (GFM)
5.5 HTML and Markdown
5.5.1 HTML with GFM
GFM blacklisted HTML tags
GFM whitelisted HTML tags
GFM HTML tags - the grey area
GFM whitelisted HTML attributes
5.5.2 PracticalSeries and Markdown
5.6 Markdown difference between files
6 Basic Markdown and text formatting
6.1 Body text and fonts
6.1.1 Body text responsive design
6.1.2 Body text in sidebars and footers
6.1.3 Rules for body text
6.1.4 Body text examples
6.1.5 Alignment of Body text
Left aligned text (default)
Right aligned text
Centred text
Justified text
6.1.6 Body text propertie
6.2 Paragraphs and line breaks
6.2.1 Forced line break
6.2.2 Blank line and a line break
6.2.3 Trailing space line break
6.2.4 Paragraph and line break rules
6.2.5 Paragraph and line break examples
6.3 Horizontal line
6.3.1 Rules for horizontal lines
6.4 Emphasis with bold
6.4.1 Rules for bold
6.4.2 Bold text examples
6.5 Emphasis with italics
6.5.1 Rules for italics
6.5.2 Italic text examples
6.6 Emphasis with bold and italics
6.6.1 Rules for bold and italics
6.6.2 Bold and italic text examples
6.7 Emphasis with underlining
6.7.1 Rules for underlining
6.7.2 Underlining text examples
6.8 Emphasis with strikethrough
6.8.1 Rules for strikethrough
6.8.2 Strikethrough text examples
6.9 Superscript and subscript
6.9.1 Rules for superscript and subscript
6.9.2 Superscript and subscript examples
6.10 Headings
Alternatives for heading 1 and 2
6.10.1 Headings Markdown rules
6.10.2 Heading properties
7 Special characters and escaping characters
7.1 Escape characters and codes
7.1.1 Markdown escape sequences
7.1.2 HTML escape sequences
7.1.3 Decimal and hexadecimal codes
Hexadecimal escape codes
7.2 Special space characters
7.2.1 Escape sequence restrictions
7.3 Emojis and emoticons
A note by the Author about emojis
7.4 Comments
8 Block quotes, lists and alerts
8.1 Block quotes
8.1.1 Nested block quotes
8.1.2 Adding other elements
8.1.3 Rules for block quotes
8.2 Unordered (unnumbered) lists
8.2.1 Nested unordered lists
8.2.2 Type of bullet point
8.2.3 Indents and spacing
8.2.4 Numbers in an unordered list
8.2.5 Adding paragraphs
8.2.6 Adding other elements
8.2.7 Rules for unordered lists
8.3 Ordered (numbered) lists
8.3.1 Starting at a different number
8.3.2 Nested ordered lists
8.3.3 Type of numbering
8.3.4 Indents and spacing
8.3.5 Adding paragraphs
8.3.6 Adding other elements
8.3.7 Rules for ordered lists
8.4 Mixing ordered and unordered lists
8.5 Task lists (check boxes)
8.5.1 Nested task lists
8.6 Alerts
8.6.1 Rules for alerts
9 Links
9.1 Link to an external web page
9.1.1 A direct link to a URL
9.1.2 A link using substitute text
9.1.3 A link using tooltips
9.2 Link to another page in the Wiki
9.2.1 Rules for linking to a Wiki page
9.3 Link to headings on current page
9.3.1 Converting a heading to a link
9.3.2 An example of a heading link
9.3.3 Heading link with tooltips
9.4 Link to headings on a different page
9.4.1 An example of a heading link
9.5 Link to a named element
A note by the Author
9.5.1 Link to a point on another page
9.6 Downloading a file
9.6.1 The download attribute
9.6.2 Spaces in filenames
9.6.3 Downloading a .md file
9.7 Reference style links
9.8 Relative links
9.8.1 Relative links from any Wiki page
10 Tables
10.1 Markdown tables
10.1.1 Horizontal alignment
10.1.2 Table construction
10.1.3 Vertical line breaks and alignment
10.1.4 Making columns wider
10.1.5 Other elements in a table
10.1.6 Markdown table restrictions
10.2 HTML tables
10.2.1 A basic HTML table
10.2.2 Aligning a table on a page
10.2.3 Text wrap and side-by-side tables
What this means in practice
The problem with the align attribute
How to stop text wrapping
10.2.4 Setting the width of a table column
10.2.5 Setting the height of a table row
10.2.6 Horizontal alignment
10.2.7 Vertical alignment
10.2.8 Spanning columns and rows
10.2.9 Table border
10.2.10 Giving a table a navigable name
10.2.11 Additional HTML tags
11 Images
11.1 Markdown images
11.1.1 Image size in Markdown
11.1.2 Making the image a link
11.1.3 Drag and drop image link
A note by the Author
11.2 HTML images
11.2.1 A basic HTML image
11.2.2 Image size in HTML
11.2.3 Horizontal alignment
11.2.4 Making the image a link
11.2.5 Using a table to contain an image
11.3 Forcing an image refresh
11.4 Using a spacer image
11.5 Mermaid diagrams
11.5.1 Inserting a Mermaid diagram
11.5.2 The rendered Mermaid diagram
11.5.3 Supported version of Mermaid
11.6 Interactive maps
11.7 3D models
12 Contents (collapsible) and footnotes
12.1 A basic table of contents
12.2 Understanding the space characters
12.3 Collapsible content
12.3.1 Defaulting to open
12.3.2 Markdown restrictions
12.4 Collapsible TOC
12.5 TOCs in tables
12.6 Footnotes
13 Code fragments
13.1 Inline code
13.2 Code blocks
13.2.1 Preferred mechanism
13.3 Syntax highlighting
13.3.1 Supported languages
13.4 HTML code fragments
13.4.1 Converting HTML to code
14 Mathematical formulae
14.1 An overview of LaTex
14.2 Inserting an inline formula
14.2.1 Alternative delimiter
14.3 A formula block
14.4 Some example formulae
14.5 LaTeX syntax
14.5.1 Greek lowercase
14.5.2 Greek uppercase and Hebrew
14.5.3 Mathematical constructions
14.5.4 Variable sized delimiters
14.5.5 Variable sized symbols
14.5.6 Variable sized symbols with limits
14.5.7 Standard functions
14.5.8 Operators and relational symbols
14.5.9 Arrows
14.5.10 Other symbols
14.5.11 Accents
14.5.12 Matrices
14.5.13 Cases
Aligning multiple equations
14.5.14 Text formatting
Font size
Font colour
The text command
Font restrictions
14.6 Abusing LaTeX
14.6.1 Changing font colour with LaTeX
15 Navigation bars, badges and buttons
15.1 Navigation bars
15.1.1 Navigation bar practicalities
15.2 Badges
15.2.1 Creating a badge
15.2.2 Static badge options
15.2.3 Dynamic badges
15.3 Buttons
16 PracticalSeries Wiki conventions
16.1 The PracticalSeries Wiki page
16.2 The PracticalSeries folder structure
16.2.1 The root folder and home page
16.2.2 Leading pages
16.2.3 .gitkeep files
16.2.4 Folder and Markdown file names
Wiki pages that start at a section
16.3 The page title area
16.4 The page heading area
16.4.1 Top of page marker
16.4.2 Logo image
16.4.3 Web ID badge
16.5 Main body area
16.5.1 Common page elements
End of page marker
End of section elements
16.5.2 Headings
Compensating for number widths
Appendices headings
16.5.3 Tables
Links to a table
A note on Markdown tables
16.5.4 Images
Images that open in a new tab
Double images
Links to a figure
16.5.5 Lists
Common points for all lists
Basic unordered list
Basic ordered list
Mixed ordered and unordered lists
Enhanced mixed lists
Index list
Reverse index list
Index list with text wrap
Reverse index list with text wrap
Indexed, mixed list
Reverse indexed, mixed list
Task list
Enhanced task list with observations
16.5.6 Code fragments
16.5.7 Formulae
Standard formulae
Alternate formulae
16.6 Sidebar
16.6.1 sidebar files and locations
16.6.2 Sidebar title and location badge
16.6.3 Navigation bar
16.6.4 Table of contents
Unnumbered, non-collapsible TOC
Unnumbered, collapsible TOC
Single digit, collapsible TOC
Double digit, collapsible TOC
TOCs for appendices
16.6.5 End of page link
16.7 Footer
16.7.1 Footer files and locations
16.7.2 Location badge
16.7.3 Navigation bar
16.7.4 Colophon
16.7.5 Links and contacts
17 Managing a Wiki
17.1 Revision control
17.1.1 Managing commits
17.2 Finding the first Wiki commit
17.3 Rebasing the Wiki
17.3.1 Summarising the rebase process
17.3.2 Executing the rebase process
17.4 Wikis and search engine visibility
Appendices
B Full list of all emoji characters
B.1 Emojis, a brief explanation
B.1.1 Emoji short names
B.1.2 Emoji escape codes
B.1.3 Emoji variations
B.1.4 Emoji numbers
B.2 Emojis characters by category
Smileys and emotion
People and body
Component
Animals and nature
Food and drink
Travel and places
Activities
Objects
Symbols
Flags
B.3 Emoji characters by Unicode
C Segoe UI full character set
A note by the Author
C.1 Inserting Unicode characters
C.2 Characters U+00000 to U+00FFF
C.3 Characters U+01000 to U+01FFF
C.4 Characters U+02000 to U+02FFF
C.5 Characters U+03000 to U+09FFF
C.6 Characters U+0A000 to U+0AFFF
C.7 Characters U+0B000 to U+0FFFF
C.8 Characters U+10000 to U+10FFF
C.9 Characters U+11000 to U+11FFF
C.10 Characters U+12000 to U+12FFF
C.11 Characters U+13000 to U+15FFF
C.12 Characters U+16000 to U+1CFFF
C.13 Characters U+1D000 to U+1EFFF
C.14 Characters U+1F000 to U+3FFFF
⬇️ End of page |