- On this page
- 3
- tables
Project
Pax Markdown
ContentsShowHide
Every wiki page, article, forum post and edit on paxabyssi.com is written in Pax Markdown: CommonMark and GitHub Flavored Markdown, with maths, a YAML frontmatter block, wikilinks and a small closed set of directives. This page is the writer's reference; the house style rules are on Pax Abyssi Wiki:Style guide.
At a glance
| You want | Write |
|---|---|
| A link to a wiki page | [[Tau Ceti]], [[Tau Ceti e|the planet]], [[Tau Ceti e#Atmosphere]], [[exoplanet]]s |
| A link elsewhere | [NASA Exoplanet Archive](https://exoplanetarchive.ipac.caltech.edu) |
| Maths | $T_\mathrm{eq}$ inline, $$ on its own lines for a display block |
| An image | ::figure{src="File:Name.avif" alt="What it shows" caption="One sentence."} |
| A grid of images | :::gallery with list items - File:Name.avif | alt text | caption |
| A boxed aside | :::callout{type=science title="Why it glows"} ... ::: |
| Hidden text | :::spoiler{title="Campaign ending"} ... ::: |
| A pull quote | :::pullquote ... ::: |
| A table of data | :::data-table{caption="..."} with a YAML body, or ::data-table{dataset=ships} |
| A live sim number | :sim{ref=ship.corvette.mass_t unit=t} |
| A citation | :cite[sudarsky2000] or :cite[sudarsky2000, burrows2001] |
| The web orrery | ::orrery{system=tau-ceti focus=e} |
| A video | ::youtube{id=dQw4w9WgXcQ title="A flyby"} |
| A footnote | text[^1] and, on its own line, [^1]: The note. |
Raw HTML is not rendered: <div> shows as the text <div>.
Frontmatter
A page starts with YAML between two --- lines. The first line of the file
must be ---.
---
title: Hot Jupiter
summary: A gas giant so close to its star that its year lasts days.
science_status: [observed, sim]
categories: [Gas giants, Planet classes]
aliases: [Hot Jupiters, Roaster]
infobox:
type: planet_class
image: File:Hot_Jupiter_sim.avif
host_star: "[[51 Pegasi]]"
sim:
entity: planet_class.GGH
refs:
- id: sudarsky2000
type: article-journal
author: [{family: Sudarsky, given: David}, {family: Burrows, given: Adam}]
title: "Albedo and Reflection Spectra of Extrasolar Giant Planets"
container-title: The Astrophysical Journal
volume: 538
page: 885-903
issued: 2000
DOI: 10.1086/309060
---
categoriesputs the page in those categories (names follow title rules, soGas giantsandgas_giantsare the same category). A single category may be written as a plain string.aliasescreate redirects to the page.redirect: Target#Sectionturns the page itself into a redirect.- Wikilinks inside
infoboxvalues are real links, andFile:values ininfobox,imageandherocount as uses of that file. refsis a list of CSL-JSON entries; each needs a textid. The site numbers them in the order you first cite them and prints the References list at the end. Do not write a References section yourself.- YAML here follows version 1.2:
yes,noandonare plain words,2026-09-27stays text, and a repeated key is an error.
Text
CommonMark with the GitHub extensions: *emphasis*, **strong**,
`code`, lists, > quotes, fenced code blocks, --- rules, tables,
task lists (- [ ] item), strikethrough with two tildes (~~gone~~),
footnotes and bare URLs that become links.
Tables need a header row and a delimiter row with at least one | or ::
| Body | a (AU) | Period (d) |
|------|-------:|-----------:|
| [[Earth]] | 1.00 | 365.26 |
Cells past the header's count are dropped. Number columns are set in mono and right-aligned automatically.
Links
Wikilinks point at wiki pages by title:
[[Tau Ceti]]links to/wiki/Tau_Ceti.[[Tau Ceti e|the planet]]shows "the planet".[[Tau Ceti e#Atmosphere]]links to a section; the anchor is the section heading as the site slugs it (#atmosphere).[[#Orbit]]links to a section of the same page.[[exoplanet]]sshows "exoplanets": lower-case letters straight after the brackets join the link text.- Namespaces:
[[Talk:Tau Ceti]],[[User:Name]],[[File:Name.avif]](the file's page),[[Pax Abyssi Wiki:Style guide]],[[Draft:...]],[[Template:...]],[[Special:RecentChanges]].[[:Category:Stars]]links to a category page;[[Category:Stars]]works too but warns, because categories are set in the frontmatter. - Titles follow MediaWiki rules: spaces and underscores are the same, the
first letter is capitalised for you, and
# < > [ ] | { }cannot appear. A link to a page that does not exist yet shows in red. - Inside a table cell, write the pipe as
\|:[[Tau Ceti\|HD 10700]]. - The link text is plain:
[[Page|*text*]]shows the asterisks.
Ordinary links use [text](url), <https://...> or a bare URL. Only
http, https and mailto links are allowed; anything else is an error
and is removed. Links off the site carry rel="nofollow ugc noopener" on
the wiki and forum.
Images written as  are not used: add the image to the
media library and use ::figure, so every image carries its credit and
licence.
Headings
## Section, ### Subsection. The page title comes from the frontmatter,
so start sections at ##. Each heading gets an anchor made the GitHub way:
lower case, punctuation removed, spaces to hyphens, a -1, -2 suffix for
repeats. ## Mass and radius becomes #mass-and-radius.
Maths
$...$ inline and a $$ fence for display maths:
The equilibrium temperature $T_\mathrm{eq}$ is
$$
T_\mathrm{eq} = T_\star \sqrt{\frac{R_\star}{2a}}\,(1 - A)^{1/4}
$$
Maths is rendered with KaTeX. Underscores and asterisks inside maths are
safe. A dollar sign starts maths, so write money as \$5.
Directives
Directives add what Markdown lacks. There are three forms:
| Form | Syntax | Used for |
|---|---|---|
| Text | :name[label]{attributes} inside a sentence | :sim, :cite |
| Leaf | ::name[label]{attributes} alone on a line | ::figure, ::data-table, ::orrery, ::youtube |
| Container | :::name[label]{attributes}, content, then a closing ::: line | :::callout, :::spoiler, :::pullquote, :::figure, :::gallery, :::data-table |
Attributes: key=value, key="value with spaces" or key='value',
separated by spaces. Values cannot contain <, >, = or a backtick unless
quoted. A leaf or container line must hold nothing after the closing }.
Nesting: a closing line closes the innermost open container with at least as many colons, so give the outer container more colons:
::::callout{type=science title="Outer"}
:::figure{src="File:Inner.avif" alt="..."}
The inner figure's caption.
:::
::::
A colon followed by a word with no brackets or braces (10:30,
File:Name.avif in prose) is plain text. An unknown directive, or a known
one in the wrong form (::callout), is an error: the editor preview shows a
red box and the published page shows nothing.
figure
::figure{src="File:Hot_Jupiter_sim.avif" size=wide alt="A gas giant glowing red on its dayside" caption="A hot Jupiter from the sim."}
:::figure{src="File:Transit.avif" alt="A light curve with a dip"}
A caption with *emphasis*, a [[Transit method|link]] and maths $\Delta F$.
:::
src(required): aFile:title from the media library.alt(required): what the image shows, for readers who cannot see it.alt=""marks a purely decorative image.caption: one or two sentences; a container body or a[label]also works and may hold links and maths. Without one, the media page's caption is used.size:normal(the text column, default),medium(a narrower inset, for portraits and discs),wide(1040 px in articles) orfull(the window width in articles).- The credit and licence line always comes from the media page.
credit,licenceandsourceattributes are errors. - Figures are numbered in order: Figure 1, Figure 2.
gallery
:::gallery{caption="Three giants from the same generator."}
- File:Ice_giant.avif | A blue ice giant with faint cloud streaks | Ice giant
- File:Green_giant.avif | A green giant with soft bands | Green giant
::figure{src="File:Ringed.avif" alt="A ringed giant at a low angle"}
:::
Each list item is File:Name | alt text | caption (alt is required). Leaf
::figure lines work too. size defaults to wide.
callout
:::callout{type=sim title="In Pax Abyssi"}
How the sim generates this, with honest status.
:::
type is note (default), warning, science, sim (shown as "In the
sim") or lore. title replaces the default label; :::callout[Title] also
works.
spoiler
:::spoiler{title="Campaign ending"} ... :::. Collapsed until the reader
opens it; works without JavaScript.
pullquote
:::pullquote{attribution="Name, role"} ... :::. At most one per 1,200
words.
data-table
Inline data, as a YAML body in a container:
:::data-table{caption="Inner planets" provenance=observed}
- {name: Mercury, mass_earth: 0.055, radius_earth: 0.383}
- {name: Venus, mass_earth: 0.815, radius_earth: 0.949}
:::
or with explicit columns (labels, units, alignment):
:::data-table{caption="Sudarsky classes" provenance=model}
columns:
- class
- {key: teq, label: Temperature, unit: K, align: right}
rows:
- [I, "< 150"]
- [II, "~250"]
:::
The body is YAML, not Markdown: # lines are YAML comments and links are
not followed. Cells are plain values.
A dataset from the current sim build, as a leaf:
::data-table{dataset=ships columns="name,mass_t,thrust_kN" where="class=corvette" sort=-mass_t limit=10}
columns picks and orders columns, where keeps rows with key=value or
key!=value (comma-separated, all must hold), sort orders by a column
(- for descending), limit caps the rows. provenance is catalogue,
sim, fiction, observed or model and prints the matching tag.
sim
:sim{ref=ship.corvette.mass_t unit=t} prints the value from the current
build, with the build in a tooltip. digits=1 fixes the decimals.
:sim[about 3,000]{ref=...} shows the label if the value is unavailable.
cite
:cite[sudarsky2000], :cite[sudarsky2000, burrows2001] (a semicolon or
@id also work). Each id must be in the frontmatter refs. Citations show
as [1] or [1, 2] and link to the References list.
orrery
::orrery{system=tau-ceti focus=e height=480} embeds the web orrery for a
system (system is the orrery's slug; height in pixels, 100 to 9999).
youtube
::youtube{id=dQw4w9WgXcQ title="A flyby" start=30}. Nothing is fetched
from YouTube until the reader presses play, and then only from
youtube-nocookie.com.
House style checks
The editor and the save checks enforce the house style:
- No em dashes, ever (U+2014). Use a hyphen, a colon, a comma pair or two sentences. Code and frontmatter are not exempt.
- An en dash (U+2013) with a space on either side is a dash in disguise and is flagged. A plain hyphen is safest everywhere.
- The copy checks also flag the stock writing tropes from the house style table: the antithesis twin (saying what a thing is not before what it is), empty intensifiers, inflated nouns and verbs, hook fragments, the reflective closer and the "if you are this or that" address.
Messages you may see
| Code | Severity | Meaning |
|---|---|---|
frontmatter-unclosed | error | The opening --- has no closing --- line |
frontmatter-yaml | error | The frontmatter is not valid YAML (reported on line 1) |
frontmatter-not-mapping | error | The frontmatter is a list or a value, not key: value lines |
refs-invalid | error | refs is not a list, or an entry has no text id |
refs-duplicate | error | Two refs share an id |
ref-unused | warning | A ref is never cited |
categories-invalid | error | A category is not a list of valid names |
em-dash | error | An em dash |
en-dash | warning | An en dash used as a dash |
unknown-directive | error | No directive has that name |
directive-kind | error | A directive written in the wrong form (::callout) |
directive-unclosed | error | A container has no closing ::: line |
missing-attribute | error | A required attribute is missing (src, ref, system, id, dataset) |
invalid-attribute | error | An attribute value is not allowed (size=huge, a bad File: title) |
unknown-attribute | warning | The directive has no such attribute |
figure-missing-alt | error | A figure or gallery item has no alt text |
credit-override | error | A figure sets its own credit or licence |
cite-unknown | error | A citation id is not in refs (or there are no refs) |
cite-empty | error | :cite[] with no id |
unsafe-url | error | A link uses a scheme other than http, https or mailto |
image-syntax | error | A Markdown image; use ::figure |
invalid-title | error | A wikilink target breaks the title rules |
category-link | warning | [[Category:X]] links to the category page; set categories in the frontmatter |
data-table-invalid | error | A data table body is empty, not YAML, or not a table |
Lines and columns count from 1; columns count characters (an emoji is one).