Block Level Markup Rules

All block level rules must start at the beginning of the line. Note that if a line ends with a backslash (\), the next line will be considered part of it. All block-level rules are applied before any inline rules are considered.

<html> ... </html>
Raw html block. Note that the start and end tags must be on their own lines.
<pre> ... </pre>
Preformatted block. Start and end tags must be on their own lines.
start a new div with class="name". div blocks may be nested.
end the matching div block.
start a new div with id="name". div blocks may be nested.
end the matching div block.
+ Header 1
make a header

Header 1

++ Header 2
make a smaller header (up to ++++++)

Header 2

horizontal rule

include the contents of the main page (useful for templates)
$include Page_name
include the contents of the given page
* list item
create a bulleted list
  • list item
** sublist
create a sublist
  • list item
    • sublist
# numbered item
created a numbered list
  1. numbered item
## numbered subitem
create a numbered sublist
  1. numbered item
    1. numbered subitem
#*# any combo
list types can be mixed and nested
  1. numbered item
    • bulleted subitem
      1. any combo
      2. second subsubitem
; term : definition
definition list item (like this list). Note the space after the semicolon and the spaces surrounding the colon.
preformatted text
***** With a leading space
*   * I can include preformatted text
*   * with interior     spaces and stuff
***** like that.
| table | newcell |
create a table
|| second row |
repeat the | to span multiple columns
second row
start a centered paragraph


start a right flush paragraph

right flush

start a left flush paragraph
start a justified paragraph
start a normal paragraph. This is handy if you ever need to start a paragraph with a character that would otherwise be interpreted as markup. For example, "= = blah..." would let you start a paragraph with an equal sign.
blah blah blah
text implicitly starts a paragraph
(blank line)
a blank line marks the end of the current paragraph.

Inline Markup Rules

All inline rules must start and end on the same line. Note that ending a line with a backslash (\) will cause it to be joined with the next line.

include the marked text literally
The title of the current page: Markup Rules
[[[created format]]]
The date and time the current page was created. If format is omitted it looks like this: Sunday, September 25, 2005, and if it's included you can specify the format using the rules listed here. So [[[created r]]] gives r.
[[[modified format]]]
The date and time the current page was last modified. Formatting is the same as for [[[created]]].
[[[edit link text]]]
If the user is logged in, this will create a link to edit the current page, otherwise it does nothing.
[{image file} [[wiki link]] alt text]
Display an image. When clicked, it will lead to the given wiki link page. Note: if you give a full URL or a path starting with / for the image, it will be used as-is. Otherwise, the image is assumed to be relative to a directory called pics/.
[{image file} [url link] alt text]
Display an image. When clicked, it will lead to the given page.
[{image file} {image link} alt text]
Display an image. When clicked, it will lead to the given image.
[{image file} alt text]
Display an image with optional alt text.
[[wiki link] description]
Link to the page Wiki_link, with "description" as the link text.
[[wiki link]]
Link to the page Wiki_link, with "wiki link" as the link text.
[url description]
Link to the given URL with "description" as the link text.
Link to the given URL with the URL as the link text.
URLs listed in the text will be automatically linked, like ← this one.
'''''emphasize strongly'''''
usually bold and italics
usually bold
usually italics
bold face
underlined Note: this uses a span with class 'underline', so it depends on the stylesheet to work.
monospaced typewriter font
<tt> ... </tt>
monospaced typewriter font
<small> ... </small>
small text
<strike> ... </strike>
strike out text Note: this uses a span with class 'strike', so it depends on the stylesheet to work.
force a
line break
<footag> ... </footag>
create a span with class="footag". The stylesheet can specify formatting for spans, making it easy to define custom text styles. Different spans can be nested, but the first matching close tag is always matched to the first open tag, so <foo><foo>some text</foo></foo> will be interpreted as <span class="foo"><foo>some text</span></foo>.
displayed using &ndash;, good for ranges like 5–6.
displayed using &mdash;, good for in-text dashes—like this—which are distinct from hyphens.
1/4, 1/2, 3/4
fractions are displayed as 14, 23, 510, etc. If the fraction is preceded by a number and a space, the space will be deleted, as in 1 1/2 → 112.
html escaping
Unmatched <html> looking tags & ampersands will be escaped and displayed, but entities like &rarr; will be interpretted (→ in this case). Note that matching tags not explicitly listed here will be interpreted as span tags.

