格式化语法

DokuWiki 支持一些简单的标记语言,它试图让数据文件尽可能可读。本页包含编辑页面时可能使用的所有语法。只需按“编辑此页”查看本页源代码。如果你想尝试,请使用 游乐场 页面。更简单的标记也可以通过 快捷按钮 轻松访问。

基本文本格式

DokuWiki 支持 粗体、斜体、下划线 和 等宽 文本。当然,你可以 组合 所有这些。

DokuWiki 支持 **粗体**、//斜体//、__下划线__ 和 ''等宽'' 文本。
当然,你可以 **__//''组合''//__** 所有这些。

注意格式标记必须直接包围文本,因此 ** 粗体 ** 标记内有空格将不会被格式化。

你也可以使用 下标 和 上标。

你也可以使用 <sub>下标</sub> 和 <sup>上标</sup>。

你也可以将某些内容标记为 删除。

你也可以将某些内容标记为 <del>删除</del>。

段落由空行创建。如果你想强制换行而不产生段落,可以使用两个反斜杠,后跟空白或行尾。

这是一些带有换行的文本
注意,
两个反斜杠仅在行尾才被识别

或后跟
一个空白 \没有空白时不会生效。

这是一些带有换行的文本\\ 注意,
两个反斜杠仅在行尾才被识别\\
或后跟\\ 一个空白 \\没有空白时不会生效。

只有在确实需要时才应使用强制换行。

链接

DokuWiki 支持多种创建链接的方式。

外部链接

外部链接会被自动识别:http://www.google.com 或直接 www.google.com - 你也可以设置链接文本:此链接指向 google。像这样的电子邮件地址:andi@splitbrain.org 也会被识别。

