Skip to content

11.05 Images

mgledhill edited this page Mar 14, 2025 · 46 revisions

PAL Logo showing Wiki Documentation heading

11.5SpacerMermaid diagrams

This is a bit of an odd thing and it is entirely GitHub Markdown (rather than Markdown in general).

GitHub has built in support for something called Mermaid diagrams💠1, these allow various types of flowchart and planning diagrams to be coded directly in the Markdown file.

Mermaid diagrams are quite astonishing (there’s a lot of them), they range from simple flow charts:

Markdown and GitHub output
${\large \color{#0050C0}\text{M\ A\ R\ K\ D\ O\ W\ N}}$ 🔽 ${\large \color{#B00000}\text{G\ I\ T\ H\ U\ B}\space\ \space\text{O\ U\ T\ P\ U\ T}}$ 🔽

```mermaid
flowchart TB
A[Hard] -->|Text| B(Rounded)
B --> C{Decision}
C -->|One| D([Stadium])
C -->|Two| E[(Database)]
C -->|Three| F((Circle))
```

flowchart TB
A[Hard] -->|Text| B(Rounded)
B --> C{Decision}
C -->|One| D([Stadium])
C -->|Two| E[(Database)]
C -->|Three| F((Circle))
Loading
Table 11.18 — Mermaid flowchart

To Gantt charts:

Markdown and GitHub output
${\large \color{#0050C0}\text{M\ A\ R\ K\ D\ O\ W\ N}}$ 🔽

```mermaid
gantt
    dateFormat  YYYY-MM-DD
    title       Adding GANTT diagram functionality to mermaid
    excludes    weekends
    %% (`excludes` accepts specific dates in YYYY-MM-DD format, days of the week ("sunday") or "weekends", but not the word "weekdays".)

    section A section
    Completed task            :done,    des1, 2014-01-06,2014-01-08
    Active task               :active,  des2, 2014-01-09, 3d
    Future task               :         des3, after des2, 5d
    Future task2              :         des4, after des3, 5d

    section Critical tasks
    Completed task in the critical line :crit, done, 2014-01-06,24h
    Implement parser and jison          :crit, done, after des1, 2d
    Create tests for parser             :crit, active, 3d
    Future task in critical line        :crit, 5d
    Create tests for renderer           :2d
    Add to mermaid                      :until isadded
    Functionality added                 :milestone, isadded, 2014-01-25, 0d

    section Documentation
    Describe gantt syntax               :active, a1, after des1, 3d
    Add gantt diagram to demo      :after a1  , 20h
    Add another diagram to demo    :doc1, after a1  , 48h

    section Last section
    Describe gantt syntax               :after doc1, 3d
    Add gantt diagram to demo      :20h
    Add another diagram to demo    :48h
```

${\large \color{#B00000}\text{G\ I\ T\ H\ U\ B}\space\ \space\text{O\ U\ T\ P\ U\ T}}$ 🔽
gantt
    dateFormat  YYYY-MM-DD
    title       Adding GANTT diagram functionality to mermaid
    excludes    weekends
    %% (`excludes` accepts specific dates in YYYY-MM-DD format, days of the week ("sunday") or "weekends", but not the word "weekdays".)

    section A section
    Completed task            :done,    des1, 2014-01-06,2014-01-08
    Active task               :active,  des2, 2014-01-09, 3d
    Future task               :         des3, after des2, 5d
    Future task2              :         des4, after des3, 5d

    section Critical tasks
    Completed task in the critical line :crit, done, 2014-01-06,24h
    Implement parser and jison          :crit, done, after des1, 2d
    Create tests for parser             :crit, active, 3d
    Future task in critical line        :crit, 5d
    Create tests for renderer           :2d
    Add to mermaid                      :until isadded
    Functionality added                 :milestone, isadded, 2014-01-25, 0d

    section Documentation
    Describe gantt syntax               :active, a1, after des1, 3d
    Add gantt diagram to demo      :after a1  , 20h
    Add another diagram to demo    :doc1, after a1  , 48h

    section Last section
    Describe gantt syntax               :after doc1, 3d
    Add gantt diagram to demo      :20h
    Add another diagram to demo    :48h
Loading
Table 11.19 — Mermaid Gantt chart

It can do GitHub branch diagrams:

Markdown and GitHub output
${\large \color{#0050C0}\text{M\ A\ R\ K\ D\ O\ W\ N}}$ 🔽 ${\large \color{#B00000}\text{G\ I\ T\ H\ U\ B}\space\ \space\text{O\ U\ T\ P\ U\ T}}$ 🔽

```mermaid
gitGraph
   commit
   commit
   branch develop
   checkout develop
   commit
   commit
   checkout main
   merge develop
   commit
   commit
```

gitGraph
   commit
   commit
   branch develop
   checkout develop
   commit
   commit
   checkout main
   merge develop
   commit
   commit
Loading
Table 11.20 — Mermaid Git diagram

And complicated structural C4 (context, containers, components, and code) models:

Markdown and GitHub output
${\large \color{#0050C0}\text{M\ A\ R\ K\ D\ O\ W\ N}}$ 🔽

```mermaid
C4Context
title System Context diagram for Internet Banking System

Person(customerA, "Banking Customer A", "A customer of the bank, with personal bank accounts.")
Person(customerB, "Banking Customer B")
Person_Ext(customerC, "Banking Customer C")
System(SystemAA, "Internet Banking System", "Allows customers to view information about their bank accounts, and make payments.")

Person(customerD, "Banking Customer D", "A customer of the bank, 
with personal bank accounts.") Enterprise_Boundary(b1, "BankBoundary") { SystemDb_Ext(SystemE, "Mainframe Banking System", "Stores all of the core banking information about customers, accounts, transactions, etc.") System_Boundary(b2, "BankBoundary2") { System(SystemA, "Banking System A") System(SystemB, "Banking System B", "A system of the bank, with personal bank accounts.") } System_Ext(SystemC, "E-mail system", "The internal Microsoft Exchange e-mail system.") SystemDb(SystemD, "Banking System D Database", "A system of the bank, with personal bank accounts.") Boundary(b3, "BankBoundary3", "boundary") { SystemQueue(SystemF, "Banking System F Queue", "A system of the bank, with personal bank accounts.") SystemQueue_Ext(SystemG, "Banking System G Queue", "A system of the bank, with personal bank accounts.") } } BiRel(customerA, SystemAA, "Uses") BiRel(SystemAA, SystemE, "Uses") Rel(SystemAA, SystemC, "Sends e-mails", "SMTP") Rel(SystemC, customerA, "Sends e-mails to") ```

${\large \color{#B00000}\text{G\ I\ T\ H\ U\ B}\space\ \space\text{O\ U\ T\ P\ U\ T}}$ 🔽
C4Context
title System Context diagram for Internet Banking System

Person(customerA, "Banking Customer A", "A customer of the bank, with personal bank accounts.")
Person(customerB, "Banking Customer B")
Person_Ext(customerC, "Banking Customer C")
System(SystemAA, "Internet Banking System", "Allows customers to view information about their bank accounts, and make payments.")

Person(customerD, "Banking Customer D", "A customer of the bank, <br/> with personal bank accounts.")

Enterprise_Boundary(b1, "BankBoundary") {

  SystemDb_Ext(SystemE, "Mainframe Banking System", "Stores all of the core banking information about customers, accounts, transactions, etc.")

  System_Boundary(b2, "BankBoundary2") {
    System(SystemA, "Banking System A")
    System(SystemB, "Banking System B", "A system of the bank, with personal bank accounts.")
  }

  System_Ext(SystemC, "E-mail system", "The internal Microsoft Exchange e-mail system.")
  SystemDb(SystemD, "Banking System D Database", "A system of the bank, with personal bank accounts.")

  Boundary(b3, "BankBoundary3", "boundary") {
    SystemQueue(SystemF, "Banking System F Queue", "A system of the bank, with personal bank accounts.")
    SystemQueue_Ext(SystemG, "Banking System G Queue", "A system of the bank, with personal bank accounts.")
  }
}

BiRel(customerA, SystemAA, "Uses")
BiRel(SystemAA, SystemE, "Uses")
Rel(SystemAA, SystemC, "Sends e-mails", "SMTP")
Rel(SystemC, customerA, "Sends e-mails to")

Loading
Table 11.21 — Mermaid C4 chart

In fact it supports all the following:

Sequence Diagram
Class Diagram
State Diagram
Entity Relationship Diagram
User Journey
Gantt
Pie Chart
Quadrant Chart
Requirement Diagram
Gitgraph (Git) Diagram
C4 Diagram
Mindmaps
Timeline
ZenUML
Sankey
XY Chart
Block Diagram
Packet
Kanban
Architecture
List 11.4 — List of Mermaid Diagram types

Yes, I’ve no idea what a sanky diagram or a Kanban is either.

⬆️ Top



11.5.1SpacerInserting a Mermaid diagram

Mermaid diagrams are created using a fenced code block (these are covered in detail in section 13.2). These begin with three backticks (```) followed by the word mermaid:

   ```mermaid

And end with three more backticks:

   ```

The Mermaid configuration syntax fits in between the two:

Markdown and GitHub output
${\large \color{#0050C0}\text{M\ A\ R\ K\ D\ O\ W\ N}}$ 🔽 ${\large \color{#B00000}\text{G\ I\ T\ H\ U\ B}\space\ \space\text{O\ U\ T\ P\ U\ T}}$ 🔽

```mermaid
flowchart TB
A[Hard] -->|Text| B(Rounded)
B --> C{Decision}
C -->|One| D([Stadium])
C -->|Two| E[(Database)]
C -->|Three| F((Circle))
```

flowchart TB
A[Hard] -->|Text| B(Rounded)
B --> C{Decision}
C -->|One| D([Stadium])
C -->|Two| E[(Database)]
C -->|Three| F((Circle))
Loading

The above renders as a top to bottom flow chart.

The full Mermaid language syntax is beyond the scope of this document (it isn’t that difficult to understand, just that there is a lot of it). The Mermaid site contains a full set of documentation and tutorials, it’s available here:

   https://mermaid.js.org/intro/

It’s very comprehensive.

The website looks like this:

Mermaid documentation website
Figure 11.8 — Mermaid documentation website

To find out how to render any of the diagrams highlighted, just click the link on the left and it will show the syntax, examples and all the options for that particular type of diagram (I particularly recommend trying the Sankey diagram, shown below).

sankey-beta

Agricultural 'waste',Bio-conversion,124.729
Bio-conversion,Liquid,0.597
Bio-conversion,Losses,26.862
Bio-conversion,Solid,280.322
Bio-conversion,Gas,81.144
Biofuel imports,Liquid,35
Biomass imports,Solid,35
Coal imports,Coal,11.606
Coal reserves,Coal,63.965
Coal,Solid,75.571
District heating,Industry,10.639
District heating,Heating and cooling - commercial,22.505
District heating,Heating and cooling - homes,46.184
Electricity grid,Over generation / exports,104.453
Electricity grid,Heating and cooling - homes,113.726
Electricity grid,H2 conversion,27.14
Electricity grid,Industry,342.165
Electricity grid,Road transport,37.797
Electricity grid,Agriculture,4.412
Electricity grid,Heating and cooling - commercial,40.858
Electricity grid,Losses,56.691
Electricity grid,Rail transport,7.863
Electricity grid,Lighting & appliances - commercial,90.008
Electricity grid,Lighting & appliances - homes,93.494
Gas imports,Ngas,40.719
Gas reserves,Ngas,82.233
Gas,Heating and cooling - commercial,0.129
Gas,Losses,1.401
Gas,Thermal generation,151.891
Gas,Agriculture,2.096
Gas,Industry,48.58
Geothermal,Electricity grid,7.013
H2 conversion,H2,20.897
H2 conversion,Losses,6.242
H2,Road transport,20.897
Hydro,Electricity grid,6.995
Liquid,Industry,121.066
Liquid,International shipping,128.69
Liquid,Road transport,135.835
Liquid,Domestic aviation,14.458
Liquid,International aviation,206.267
Liquid,Agriculture,3.64
Liquid,National navigation,33.218
Liquid,Rail transport,4.413
Marine algae,Bio-conversion,4.375
Ngas,Gas,122.952
Nuclear,Thermal generation,839.978
Oil imports,Oil,504.287
Oil reserves,Oil,107.703
Oil,Liquid,611.99
Other waste,Solid,56.587
Other waste,Bio-conversion,77.81
Pumped heat,Heating and cooling - homes,193.026
Pumped heat,Heating and cooling - commercial,70.672
Solar PV,Electricity grid,59.901
Solar Thermal,Heating and cooling - homes,19.263
Solar,Solar Thermal,19.263
Solar,Solar PV,59.901
Solid,Agriculture,0.882
Solid,Thermal generation,400.12
Solid,Industry,46.477
Thermal generation,Electricity grid,525.531
Thermal generation,Losses,787.129
Thermal generation,District heating,79.329
Tidal,Electricity grid,9.452
UK land based bioenergy,Bio-conversion,182.01
Wave,Electricity grid,19.013
Wind,Electricity grid,289.366
Loading

⬆️ Top



11.5.2SpacerThe rendered Mermaid diagram

The rendered diagram on the GitHub looks like this:

Mermaid documentation website
Figure 11.9 — Mermaid diagram controls

The controls (highlighted) allow the graphic to be manipulated as follows:

Symbol Function
Mermaid control button Opens the diagram in an enlarged floating window
Mermaid control button Copies the Markdown code behind the diagram
Mermaid control button Zoom in/out
Mermaid control button Scroll left, right, up or down
Mermaid control button Reset the image to its original state (size)
Table 1122 — Mermaid display controls

⬆️ Top



11.5.3SpacerSupported version of Mermaid

The version of Mermaid currently supported by GitHub can be identified by putting the following into a Markdown page:

Markdown and GitHub output
${\large \color{#0050C0}\text{M\ A\ R\ K\ D\ O\ W\ N}}$ 🔽 ${\large \color{#B00000}\text{G\ I\ T\ H\ U\ B}\space\ \space\text{O\ U\ T\ P\ U\ T}}$ 🔽

```mermaid
info
```

info
Loading

This will display the current version on the rendered page. At the time of writing, GitHub was at version 11.3.0 of Mermaid; Mermaid itself was at version 11.4.1 so GitHub is a few revisions behind (two to be exact).

The Mermaid project is actually a repository on GitHub and can be accessed here:

   https://github.com/mermaid-js/mermaid

11.6SpacerInteractive maps

GitHub supports two types of interactive maps, the first is called GeoJSON and the second TopoJSON.

I’m going to ignore TopoJSON, it’s just too difficult to understand and work with.

This is a GeoJSON map of Chester (Chester cathedral to be exact):

Markdown and GitHub output
${\large \color{#0050C0}\text{M\ A\ R\ K\ D\ O\ W\ N}}$ 🔽

```geojson
{
  "coordinates": [-2.890456668659124,53.19188063886462],
  "type": "Point"
}
```

${\large \color{#B00000}\text{G\ I\ T\ H\ U\ B}\space\ \space\text{O\ U\ T\ P\ U\ T}}$ 🔽
{
  "coordinates": [-2.890456668659124,53.19188063886462],
  "type": "Point"
}
Loading
Table 11.23 — GeoJSON map

The syntax involved in both the GeoJSON and TopoJSON applications can be complicated (the example above is deceivingly simple). The syntax for TopoJSON was impenetrable and I ran out of patience with it.

GeoJSON does have a saving grace, it has its own website with a full map of the world that you can manipulate (zoom in, zoom out, drop points, mark areas &c.) and it will automatically generate the GeoJSON code that you can paste directly into your Markdown (that’s how I got the Map of Chester).

The website is:

   https://geojson.io/

It looks like this:

Mermaid documentation website
Figure 11.10 — GeoJSON interactive map website

The area on the right contains the GeoJSON code for the current view.

Zooming into a particular area and then using the toolbar in the main area to select an area (with polygons, squares &c.) or drop points will produce code in the right-hand column.

In the following example, I’ve drawn a polygon area around Chester, the GeoJSON code for it can be seen in the right area.

Mermaid documentation website
Figure 11.11 — Cheser defined as an area

To use this in GitHub Markdown, simply copy everything in the right-hand area and paste it into the Markdown file.

The code must be preceeded with ```geojson and followed with three backticks ```.

Markdown and GitHub output
${\large \color{#0050C0}\text{M\ A\ R\ K\ D\ O\ W\ N}}$ 🔽

```geojson
{
  "type": "FeatureCollection",
  "features": [
    {
      "type": "Feature",
      "properties": {},
      "geometry": {
        "coordinates": [
          [
            [
              -2.894016844090686,
              53.22606316381487
            ],
            [
              -2.943029960491174,
              53.20339794394624
            ],
            [
              -2.9408566337193633,
              53.175461291545616
            ],
            [
              -2.8704974571575974,
              53.16529453461672
            ],
            [
              -2.8466077121183275,
              53.2009158858929
            ],
            [
              -2.894016844090686,
              53.22606316381487
            ]
          ]
        ],
        "type": "Polygon"
      }
    }
  ]
}
```

${\large \color{#B00000}\text{G\ I\ T\ H\ U\ B}\space\ \space\text{O\ U\ T\ P\ U\ T}}$ 🔽
{
  "type": "FeatureCollection",
  "features": [
    {
      "type": "Feature",
      "properties": {},
      "geometry": {
        "coordinates": [
          [
            [
              -2.894016844090686,
              53.22606316381487
            ],
            [
              -2.943029960491174,
              53.20339794394624
            ],
            [
              -2.9408566337193633,
              53.175461291545616
            ],
            [
              -2.8704974571575974,
              53.16529453461672
            ],
            [
              -2.8466077121183275,
              53.2009158858929
            ],
            [
              -2.894016844090686,
              53.22606316381487
            ]
          ]
        ],
        "type": "Polygon"
      }
    }
  ]
}
Loading
Table 11.24 — GeoJSON script copied from the website

Note

The same website can produce TopoJSON scripts too, instead of copying the code in the right window, click Save (top left) and select TopoJSON from the dropdown, it will save the code in a file for you.

Paste the contents of the file into a Markdown file, but this time precede it with: ```topojson.

⬆️ Top



11.7Spacer3D models

This, I think, is also a bit peculiar (the things GitHub want to include, we can have rotating 3D models, but we can’t change the font colour).

For whatever reason, GitHub supports the rendering of 3D models, these can be embedded into a Wiki page between ```stl and followed with three backticks ```, in a similar way to interactive maps and the Mermaid diagrams covered in the previous two sections.

The model itself is created in ASCII STL💠2 which is a format often used by 3D printers. ASCII STL is text based, but STL files can be generated as binary files (this is the more common approach). Binary STL files can be converted to ASCII STL using an online converter such as this:

   https://www.meshconvert.com/

The following is the ASCII STL for a cube:

Markdown and GitHub output
${\large \color{#0050C0}\text{M\ A\ R\ K\ D\ O\ W\ N}}$ 🔽

```stl
solid AssimpScene
 facet normal 0 0 1
  outer loop
  vertex -35 60 20
  vertex -55 60 20
  vertex -35 40 20
  endloop
 endfacet

 facet normal 0 0 1
  outer loop
  vertex -35 40 20
  vertex -55 60 20
  vertex -55 40 20
  endloop
 endfacet

 facet normal 0 0 -1
  outer loop
  vertex -35 40 0
  vertex -55 40 0
  vertex -35 60 0
  endloop
 endfacet

 facet normal 0 0 -1
  outer loop
  vertex -35 60 0
  vertex -55 40 0
  vertex -55 60 0
  endloop
 endfacet

 facet normal 0 -1 0
  outer loop
  vertex -55 40 20
  vertex -55 40 0
  vertex -35 40 20
  endloop
 endfacet

 facet normal 0 -1 0
  outer loop
  vertex -35 40 20
  vertex -55 40 0
  vertex -35 40 0
  endloop
 endfacet

	 facet normal -1 0 0
  outer loop
  vertex -55 60 20
  vertex -55 60 0
  vertex -55 40 20
  endloop
 endfacet

 facet normal -1 0 0
  outer loop
  vertex -55 40 20
  vertex -55 60 0
  vertex -55 40 0
  endloop
 endfacet

 facet normal 0 1 0
  outer loop
  vertex -35 60 20
  vertex -35 60 0
  vertex -55 60 20
  endloop
 endfacet

 facet normal 0 1 0
  outer loop
  vertex -55 60 20
  vertex -35 60 0
  vertex -55 60 0
  endloop
 endfacet

 facet normal 1 0 0
  outer loop
  vertex -35 40 20
  vertex -35 40 0
  vertex -35 60 20
  endloop
 endfacet

 facet normal 1 0 0
  outer loop
  vertex -35 60 20
  vertex -35 40 0
  vertex -35 60 0
  endloop
 endfacet

endsolid AssimpScene
```

${\large \color{#B00000}\text{G\ I\ T\ H\ U\ B}\space\ \space\text{O\ U\ T\ P\ U\ T}}$ 🔽
solid AssimpScene
 facet normal 0 0 1
  outer loop
  vertex -35 60 20
  vertex -55 60 20
  vertex -35 40 20
  endloop
 endfacet

 facet normal 0 0 1
  outer loop
  vertex -35 40 20
  vertex -55 60 20
  vertex -55 40 20
  endloop
 endfacet

 facet normal 0 0 -1
  outer loop
  vertex -35 40 0
  vertex -55 40 0
  vertex -35 60 0
  endloop
 endfacet

 facet normal 0 0 -1
  outer loop
  vertex -35 60 0
  vertex -55 40 0
  vertex -55 60 0
  endloop
 endfacet

 facet normal 0 -1 0
  outer loop
  vertex -55 40 20
  vertex -55 40 0
  vertex -35 40 20
  endloop
 endfacet

 facet normal 0 -1 0
  outer loop
  vertex -35 40 20
  vertex -55 40 0
  vertex -35 40 0
  endloop
 endfacet

	 facet normal -1 0 0
  outer loop
  vertex -55 60 20
  vertex -55 60 0
  vertex -55 40 20
  endloop
 endfacet

 facet normal -1 0 0
  outer loop
  vertex -55 40 20
  vertex -55 60 0
  vertex -55 40 0
  endloop
 endfacet

 facet normal 0 1 0
  outer loop
  vertex -35 60 20
  vertex -35 60 0
  vertex -55 60 20
  endloop
 endfacet

 facet normal 0 1 0
  outer loop
  vertex -55 60 20
  vertex -35 60 0
  vertex -55 60 0
  endloop
 endfacet

 facet normal 1 0 0
  outer loop
  vertex -35 40 20
  vertex -35 40 0
  vertex -35 60 20
  endloop
 endfacet

 facet normal 1 0 0
  outer loop
  vertex -35 60 20
  vertex -35 40 0
  vertex -35 60 0
  endloop
 endfacet

endsolid AssimpScene
Loading
Table 11.25 — ASCII STL 3D model of a cube

The cube can be re-oriented by clicking and dragging with a mouse, it will also automatically begin to rotate along the horizontal plane if left alone.

The Wireframe, Surface Angle and Solid options show the object as either its component wire frame, individual surfaces or a shaded solid.

Appendix D contains the code for a Sierpinski cube (a fractal derivation of a cube), there is a lot of it.

⬆️ Top


Footnotes:     


Note

💠1 Mermaid is a Markdown based tool developed by Knut Sveidqvist (apparently, he named it Mermaid because his children were watching The Little Mermaid when he started the project) that generates various type of diagrams: flowcharts, sequence diagrams, Gantt charts, class ar-rangements, Git branch diagrams, quadrants, pie charts &c.

Note

💠2 STL stands for STereo Lithography and is a plain text mechanism for describing (and render-ing) the surface of an object as a mesh of triangles.




Wiki contentsSpacer

Previous page Previous chapter Home Next chapter Next page
   Home

       The GitHub Wiki
       What does this guide cover?
       A note by the Author

     CaseNotes

   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
A    Unicode and HTML escape

   A.1     HTML Escape codes, full list
   A.2     Non-functional escape sequences

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

D   3D Model of a Sierpinski cube

       3D Sierpinski cube

E    Template

       COMMENT FIELDS
       HEADINGS
       TABLES
       FIGURES
       LISTS
       TASK LISTS
       CODE FRAGMENT
       FORMULAE
       LINKS
       BUTTONS
       ALERTS
       COLOURED TEXT
       INDEX NUMBERS
       END OF SECTION
       FOOTNOTE
       END OF PAGE

⬇️ End of page
Clone this wiki locally