Image galleries

To create a gallery of images, first divide the images into groups. Setting your file browser to show thumbnails makes this easy enough. Drag & drop groups of images into folders.

Scaling images and making thumbnails

Next you need to scale the images to an appropriate size and make thumbnails. I use the ImageMagick package to do most of the work. Here are the commands I use to shrink images and to create thumbnails (after creating directories called small and thumbs in each image directory):

  • convert $x -resize 512x512 -quality 80 +profile "*" small/$x
  • convert $x -resize 200x64 -quality 90 +profile "*" thumbs/$x

When I need to rotate the images at the same time, I use:

  • convert $x -rotate 90 -resize 512x512 -quality 80 +profile "*" small/$x
  • convert $x -rotate 90 -resize 200x64 -quality 90 +profile "*" thumbs/$x

These settings yield a nice tradeoff between file size and quality, and the thumbnails are all the same height (which looks good on the page). Using bash you can process a whole directory using:

mkdir small thumbs
for x in *.jpg ; do
  echo $x
  convert $x -resize 512x512 -quality 80 +profile "*" small/$x
  convert $x -resize 200x64 -quality 90 +profile "*" thumbs/$x

To convert a PDF file, use:

gs -sDEVICE=pngmono -sOutputFile=$x.png -r600x600 $x.pdf

The directory hierarchy should look something like this:


Note that images in the large/ directory are optional. If present, the corresponding small images will link to them. The other groupings are described in more detail below.

Creating the gallery index

Upload the images and then create a page as you normally would, but add ::Index to the end, as in MyPictures::Index. Pages with this kind of name are given special treatment. The file should follow this format:

picdir (the subdirectory containing these images)
    <-- (a blank line)
groupdir1: Title of the first group of images with indexing
    <-- (blank line between groups)
(groupdir2:) Title of the second group of images with no indexing
    <-- (blank line)
: Title of third group with indexing
    <-- (blank line)
Title of fourth group with no indexing

A main index page will be created with the a few thumbnails from each group and a link to the group index page. If you want to specify the thumbnails to be displayed on the main index page, put a * in front of each one (as in picb.jpg above). Otherwise, the first few images will be selected by default.

If there are only a few images in a group, the main index will take you directly to the images. Otherwise, titles starting with groupdir: or : will be split into smaller groups and the main index will link to a group index page with thumbnails for all of that group's images.

If the title isn't preceeded by groupdir:, all images in that group must be in small/ and thumbs/ subdirectories under the picdir directory. No secondary index page will be created in this case unless you preceed the title with a : as in the third group above. When there is no index, the group will still be split into multiple groups but the thumbnails will all appear on the main index page. To force this behavior when the images are in a subdirectory, enclose the directory name and colon in parentheses as in the second group above.

Any time a group is split, the pages will be given suffixes like "part I", "part II", etc.

Any time you request to edit a page in the image group, you will be taken to the ::Index page (since all other pages are generated). Similarly, whenever you take any action on a page in the group, the entire group will be affected. If you view a page, all pages will be generated (and cached if appropriate). If you delete a page, the entire group will be deleted, etc. Generally this is the expected behavior, but it can mean slow page loads if you are working with a large image set. Note that once the group has been rendered and cached, it will still be as fast as normal, so the slow loads only show up when you are editing pages or you do a refresh.


Captions are optional for individual pictures and for groups of pictures. Group captions appear above the (first) group of thumbnails on the main index page, and captions for individual pictures appear above that picture. Captions can also appear at the top and/or bottom of the main index page.

Captions are indented with one or more spaces on the lines following the image file name or the group name. Multiple line captions are okay, they are processed just like any other markup; the only difference is that all leading spaces are removed. You can optionally start each line with a '|' character, in which case any spaces following the '|' will be left in (this lets you include preformatted blocks that are marked with a single leading space).