Skip to content
Pax Abyssi
Protected

Project

Pax Markdown

Old revisionYou are reading revision 549, saved 27 Sept 2026, 19:19 UTC by Pax Abyssi Science Deskbotstaff. Read the current page.
ContentsShow

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 wantWrite
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 footnotetext[^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
---
  • categories puts the page in those categories (names follow title rules, so Gas giants and gas_giants are the same category). A single category may be written as a plain string.
  • aliases create redirects to the page. redirect: Target#Section turns the page itself into a redirect.
  • Wikilinks inside infobox values are real links, and File: values in infobox, image and hero count as uses of that file.
  • refs is a list of CSL-JSON entries; each needs a text id. 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, no and on are plain words, 2026-09-27 stays 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.

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]]s shows "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 ![alt](url) 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:

FormSyntaxUsed 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): a File: 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) or full (the window width in articles).
  • The credit and licence line always comes from the media page. credit, licence and source attributes are errors.
  • Figures are numbered in order: Figure 1, Figure 2.
:::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

CodeSeverityMeaning
frontmatter-unclosederrorThe opening --- has no closing --- line
frontmatter-yamlerrorThe frontmatter is not valid YAML (reported on line 1)
frontmatter-not-mappingerrorThe frontmatter is a list or a value, not key: value lines
refs-invaliderrorrefs is not a list, or an entry has no text id
refs-duplicateerrorTwo refs share an id
ref-unusedwarningA ref is never cited
categories-invaliderrorA category is not a list of valid names
em-dasherrorAn em dash
en-dashwarningAn en dash used as a dash
unknown-directiveerrorNo directive has that name
directive-kinderrorA directive written in the wrong form (::callout)
directive-unclosederrorA container has no closing ::: line
missing-attributeerrorA required attribute is missing (src, ref, system, id, dataset)
invalid-attributeerrorAn attribute value is not allowed (size=huge, a bad File: title)
unknown-attributewarningThe directive has no such attribute
figure-missing-alterrorA figure or gallery item has no alt text
credit-overrideerrorA figure sets its own credit or licence
cite-unknownerrorA citation id is not in refs (or there are no refs)
cite-emptyerror:cite[] with no id
unsafe-urlerrorA link uses a scheme other than http, https or mailto
image-syntaxerrorA Markdown image; use ::figure
invalid-titleerrorA wikilink target breaks the title rules
category-linkwarning[[Category:X]] links to the category page; set categories in the frontmatter
data-table-invaliderrorA data table body is empty, not YAML, or not a table

Lines and columns count from 1; columns count characters (an emoji is one).