Содержание

Введение

DokuWiki предоставляется со своим языком разметки. Как и любой другой язык wiki-разметки, этот пытается содержать исходный текст страниц в виде наиболее читаемом для автора. Что получилось судите сами – эта страница в непринужденном виде демонстрирует все поддерживаемые движком конструкции. И нет, «чтоб жизнь медом не казалась» не было целью. Просто так получилось Не стреляйте в пианиста, он играет как умеет.

Как обычно, для хардкорщиков кнопка [ Править страницу ] внизу1). На поиграться, простенькие конструкции доступны через быстрокнопки2) (ессно, для функционирования нужен javascript).

Для экспериментов – песочница.

Собсно, понеслась. Дізнайся на що спроможний із бйорн.

Думаю, мое понимание CC-BY/NC/SA верно, настоящим заявляю, это перевод с говно-английского на луркспик; ну и были добавлены мерзкие каменты. Переводилось отсюда

Простая разметка текста

DokuWiki поддерживает жирный3), курсив, подчеркнутый, и моноширинный. По желанию можно все это смешивать, и даже в любом порядке.

DokuWiki поддерживает **жирный**, //курсив//,
__подчеркнутый__, и ''моноширинный''.
По **__желанию__** __//можно//__ //''все''//
''//это//'' **__//''смешивать''//__**.

Вот так делается надстрочный и подстрочный текст.

Вот так делается <sub>надстрочный</sub> и
<sup>подстрочный</sup> текст.

А вот так делается всеми любимый зачеркнутый. (Интересно, остался кто-нибудь кто бы зачеркнутым обозначал именно «удаленное»?)

А вот так делается всеми любимый
<del>зачеркнутый</del>.

Абзацы окружаются пустыми строками.

Разрыв строки делается двумя обратными косыми чертами в конце строки
или последующим пробелом
на выбор автора. Иначе, будут \\две косых обратных.

**Абзацы** окружаются пустыми строками.

Разрыв строки делается двумя обратными косыми
чертами в конце строки\\
или последующим пробелом\\ на выбор автора.
Иначе, будут \\две косых обратных.

Однако, прежде чем использовать разрыв строки, следует хорошенько подумать. И припомнить, что HTML4) это не пишущая машинка, тут есть другие инструменты.

Сцылки

DokuWiki предоставляет несколько способов оформления «гипертекстовых переходов» (не пора ли писать это слитно?)

Внешние

Внешние сцылки можно никак не оформлять, а просто щедро разбрасывать по тексту. Например вот так: http://distributed.org.ua/ 5). Что бы урл был предъявлен читателю с какой-нибудь мозгоразрывающей надписью, то придется постараться. Что-то вроде такого: тыц. По неизвестным пока причинам, приделано также распознавание e-мылов (nobody@example.com).