DokuWiki 支持多种创建链接的方式。外部链接会被自动识别:
http://www.google.com 或直接 www.google.com - 你也可以设置
链接文本:[[http://www.google.com|此链接指向 google]]。像这样的电子邮件
地址:<andi@splitbrain.org> 也会被识别。

内部链接

内部链接通过方括号创建。你可以只给出 pagename,或使用额外的 链接文本。

内部链接通过方括号创建。你可以只给出
[[pagename]],或使用额外的 [[pagename|链接文本]]。

Wiki 页面名会自动转换为小写,不允许特殊字符。

你可以在页面名中使用冒号来使用 namespaces。

你可以在页面名中使用冒号来使用 [[some:namespaces]]。

有关命名空间的详细信息,请参见 namespaces。

也可以链接到特定章节。只需像 HTML 中那样,在井号后添加章节名。这会链接到 此章节。

这会链接到 [[syntax#internal|此章节]]。

注意:

  • 指向 现有页面 的链接与 nonexisting 的链接显示样式不同。
  • DokuWiki 默认不使用 CamelCase 自动创建链接,但可以在 config 文件中启用此行为。提示:如果 DokuWiki 是一个链接,则表示已启用。
  • 当章节标题更改时,其书签也会更改。所以不要过度依赖章节链接。

跨 Wiki 链接

DokuWiki 支持 Interwiki 链接。这些是指向其他 Wiki 的快捷链接。例如,这是指向 Wikipedia 上关于 Wiki 的页面的链接:Wiki。

DokuWiki 支持 [[doku>Interwiki]] 链接。这些是指向其他 Wiki 的快捷链接。
例如,这是指向 Wikipedia 上关于 Wiki 的页面的链接:[[wp>Wiki]]。

Windows 共享

像 这个 这样的 Windows 共享也会被识别。请注意,这些仅在同类用户组(如公司 Intranet)中才有意义。

像 [[\\server\share|这个]] 这样的 Windows 共享也会被识别。

注意:

  • 出于安全原因,默认情况下,直接浏览 Windows 共享仅在 Microsoft Internet Explorer 中有效(且仅在“本地区域”中)。
  • 对于 Mozilla 和 Firefox,可以通过 Mozilla 知识库 中提到的不同变通方法启用。但是,仍会出现关于尝试打开 Windows 共享的 JavaScript 警告。要删除此警告(对所有用户),请将以下行放入 conf/lang/en/lang.php(更多详情见 本地化):
    conf/lang/en/lang.php
    <?php
    /**
     * 英语语言文件的自定义
     * 仅复制需要修改的字符串
     */
    $lang['js']['nosmblinks'] = '';

图像链接

你也可以通过组合链接语法和 图像(见下文)语法,使用图像链接到另一个内部或外部页面,如下所示:

[[http://php.net|{{wiki:dokuwiki-128.png}}]]

请注意:图像格式是链接名称中唯一接受的格式语法。

支持整个 图像 和 链接 语法(包括图像调整大小、内部和外部图像以及 URL 和跨 Wiki 链接)。

脚注

你可以通过使用双圆括号添加脚注 1)。

你可以通过使用双圆括号添加脚注 ((这是一个脚注))。

分节

你可以使用最多五个不同级别的标题来组织内容。如果你有超过三个标题,会自动生成目录 – 可以通过在文档中包含字符串 ~~NOTOC~~ 来禁用。

标题级别 3

标题级别 4

标题级别 5
==== 标题级别 3 ====
=== 标题级别 4 ===
== 标题级别 5 ==

通过使用四个或更多短横线,可以创建水平线:


媒体文件

你可以使用花括号包含外部和内部 图像、视频和音频文件。可选地,你可以指定它们的大小。

实际大小:

调整到给定宽度:

调整到给定宽度和高度2):

调整外部图像大小:

实际大小:                        {{wiki:dokuwiki-128.png}}
调整到给定宽度:            {{wiki:dokuwiki-128.png?50}}
调整到给定宽度和高度: {{wiki:dokuwiki-128.png?200x50}}
调整外部图像大小:           {{https://www.php.net/images/php.gif?200x50}}

通过使用左侧或右侧空白,你可以选择对齐方式。

{{ wiki:dokuwiki-128.png}}
{{wiki:dokuwiki-128.png }}
{{ wiki:dokuwiki-128.png }}

你也可以使用 ?left、?right 或 ?center 参数显式设置对齐方式。这优先于上面的空白对齐,并且可以与大小组合使用。

{{wiki:dokuwiki-128.png?100&right}}

当然,你也可以添加标题(大多数浏览器会将其显示为工具提示)。

这是标题

{{ wiki:dokuwiki-128.png |这是标题}}

关于将图像链接到另一个页面,请参见上面的 图像链接。

支持的媒体格式

DokuWiki 可以直接嵌入以下媒体格式。

图像 gif、jpg、png
视频 webm、ogv、mp4
音频 ogg、mp3、wav
Flash swf

如果你指定的文件名不是支持的媒体格式,它将以链接形式显示。

通过添加 ?linkonly,你提供指向媒体的链接而不内联显示

{{wiki:dokuwiki-128.png?linkonly}}

dokuwiki-128.png 这只是一个指向图像的链接。

回退格式

不幸的是,并非所有浏览器都理解所有视频和音频格式。为了缓解这个问题,你可以上传不同格式的文件以获得最大的浏览器兼容性。

例如,考虑这个嵌入的 mp4 视频:

{{video.mp4|一个有趣的视频}}

当你上传 video.webm 和 video.ogv 到引用的 video.mp4 旁边时,DokuWiki 会自动将它们添加为备选,以便你的浏览器能理解这三个文件之一。

此外,DokuWiki 支持“海报”图像,它会在视频开始前显示。该图像需要与视频具有相同文件名,并且是 jpg 或 png 文件。在上面的示例中,video.jpg 文件就可以。

列表

DokuWiki 支持有序和无序列表。要创建列表项,请将文本缩进两个空格,并对无序列表使用 *,对有序列表使用 -。

  • 这是一个列表
  • 第二项
    • 你可以有不同的层级
  • 另一项
  1. 同样的列表但有序
  2. 另一项
    1. 只需使用缩进表示更深层级
  3. 就这样
  * 这是一个列表
  * 第二项
    * 你可以有不同的层级
  * 另一项

  - 同样的列表但有序
  - 另一项
    - 只需使用缩进表示更深层级
  - 就这样

另请查看 关于列表项的 FAQ。

文本转换

DokuWiki 可以将某些预定义字符或字符串转换为图像或其他文本或 HTML。

文本到图像的转换主要用于表情符号。文本到 HTML 的转换用于排版替换,但也可以配置为使用其他 HTML。

文本到图像转换

DokuWiki 将常用的 表情符号 转换为其图形等价物。这些 Smileys 和其他图像可以配置和扩展。以下是 DokuWiki 中包含的表情符号概览:

  • 8-) 8-)
  • 8-O 8-O
  • :-( :-(
  • :-) :-)
  • =) =)
  • :-/ :-/
  • :-\ :-\
  • :-? :-?
  • :-D :-D
  • :-P :-P
  • :-O :-O
  • :-X :-X
  • :-| :-|
  • ;-) ;-)
  • ^_^ ^_^
  • m( m(
  • :?: :?:
  • :!: :!:
  • LOL LOL
  • FIXME FIXME
  • DELETEME DELETEME

文本到 HTML 转换

排版:DokuWiki 可以将简单文本字符转换为其排版正确的实体。以下是可识别字符的示例。

→ ← ↔ ⇒ ⇐ ⇔ » « – — 640×480 © ™ ®
“他想到 '这是男人的世界'…”

-> <- <-> => <= <=> >> << -- --- 640x480 (c) (tm) (r)
"他想到 '这是男人的世界'..."

同样可以用于生成任何类型的 HTML,只需将其添加到 模式文件。

有三个例外不是来自该模式文件:乘法实体(640×480)、'单引号' 和 “双引号”。它们可以通过 配置选项 关闭。

引用

有时你想标记一些文本以显示它是回复或评论。你可以使用以下语法:

我认为我们应该做

> 不,我们不应该

>> 好吧,我说我们应该

> 真的吗?

>> 是的!

>>> 那就做吧!

我认为我们应该做

不,我们不应该
好吧,我说我们应该
真的吗?
是的!
那就做吧!

表格

DokuWiki 支持简单的语法来创建表格。

标题 1 标题 2 标题 3
行 1 列 1 行 1 列 2 行 1 列 3
行 2 列 1 一些列合并(注意双竖线)
行 3 列 1 行 3 列 2 行 3 列 3

表格行必须以 |(普通行)或 ^(标题)开头和结尾。

^ 标题 1      ^ 标题 2       ^ 标题 3          ^
| 行 1 列 1    | 行 1 列 2     | 行 1 列 3        |
| 行 2 列 1    | 一些列合并(注意双竖线) ||
| 行 3 列 1    | 行 3 列 2     | 行 3 列 3        |

要水平连接单元格,只需将下一个单元格完全留空,如上所示。确保始终有相同数量的单元格分隔符!

垂直表头也是可能的。

标题 1 标题 2
标题 3 行 1 列 2 行 1 列 3
标题 4 这次没有列合并
标题 5 行 2 列 2 行 2 列 3

如你所见,决定格式的是单元格之前的分隔符:

|              ^ 标题 1            ^ 标题 2          ^
^ 标题 3    | 行 1 列 2          | 行 1 列 3        |
^ 标题 4    | 这次没有列合并 |                    |
^ 标题 5    | 行 2 列 2          | 行 2 列 3        |

你可以通过将 ::: 添加到应连接单元格下方的单元格中来实现行合并(垂直连接单元格)。

标题 1 标题 2 标题 3
行 1 列 1 此单元格垂直跨越 行 1 列 3
行 2 列 1 行 2 列 3
行 3 列 1 行 2 列 3

除了行合并语法外,这些单元格不应包含任何其他内容。

^ 标题 1      ^ 标题 2                  ^ 标题 3          ^
| 行 1 列 1    | 此单元格垂直跨越 | 行 1 列 3        |
| 行 2 列 1    | :::                        | 行 2 列 3        |
| 行 3 列 1    | :::                        | 行 2 列 3        |

你也可以对齐表格内容。只需在文本相反的一端添加至少两个空格:左侧添加两个空格为右对齐,右侧添加两个空格为左对齐,两端至少各添加两个空格为居中对齐。

对齐表格
右 居中 左
左 右 居中
xxxxxxxxxxxx xxxxxxxxxxxx xxxxxxxxxxxx

这是它在源代码中的样子:

^           对齐表格           ^^^
|         右|    居中    |左          |
|左          |         右|    居中    |
| xxxxxxxxxxxx | xxxxxxxxxxxx | xxxxxxxxxxxx |

注意:不支持垂直对齐。

不格式化

如果你需要完全按输入显示文本(不进行任何格式化),请用 <nowiki> 标签包围该区域,或者更简单,用双百分号 %%。

这是一些包含如下地址的文本:http://www.splitbrain.org 和 **格式化**,但不会对它做任何处理。
//__这个__ 文本// 中的笑脸 ;-) 也是如此。

<nowiki>
这是一些包含如下地址的文本:http://www.splitbrain.org 和 **格式化**,但不会对它做任何处理。
</nowiki>
%%//__这个__ 文本// 中的笑脸 ;-)%% 也是如此。

代码块

你可以通过至少缩进两个空格(如前面示例所用)或使用标签 <code> 或 <file> 将代码块包含到文档中。

这是缩进两个空格的文本。
这是预格式化代码,所有空格都被保留:像              <-这样
这几乎相同,但你可以用它来表示你引用了一个文件。

这些块由以下源代码创建:

  这是缩进两个空格的文本。
<code>
这是预格式化代码,所有空格都被保留:像              <-这样
</code>
<file>
这几乎相同,但你可以用它来表示你引用了一个文件。
</file>

语法高亮

DokuWiki 可以高亮源代码,使其更易读。它使用 GeSHi 通用语法高亮器 – 因此支持 GeSHi 支持的任何语言。语法使用与上一节相同的代码和文件块,但这次要高亮的语言语法名称包含在标签内,例如 <code java> 或 <file java>。

/**
 * HelloWorldApp 类实现了一个应用程序,
 * 它只是向标准输出显示 "Hello World!"。
 */
class HelloWorldApp {
    public static void main(String[] args) {
        System.out.println("Hello World!"); //显示字符串。
    }
}

当前识别以下语言字符串:4cs 6502acme 6502kickass 6502tasm 68000devpac abap actionscript3 actionscript ada aimms algol68 apache applescript apt_sources arm asm asp asymptote autoconf autohotkey autoit avisynth awk bascomavr bash basic4gl batch bf biblatex bibtex blitzbasic bnf boo caddcl cadlisp ceylon cfdg cfm chaiscript chapel cil c_loadrunner clojure c_mac cmake cobol coffeescript c cpp cpp-qt cpp-winapi csharp css cuesheet c_winapi dart dcl dcpu16 dcs delphi diff div dos dot d ecmascript eiffel email epc e erlang euphoria ezt f1 falcon fo fortran freebasic freeswitch fsharp gambas gdb genero genie gettext glsl gml gnuplot go groovy gwbasic haskell haxe hicest hq9plus html html4strict html5 icon idl ini inno intercal io ispfpanel java5 java javascript jcl j jquery julia kixtart klonec klonecpp kotlin latex lb ldif lisp llvm locobasic logtalk lolcode lotusformulas lotusscript lscript lsl2 lua m68k magiksf make mapbasic mathematica matlab mercury metapost mirc mk-61 mmix modula2 modula3 mpasm mxml mysql nagios netrexx newlisp nginx nimrod nsis oberon2 objc objeck ocaml-brief ocaml octave oobas oorexx oracle11 oracle8 oxygene oz parasail parigp pascal pcre perl6 perl per pf phix php-brief php pic16 pike pixelbender pli plsql postgresql postscript povray powerbuilder powershell proftpd progress prolog properties providex purebasic pycon pys60 python qbasic qml q racket rails rbs rebol reg rexx robots roff rpmspec rsplus ruby rust sas sass scala scheme scilab scl sdlbasic smalltalk smarty spark sparql sql sshconfig standardml stonescript swift systemverilog tclegg tcl teraterm texgraph text thinbasic tsql twig typoscript unicon upc urbi uscript vala vbnet vb vbscript vedit verilog vhdl vim visualfoxpro visualprolog whitespace whois winbatch wolfram xbasic xml xojo xorg_conf xpp yaml z80 zxbasic

还有额外的 高级选项 可用于语法高亮,例如高亮行或添加行号。

可下载代码块

当你像上面那样使用 <code> 或 <file> 语法时,你可能还想让显示的代码可供下载。你可以通过在语言代码后指定文件名来做到这一点,如下所示:

<file php myexample.php>
<?php echo "hello world!"; ?>
</file>
myexample.php
<?php echo "hello world!"; ?>

如果你不想要任何高亮但想要可下载文件,请指定短横线(-)作为语言代码:<code - myfile.foo>。

RSS/ATOM 源聚合

DokuWiki 可以集成来自外部 XML 源的数据。为了解析 XML 源,使用了 SimplePie。SimplePie 理解的所有格式也可以在 DokuWiki 中使用。你可以通过多个以空格分隔的附加参数影响渲染:

参数 描述
任意数字 将用作要显示的最大项目数,默认为 8
reverse 先显示源中的最后项目
author 显示项目作者姓名
date 显示项目日期
description 显示项目描述。所有 HTML 标签将被剥离
nosort 不对源中的项目排序
n[dhm] 刷新周期,其中 d=天,h=小时,m=分钟。(例如 12h = 12 小时)。

刷新周期默认为 4 小时。任何低于 10 分钟的值将被视为 10 分钟。DokuWiki 通常尝试提供页面的缓存版本,显然当页面包含动态外部内容时这不合适。该参数告诉 DokuWiki 如果自上次渲染以来超过 刷新周期,则重新渲染页面。

默认情况下,源将按日期排序,最新项目在前。你可以使用 reverse 参数按最旧优先排序,或使用 nosort 按原样显示源。

示例:

{{rss>http://slashdot.org/index.rss 5 author date 1h }}

控制宏

某些语法会影响 DokuWiki 如何渲染页面,而自身不产生任何输出。以下控制宏可用:

宏 描述
~~NOTOC~~ 如果页面上找到此宏,则不会创建目录
~~NOCACHE~~ DokuWiki 默认缓存所有输出。有时这可能不需要(例如,当使用上面的 <php> 语法时),添加此宏将强制 DokuWiki 在每次调用时重新渲染页面

语法插件

DokuWiki 的语法可以通过 插件 扩展。已安装插件的使用方法在其相应描述页上说明。此特定 DokuWiki 安装中可用以下语法插件:

1)
这是一个脚注
2)
当给定宽度和高度的宽高比与图像不匹配时,会先裁剪为新比例再调整大小