# Syntax origin Nothing on [[syntax|the syntax page]] is one language. Four independent parsers contribute to this wiki, and knowing which one owns a construct is usually what explains its quirks. When two of them claim the same characters, DokuWiki connects syntax modes in ascending `getSort()` order and **the first match wins**. That single rule decides every collision listed below. ## DokuWiki core Everything here is stock, in `inc/Parsing/ParserMode/`. ^ Syntax ^ Mode ^ Sort ^ | ''%%====== Heading ======%%'' | Header | 50 | | ''%%//italic//%%'', ''%%__underline__%%'', ''%%''mono''%%'' | Formatting | 80–100 | | ''%%%%'', ''%%%%'', ''%%%%'' | Formatting | 110–130 | | ''%%((footnote))%%'' | Footnote | 150 | | ''%%[[page]]%%'', ''%%[[wp>page]]%%'' | Internallink | 300 | | bare URLs | Externallink | 330 | | ''%%%%'' | Emaillink | 340 | | ''%%\\server\share%%'' | Windowssharelink | 350 | | ''%% * item%%'' (two-space bullet) | Listblock | 10 | | ''%%^%%'' / ''%%|%%'' tables | Table | 60 | | ''%%%%'', ''%%%%'' | Code, File | 200, 210 | | two-space indent | Preformatted | 20 | | ''%%%%''…''%%%%'', ''%%%%'' | Unformatted | 170 | | ''%%\\%%'' plus a space | Linebreak | 140 | | ''%%{{media.png}}%%'' | Media | 320 | | ''%%{{rss>url}}%%'' | Rss | 310 | | ''%%~~NOTOC~~%%'', ''%%~~NOCACHE~~%%'' | Notoc, Nocache | 30, 40 | | smileys | Smiley + ''conf/smileys.conf'' | 230 | | ''%%->%%'', ''%%(c)%%'', ''%%...%%'' | Entity + ''conf/entities.conf'' | 260 | | ''%%640x480%%'' | Multiplyentity | 270 | | curly quotes | Quotes | 280 | So `((...))` is DokuWiki's own footnote syntax, not a Markdown import. Markdown has no footnotes here at all, and `[^1]` does nothing. ## markdowku `lib/plugins/markdowku/syntax/` holds 26 components adding what DokuWiki lacks. ^ Syntax ^ Component ^ Sort ^ | ''%%# Heading%%'' | headeratx | 49 | | Setext headings | headersetext | 49 | | ''%%*italic*%%'', ''%%_italic_%%'' | italicasterisk, italicunderline | 79 | | ''%%`code`%%'' | codespans1–5 | 95–99 | | fenced ''%%```%%'' blocks | githubcodeblocks | 91 | | ''%%[text](url)%%'' | anchorsinline | 102 | | ''%%![alt](url)%%'' | imagesinline | 101 | | ''%%%%'' | autolinks | 102 | | ''%%* item%%'' | ulists | 9 | | ''%%1. item%%'' | olists | 9 | | ''%%> quote%%'' | blockquotes | 219 | | ''%%***%%'', ''%%___%%'' | hr | 8 | | two trailing spaces | linebreak | 139 | | ''%%\*%%'', ''%%\_%%'' escapes | escapespecialchars | 61 | Three collisions are decided here, all of them invisible until they bite: - **''%%**bold**%%''** is claimed by markdowku's `boldasterisk` (69) one step ahead of core Formatting's `strong` (70). Same output, so nobody notices. - **''%%> quote%%''** is claimed by `blockquotes` (219) ahead of core `Quote` (220), which is why quotes here join lines without a space and refuse to nest. - **''%%- item%%''** is claimed by `ulists` (9) ahead of core `Listblock` (10), which is why DokuWiki's ordered-list dash renders as a bullet. `references` and `anchorsreference` exist too, but reference-style links never resolve, hence the gotcha above. ## katex In `lib/plugins/katex/`, `syntax/protect.php` (sort 65) only *protects* math from the wiki parser; `script.js` does the rendering in the browser. ^ Syntax ^ Handled by ^ | ''%%$x$%%'', ''%%$$x$$%%'' | protect.php, then KaTeX client-side | | ''%%\NN%%''…''%%\CC%%'' | macros in ''conf/local.php'' | At sort 65 it shadows markdowku's own `mathinline` (90) and `mathblock` (89), which never run. That is deliberate: the dollar signs must reach the browser untouched. ## texrender `lib/plugins/texrender/` runs LaTeX server-side and inlines the SVG. ^ Syntax ^ Component ^ Sort ^ | ''%%\documentclass{standalone}%%'' … | figure.php | 88 | | ''%%\tikz ... ;%%'' and ''%%\tikz{...}%%'' | inline.php | 89 | ## Local core patches Not plugins, but modifications to DokuWiki itself, tracked in this installation's git repo. ^ Behaviour ^ Where ^ | gold links to ''%%(WIP)%%'' pages | ''inc/parser/xhtml.php'' | | pages stored as ''.md'' | ''inc/init.php'' (''DOKU_EXT'') | | WIP pages split out on the sitemap | ''inc/Ui/Index.php'' | | ''math'', ''eqn'', ''latex_figure'' renderer methods | ''inc/parser/xhtml.php'', ''inc/parser/renderer.php'' | ## See also - [[syntax|Wiki syntax]] - [[list-of-syntaxes|List of syntaxes]]