Nothing on 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.
Everything here is stock, in inc/Parsing/ParserMode/.
| Syntax | Mode | Sort |
|---|---|---|
====== Heading ====== | Header | 50 |
//italic//, __underline__, ''mono'' | Formatting | 80–100 |
<sub>, <sup>, <del> | Formatting | 110–130 |
((footnote)) | Footnote | 150 |
[[page]], [[wp>page]] | Internallink | 300 |
| bare URLs | Externallink | 330 |
<[email protected]> | Emaillink | 340 |
\\server\share | Windowssharelink | 350 |
* item (two-space bullet) | Listblock | 10 |
^ / | tables | Table | 60 |
<code>, <file> | Code, File | 200, 210 |
| two-space indent | Preformatted | 20 |
…, <nowiki> | 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.
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 |
 | imagesinline | 101 |
<https://example.com> | 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.
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.
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 |
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 (DOKUEXT renderer methods | inc/parser/xhtml.php, inc/parser/renderer.php |