Например вот так: http://distributed.org.ua/ .
Что-то вроде такого:
[[http://distributed.org.ua/wiki/|тыц]].
По неизвестным пока причинам приделано также
распознавание e-мылов (<nobody@example.com>).

Внутренние

Внутренние сцылки делаются точно также (ВНЕЗАПНО, никакой автомагии). Окружив квадратными скобками получаем сцылку на pagename с тем же названием. Конечно, так гораздо лучше.

Окружив квадратными скобками получаем сцылку на
[[pagename]] с тем же названием.
Конечно, [[pagename|так гораздо лучше]].

Названия страниц преобразуются в нижний регистр автоматически, спецсимволы не допускаются.

Для игр с пространствами имен нужно использовать двоеточие, вот так: namespaces

Для игр с пространствами имен нужно
использовать двоеточие, вот так:
[[some:namespaces]]

Подробнее об этих играх тут.

Сцылки на внутристраничные фрагменты делются интуитивно. Например: этот фрагмент.6)

Например: [[.:syntax#Внутренние|этот фрагмент]]

Еще немного об автомагии:

Междувики

DokuWiki умеет междувикиевые сцылки (кто бы сомневался). Вот на материнскую, а вот на наиглавнейшую всех времен и народов7)8).

[[doku>dokuwiki|Вот на материнскую]], а вот на
[[wp>Wiki|наиглавнейшую всех времен и народов]].

Выяснилось, [[wp>]] тупо редиректит на en.wikipedia.org. Если нужна сцылко на ru.wikipedia.org, то надо делать ручками и вондербуквицы W уже не будет.

<del>Виндовые шары</del>

Поскипано за ненадобностью. Пожалуйста, не надо бросаться на защиту справедливости. Справедливости не существует. Сцылки на виндовые шары тут все равно работать не будут.

Пикчи

Собсно разметка пикч описана здесь. ЧСХ, если описание сцылки оформить как пикчу, то получится примерно вот так: рекурсия.

[[http://distributed.org.ua|{{http://distributed.org.ua/images/all/ua-distributed.png|рекурсия}}]]

В оформлении сцылок разметка пикч единственное что понимает движок. Все остальное — текст. В то же время, пикч-разметка в оформлении сцылок поддерживается в полном объеме.

Примечания

Примечания создаются двойными круглыми скобками9).

Примечания создаются двойными круглыми
скобками((Реквестирую срач в примечаниях.)).

Все что сказано про сцылки на разделы, к примечаниям применяется в полном объеме.

Оформление разделов

Движок понимает до пяти уровней разделов. Если текст страницы содержит более трех разделов, то будет добавлено содержание. Эта автомагия может быть отключена добавлением чита ~~NOTOC~~ где угодно в тексте.

Сие унылое поделие наглядно демонстрирует — никакого форматирования в заголовках.

Заголовок третьего уровня

Заголовок четвертого уровня

Заголовок пятого уровня
==== Заголовок третьего уровня ====
=== Заголовок четвертого уровня ===
== Заголовок пятого уровня ==

Горизонтальная отбивка задается четырьмя и более дефисами.


----

Пикчи и прочая файло

Пикчи (внешние и внутренние) обозначаются фигурными скобками. По необходимости, можно навязать размер. Если заданы ширина и высота и они не соответствуют исходным пропорциям, то лишнее будет отрезано до массштабирования10). Проще показать, чем объяснить.

FIXME сервер меня не пускает, какие-нибудь релевантные пикчи в библиотеке есть?

Реальный размер:

Выбрана ширина:

Выбраны ширина и высота:

Внешний ресурс:

Реальный размер:  {{wiki:dokuwiki-128.png}}

Выбрана ширина:  {{wiki:dokuwiki-128.png?50}}

Выбраны ширина и высота:
{{wiki:dokuwiki-128.png?200x50}}

Внешний ресурс:
{{http://distributed.org.ua/images/all/fah_colorstr.png?200x100}}

Теперь добавляем сдвиг на странице:

{{http://distributed.org.ua/images/all/fah_colorstr.png }}
{{ http://distributed.org.ua/images/all/fah_colorstr.png}}
{{ http://distributed.org.ua/images/all/fah_colorstr.png }}

Не стесняемся, добавляем текст описания:

вот и заголовок

{{ http://distributed.org.ua/images/all/fah_colorstr.png |вот и заголовок}}

Что есть пикча определяется суффиксом. С потрясающими результатами: если файл не gif, jpeg11), или png то получается сцылко. Ну примерно так: distributed.org.ua_images_all_fah_team_ukraine_logo_400.jpg

Кроме этого, пикчи можно ставить на место заголовков.

Спискота

Как любой уважающий себя язык разметки, DokuWiki может делать спискоту. Она бывают двух типов: упорядоченная и неупорядоченная (понятнее: нумерованная и ненумерованная). В любом случае, что бы сделать спискоту нужно в каждой строчке сделать отступ в *два* пробела; для следующего уровня увеличиваем отступ на еще два пробела. Упорядоченная заказываются - (минус, или если хотите дефис), неупорядоченная — * (звездочка или, специально для англофагов, asterisk).

  1. первый уровень, первая строка
  2. первый уровень, вторая строка
    1. второй уровень, первая строка
  3. первый уровень, третья строка
  - первый уровень, первая строка
  - первый уровень, вторая строка
    - второй уровень, первая строка
  - первый уровень, третья строка

  * первый уровень, первая строка
  * первый уровень, вторая строка
    * второй уровень, первая строка
  * первый уровень, третья строка

Сразу видно (ну не совсем сразу, надо сначала кнопку [Править] нажать), что если упустить - или *, то получиться «пример». Вплоть до того, что строка со списко-маркером это и есть абзац; Следующая строка — это уже другой абзац. Пустая строка — это уже следующая спискота. Здесь для того что бы сделать пример использовались теги <code>. А вот здесь (на оффсайте) еще что-то про списки.

Вшитое умное форматирование

Dokuwiki может на лету пре-форматировать некоторые символы или строки в хитрый и не очень текст и ХТМЛ. По моему, правильнее называть это «макрос»; ну по крайней мере в моем детстве это так нызвалось.

Очень хитрый текст это когда получаются разные смайлики. Не очень хитрый текст это примитивный ХТМЛ. Ну а не примитивный ХТМЛ он и в Африке ХТМЛ.

Преобразование текста в пикчи

Здесь все вертится вокруг смайликов. Это преобразование конфигурируется (а значит, настраивается). Вот обзор того что искаропки:

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

Этот отдельно12)^_^ ^_^

Преобразование текста в ХТМЛ

Что бы было понятно, ХТМЛ он дико правильный. Когда нужно показать читателю ÷13), следует его показывать вот так: &divide; (или, если хочется еще больше запутать: &#247; ). Но это же столько всего надо помнить, поэтому Dokuwiki умеет преобразовывать (и опять же, на лету) и спецсимволы тоже; и они тоже конфигуриются. Вот, например:

→ -> ⇒ => – --
← <- ⇐ <= — ---
↔ <-> ⇔ <=> 640×480 640x480
« << » >>
© (c) ® (r) ™ (tm)
«Але треба наѓадати: 'зв'язок це головне',14)
принаймне для розрахунків»15)
"Але треба наѓадати: 'зв'язок це головне',
принаймне для розрахунків"

В этом списке, некоторые макросы особенные. Умножение (640×480) 'одиночные' и «двойные» кавычки вшиты в Dokuwiki. Этих троих можно только выключить.

Переговоры

Иногда возникает необходимость изобразить материал в виде плодотворной дискусии. Синтаксис этой конструкции содран с обычая тысячилетней давности из мира NNTP16). В процессе сдирания была добавлена толика оригинальности. А именно, каждый новый уровень квотирования *увеличивает* глубину дискуссии. В общем, мозгоразрывающая конструкия. Собственно пример:

Для привлечения рекрутов в команду

Каких «рекрутов»? Кто их видел?
Ну назовем их «штыками». Такой язык ты понимаешь?

вижу два пути: ходить по квартирам самим

Ага, щаз, все свои дела брошу и пойду с тобой по квартирам.
Ну вот и договорились. Я иду по четным под лозунгом «сами мы не местные». А ты идешь по нечетным под лейблом «мы представители канадской дистрибьюторской компании».
А вы за какой проект будете агитировать?
Если за WCG агитировать не будете, я не пойду.

или нанять кого-нибудь. Но что бы нанять кого-то нужны гроши.

8-O а я знаю кого можно за гроши нанять.
Поручик, молчать!

Что-бы были гроши нужно либо продать что-нибудь не нужное, либо запилить донат.

Зачем так категорично? Можно запилить донат, а потом его продать.
Этот опрос сосет.
Для привлечения рекрутов в команду
> Каких "рекрутов"?  Кто их видел?
>> Ну назовем их "штыками".  Такой язык ты понимаешь?
вижу два пути: ходить по квартирам самим
> Ага, щаз, все свои дела брошу и пойду с тобой по квартирам.
>> Ну вот и договорились.  Я иду по четным под лозунгом "сами мы не местные".  А ты идешь по нечетным под лейблом "мы представители канадской дистрибьюторской компании".
>>> А вы за какой проект будете агитировать?
>>>> Если за WCG агитировать не будете, я не пойду.
или нанять кого-нибудь.  Но что бы нанять кого-то нужны гроши.
> 8-O а я знаю кого можно за гроши нанять.
>> Поручик, молчать!
Что-бы были гроши нужно либо продать что-нибудь не нужное, либо запилить донат.
> Зачем так категорично?  Можно запилить донат, а потом его продать.
>> Этот опрос сосет.

Таблицы

DokuWiki таблицы рисовать тоже умеет. Для этого нужно эту таблицу нарисовать самому.

Заголовок 1 Заголовок 2 Заголоовк 3
Р1xК1 Р1xК2 Р1xК3
Р2xК1 Р2xК2+Р2xК3
Р3xК1+Р3xК2+Р3xК3
Р4xК1 Р4xК2 Р4xК3
^ Заголовок 1 ^ Заголовок 2 ^ Заголоовк 3 ^
| Р1xК1       | Р1xК2       | Р1xК3       |
| Р2xК1       | Р2xК2+Р2xК3              ||
| Р3xК1+Р3xК2+Р3xК3                     |||
| Р4xК1       | Р4xК2       | Р4xК3       |

Каждая строка должна начинаться и заканчиваться разделителем. Разделитель для обычных строк — |, для заголовков —- ^. Если ячейчка сделана пустой (||), то получится объединенная по горизонтали двойная ячейка. Главное: количество разделителей (любого типа) должно быть во всех строках одинаковым. И точно так же как для спискоты, пустая строка, начинает новую таблицу.

Вертикальные заголовки делаются вот так (секрет в том, что использованный разделительопределяет тип ячейки):

Заголовок 1 Заголоовк 2
Заголовок 3 Р1xК2 Р1xК3
Заголовок 4 Р2xК2
Р3xК1+Р3xК2+Р3xК3
Заголовок 5 Р4xК2 Р4xК3
|             ^ Заголовок 1 ^ Заголоовк 2 ^
^ Заголовок 3 | Р1xК2       | Р1xК3       |
^ Заголовок 4 | Р2xК2       |             |
| Р3xК1+Р3xК2+Р3xК3                     |||
^ Заголовок 5 | Р4xК2       | Р4xК3       |

Чтобы сделать вертикальное объединение, надо забить ::: в следующую (по вертикали) ячейку. Естественно, кроме этого забоя ничего другого там быть не должно.

Заголовок 1 Заголовок 2 Заголоовк 3
Р1xК1 Р1xК2 Р1xК3+Р2xК3+Р3xК3
Р2xК1 Р2xК2+Р3xК2
Р3xК1
Р4xК1 Р4xК2 Р4xК3
^ Заголовок 1 ^ Заголовок 2 ^ Заголоовк 3       ^
| Р1xК1       | Р1xК2       | Р1xК3+Р2xК3+Р3xК3 |
| Р2xК1       | Р2xК2+Р3xК2 | :::               |
| Р3xК1       | :::         | :::               |
| Р4xК1       | Р4xК2       | Р4xК3             |

Материал в ячейках можно выравнивать по горизонатали! Для этого надо добавить не менее двух пробелов с нужной или обоих сторон. (Облом: выровнять по вертикали нельзя.)

FIXME — админы, ну посмотрите на это безобразие; во второй и третьей колонке текст всегда выравнен влево; а ответ прост — какая-то гидота, намутила с классами col1 и col2; надо машину почистить.

Таблица с выравниванием
вправо по центру влево влево
по центру влево вправо по центру
влево вправо по центру вправо
xxxxxxxxxxx xxxxxxxxxxx xxxxxxxxxxx xxxxxxxxxxx
^              Таблица с выравниванием               ^^^^
|       вправо|  по центру  |влево        |влево        |
|  по центру  |влево        |       вправо|  по центру  |
|влево        |       вправо|  по центру  |       вправо|
| xxxxxxxxxxx | xxxxxxxxxxx | xxxxxxxxxxx | xxxxxxxxxxx |

Отказ от форматирования

Иногда (в основном, на этой странице) необходимо указать DokuWiki, что форматировать какой-то фрагмент текста не нужно. Для этого есть тэг <nowiki> и литерал %%. Первый можно использовать как для абзацев так и для текста. Может второй тоже можно. Например:

В этом тексте есть урл http://distributed.org.ua и **звезды**.

А здесь → __какой-то__ //мусор// ;-).

<nowiki>

В этом тексте есть урл http://distributed.org.ua
и **звезды**.

</nowiki>

А здесь -> %%__какой-то__ //мусор// ;-)%%.

Блоки кода

Код (любой, читай дальше) показывают отступом в два пробела и более или тэгом <code>. Если использовать тэг <file>, то получается тот же самый код, только теперь это код в файле. Очень смешно.

Это блок кода.
Он сделан отступом в два пробела.
Это тоже блок кода.
И даже все пробелы            на     месте                      <-
Это опять блок кода.
Только теперь он в файле
<code>
Это тоже блок кода.
И даже все пробелы            на     месте                      <-
</code>

<file>
Это опять блок кода.
Только теперь он в файле
</file>

Расцветка

DokuWiki также умеет кульную багофичу множества редакторовЪ – расцвечивание кода. Собсно расцвечивание делается с помощью GeSHi --- Generic Syntax Highlighter (Универсальный Раскрашиватель Синтаксиса). Так что, можно выбрать любой синтаксис который знает GeSHi. Чтобы это сработало, надо об этом намекнуть. Делается это следующим образом — <code syntaxname> или <file syntaxname>.

<!-- вот так навязываем немедленный update -->
<cc_config>
  <options>
    <report_results_immediately>1</report_results_immediately>
  </options>
</cc_config>

Известные GeSHi языки (в алфавитном порядке): 4cs, abap, actionscript-french, actionscript, actionscript3, ada, apache, applescript, asm, asp, autoconf, autohotkey, autoit, avisynth, awk, bash, basic4gl, bf, bibtex, blitzbasic, bnf, boo, c, c_mac, caddcl, cadlisp, cfdg, cfm, chaiscript, cil, clojure, cmake, cobol, cpp, cpp-qt, csharp, css, cuesheet, d, dcs, delphi, diff, div, dos, dot, ecmascript, eiffel, email, erlang, fo, fortran, freebasic, fsharp, gambas, genero, genie, gdb, glsl, gml, gnuplot, groovy, gettext, gwbasic, haskell, hicest, hq9plus, html, icon, idl, ini, inno, intercal, io, j, java5, java, javascript, jquery, kixtart, klonec, klonecpp, latex, lisp, locobasic, logtalk, lolcode, lotusformulas, lotusscript, lscript, lsl2, lua, m68k, magiksf, make, mapbasic, matlab, mirc, modula2, modula3, mmix, mpasm, mxml, mysql, newlisp, nsis, oberon2, objc, ocaml-brief, ocaml, oobas, oracle8, oracle11, oxygene, oz, pascal, pcre, perl, perl6, per, pf, php-brief, php, pike, pic16, pixelbender, plsql, postgresql, povray, powerbuilder, powershell, progress, prolog, properties, providex, purebasic, python, q, qbasic, rails, rebol, reg, robots, rpmspec, rsplus, ruby, sas, scala, scheme, scilab, sdlbasic, smalltalk, smarty, sql, systemverilog, tcl, teraterm, text, thinbasic, tsql, typoscript, unicon, vala, vbnet, vb, verilog, vhdl, vim, visualfoxpro17), visualprolog, whitespace, winbatch, whois, xbasic, xml, xorg_conf, xpp, z80

Блоки кода для загрузки

Любой блок кода (или файл, я в них запутался) можно предложить читателю для загрузки. Для этого надо назначить ему имя, вот таким образом: <code syntaxname filename> или <file syntaxname filename>. Если нужен только файл без расцветки, то на месте syntaxname надо указать дефис (-).

стишок.txt
Есть у мнея шестерка слуг
проворных, удалых.
И все, что вижу я вокруг
все знаю я от них.
Они по зову моему
явлются в нужде.
Зовут их: Кто, Что, Почему,
Зачем, Когда и Где.

<del>Внедрение(tm) HTML и PHP</del>

Если кому-то интересно заниматься этим XSS, то читайте в оригинале. Ко всему прочему, по дефолту — забанено в конфиге.

Ленты новостей(tm) RSS и ATOM

DokuWiki умеет агрегировать внешние RSS или ATOM ленты новостей™. Для этого безобразия используется SimplePie. Все что может SimplePie DokuWiki может агрегировать. Оформление регулируется параметрами (через пробелы, спасибо):

Параметр Описание
любое число сколько записей показывать, по дефолту 8
reverse показывать в обратном порядке
author показывать имена авторов
date показывать даты записей
description показывать описание, если ХТМЛ выключен, то все теги будут просмешены
n[dhm] частота обновления, n — число, [dhm] — единица измерения (Days, Hours, Minutes); По дефолту — 4h; Меньше 10m — нет пути

В основном, DokuWiki отдает кешированные результаты. С серъезным бизнесом, каковым являются ленты новостей™, так поступать нельзя. Поэтому, DokuWiki будет дропить устаревший кэш, и, соответственно, регенрировать по необходимости. Необходимость наступит не раньше n[dhm].

{{rss>http://distributed.org.ua/rss.php 5 author date 1d }}

Читы

Читы, это такие специальные маркеры. По идее, они не должны генерировать текста. Но, видимо18), некоторые еще и недокументированные. Собсно:

Чит Описание
~~NOTOC~~ Запрещает генерацию содержания
~~NOCACHE~~ Запрещает кеширование. В особенности полезно (а может и необходимо, черт его знает), когда используется внедрение™ <php>.

Плагины(tm)

Синтаксис, который DokuWiki понимает, может быть покращен плагинами. Сами плагины здесь не документированы. И не потому что серъезный бизнес, а потому что DokuWiki искаропки не умеет втягивать код других страниц. Собсно:

19)

1) Ну, у меня внизу.
2) пока не знаю, как это на понятном языке
3) В моем детстве, это называлось полужирным; располнел, наверное.
4) Здесь недокументированная автомагия.
5) В оригинале заявлено, что даже так работает: distributed.org.ua ; видимо, отвалилось.
6) Надо выяснить, как это работает когда в параллельных пространствах названия разделов поименованы на разных языках; надо понимать, что никак.
7) Выяснить, какие еще есть.
8) Выяснить, что с локализацией и имяпространствами.
9) Реквестирую срач в примечаниях.
10) Но не всегда.
11) Нет, надежды оказались тщетны, jpg не считается. По моему, в консерватории что-то надо поправить.
12) Конфликтует с разметкой таблиц.
13) Да, я знаю, в UTF8 все есть.
14) а вот и разрыв строки
15) Идея в том, что в ангельском мунспике, открывающие и закрывающие одиночные кавычки развернуты в разные стороны; в русском одиночных кавычек нет, десу; но оно, кажется, и так не работает; а может забанено в конфиге, в общем — идите лесом.
16) Да, я знаю про списки рассылки™, но вы же все пороблені в религию топ-постинга.
17) OMG, кому нужно это старье?
18) Это видно, если посмотреть код следующего раздела.
19) Обращаем внимание на недокументированный синтаксис, и радуемся.