/
markup.txt
668 lines (502 loc) · 43.3 KB
/
markup.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
~~TOC~~
~~METATAGS:wiki,документация, форматирование, стандарты wiki~~
=}{ Документация =
== 1. Критика существующих Wiki ==
{}Для чего был придуман Wiki? Для того, чтобы человек легко мог получать HTML-страницы
даже если он не имеет никакого представления об HTML. И опять же в основном для того,
чтобы позволить людям вести в Интернет документацию! Да, конечно, вы можете с помощью
Wiki создавать и небольшие сайты, но основное применение Wiki — это как раз сайты с
документацией, посмотрите по Интернету и убедитесь в этом сами.
{}:Идея была великолепной! Ведь даже те, кто знает HTML хорошо, испытывают определённые
трудности при создании страниц, потому что требуется написать уйму тегов, следить за
их очерёдностью. Кроме того, разные люди, создавая документы в HTML будут использовать
разные теги и разные способы их применение, что автоматически приводит к разным стилям
документов и их разному оформлению. Wiki же лишена этого недостатка, ведь автор имеет
дело только с упрощенным языком разметки, а способы расстановки тегов и стили остаются
целиком на совести Wiki движка. Ещё одни умные головы придумали, что из Wiki совсем
необязательно получать только HTML, ведь практически это свой язык разметки и почему
бы тогда из него не генерировать XML, PDF и т.д.? (об этом разговор ещё впереди)
{}Итак, повторюсь, идея была великолепная. Вдохновлённые этой идей люди начали писать
свои Wiki-движки, которых мы сейчас имеем вагон и маленькую тележку. Беда в том, что
всё это безумное количество движков так и не смогло полностью реализовать то, что по
моему скромному мнению, заложили в Wiki люди, его придумавшие.
#{} Первая проблема — это сама Wiki-разметка (Wiki markup). До сих пор нет единого
стандарта, которого бы придерживались в Wiki. Да что единого, пусть бы даже их было
два-три, но чётких, осмысленных. Сейчас же каждый автор Wiki лепит кто во что горазд.
Более того, многие Wiki позволяют ещё и плагины загружать, которые меняют их поведение
(разметку) и считают это своим достоинством!\\
\\
В итоге, написав документ скажем в DokuWiki (один из самых популярных Wiki движков)
вы не сможете его легко разместить в MediaWiki (другой популярнейший Wiki движок),
потому что теги, используемые для разметки не совпадают!\\
\\
И даже, в наиболее мощных из современных Wiki-движков, нет многих вещей попросту
необходимых для нормального оформления HTML-документа, например если вы тривиально
захотите отформатировать абзац по обоим краям, то у вас этого не получится — штатных
средств нет! Именно по этой причине, статьи в Wikipedia (которая как известно использует
MediaWiki) выглядят так убого! Такая же история с якорем (тег <a name=...)\\
\\
Существующие стандарты Wiki, такие как Markdown(r) и Creole(r), убоги и примитивны и
описывают лишь очень небольшое количество тегов, при этом часто умалчивая о том, что
же движок должен делать, если при написании тегов используются лишние пробелы или
если не встретился закрывающий тег.\\
\\
Большинство Wiki-движков не позволяют вложенное форматирование, т.е. например, нельзя
в теге заголовка <Hn> использовать наклонный или другой шрифт, ставить ссылки и т.д.
но почему? И вопрос-то задать некому.\\
\\
Есть проекты и стандарты, которые пытались принести что-то своё, например
[[https://ru.wikipedia.org/wiki/Textile|Textile]], но в итоге реализовав тоже самое
выравнивание, упустили почти всё остальное.\\
\\
А есть вообще уникальная штука, которая называется [[http://www.methods.co.nz/asciidoc/|AsciiDoc]],
авторы которого наворотили совершенно монстрообразную систему разметки перекрывающую
Wiki. Там можно буквально всё, вот только чем изучать всю эту гору разметок, проще
выучить HTML и не мучаться. Такое усложнение разметки делает бессмысленным само
использование Wiki.\\
\\
Ещё одни большие оригиналы придумали тег **nowiki** или маркировку, которая работает
аналогичным образом. Всё что внутри этого тега не интерпретируется wiki-движком,
оставаясь в том виде, в котором это всё вбили. С одной стороны, может показаться,
что это круто, ведь вы можете напрямую разместить там HTML-код, предоставляющий
недостающую функциональность. Но если вы немного подумаете, то поймёте почему это
является злом. Во-первых, зачем использовать Wiki если нужно вставлять HTML-код
вручную? Во-вторых, такие вставки делают практически невозможным генерацию из
Wiki-страниц документов в других форматах.
#{} Вторая проблема Wiki-движков как ни странно, обусловлена их ориентированностью
на документы. Как правило, документация создаётся не на одной странице. Обычно это
несколько страниц разделов и подразделов. Очевидным и логичным было бы как-то
организовать их иерарахию, т.е. указать какой документ будет для текущего документа
следующим и предыдущим, а какой вообще должен вывести нас в начало раздела или вообще
всего документа. Но никаких штатных средств для ведения таких иерархий, ни в одном из
современных Wiki-движков не существует. Пользователю предлагается ВРУЧНУЮ поставить
все необходимые ссылки. А теперь представьте документ, состоящий из нескольких сотен
страниц, в котором вы вдруг захотели переместить один из подразделов в другую главу?
Представьте тот объём ссылок, которые вам нужно будет поправить вручную и при этом
ещё ни разу не ошибиться!
#{} Третья проблема Wiki-движков — это их реализация. Во-первых, непонятно почему,
некоторые «светлые» головы решили, что для хранения самих исходников страниц нужны
базы данных! Это большущий камень в огород MediaWiki! Например, та же DokuWiki прекрасно
обходится без БД и справедливости ради надо сказать, что БД там действительно ни к
чему. Гораздо удобней хранить все версии страниц как файлы в самых обычных каталогах,
а каталоги сделать теми самыми NameSpace, которые разрабочики некоторых Wiki-движков
(как раз DokuWiki) преподносят как последнее достижение инженерной мысли. В большинстве
движков также страдает и поиск, который трационно не поддерживает русскую морфологию,
так что искать можно лишь слова, которые совпадают точно, а падежи, суффиксы и
приставки — забудьте.
Подведя итоги, каким же должен быть Wiki-движок?
* Язык разметки должен быть полностью описан со всеми случаями и точными указаниями,
что делать, если то или это.
* Не должно быть никаких плагинов, которые позволяют изменять принятный стандарт
в угоду совместимости с другими движками. Если нужен синтаксис другого движка —
ставьте этот другой движок и пользуйтесь им, не надо похабить существующий.
* Не должно быть возможностей для вставки посторонней разметки, за исключением
случаев, когда данный блок не влияет на визуальное представление документа (например,
вставка мета-тегов и другой служебной информации).
* Должны быть штатные встроенные механизмы организации иерархии документов внутри
Wiki, а также возможность использования тегов.
* Разметка должна быть простой и понятной, правил разметки не должно быть слишком
много, в противном случае проще писать на HTML.
* При реализации не должны использоваться БД. Каждый элемент пути внутри Wiki должен
соответствовать каталогу, каждый документ — файлу.
== 2. Проектирование ==
===2.1. Правила форматирования===
====@@align|2.1.1. Выравнивание@@====
{}Большинство конструкций в Wiki позволяет организовать выравнивание по левому краю,
правому краю, по центру и по ширине. Делается это с помощью указания в начале конструкции
символа
| \{ | выравнивание по левому краю |
| \} | выравнивание по правому краю |
| \}{ | выравнивание по центру |
| \{} | выравнивание по ширине |
{}Под конструкциями понимаются разные элементы форматирования, например параграфы,
элементы списков, содержимое колонок таблицы, заголовки и т.д. Wiki стремится реализовать
возможность выравнивания везде, где это возможно при использовании HTML.
====2.1.2. Специальные символы====
{}Есть ряд символов и последовательностей символов, которые будут заменены, если встретятся
внутри определённых конструкций.
|=}{ Символ/символы |=}{ На что заменяются |=}{Как выглядит |
| (tm\) | &#8482 | ™ |
| (r\) | &#174 | ® |
| (c\) | &#169 | © |
| > | &gt; | > |
| < | &lt; | < |
| " | &quot; | " |
| \\\\\\ | <br /> | (разрыв строки)|
| \\\любой_символ | любой_символ | (сам символ) |
{}Следует обратить внимание на очерёдность замены, указанную в таблице и на то, что таким
образом, употребление символа \\\ означает экранирование символа, следующего за ним,
что позволяет экранировать символы, которые должны находиться вначале строки, но не
должны восприниматься как символы разметки. Чтобы получить символ \\\, необходимо
написать \\\\\\\\\.
====@@internals|2.1.3. Внутреннее форматирование@@====
{}В описании конструкций, которое следует ниже, оговаривается какие из них поддерживают
внутреннее форматирование.
{}Корректность очерёдности появления тегов внутреннего форматирования в строках возлагается
на пишущего. Приоритета тегов друг относительно друга не существует: начало первого
встретившегося тега открывает тег только если есть завершающая часть тега, в противном
случае разметка, начинающая тег за таковую не считается и остаётся без изменений.
{}Если в подстроке, находящейся внутри тега N1, встречается разметка, открывающая другой
тег N2, но её окончание находится за пределами подстроки содержимого тега N1, то
тег N2 открыт не будет - разметка будет оставлена без изменения. Таким образом достигается
непротиворечивость вложенных тегов и соответствении стандартам XML, согласно которым
каждый элемент должен иметь открывающий и закрывающий теги.
===== 2.1.3.1. Жирный шрифт =====
Текст, размещённый внутри двух звёздочек *\* будет выделен **жирным** шрифтом.
===== 2.1.3.2. Наклонный шрифт или курсив =====
Текст, размещённый внутри /\/ будет выделен //наклонным// шрифтом.
===== 2.1.3.3. Надстрочный текст =====
Текст между символами ^\^ будет отображён как ^^надстрочный^^ текст.
===== 2.1.3.4. Подстрочный текст =====
Текст между символами ,\, будет отображён как ,,подстрочный,, текст.
===== 2.1.3.5. Моноширинный текст =====
Текст между символами '\' будет отображён как ''моноширинный'' текст.
===== 2.1.3.6. Код =====
Текст между символами %\% будет отображён как %%код%%.
===== 2.1.3.7. Перечёркнутый текст =====
Текст между символами -\- будет отображён как --перечёркнутый-- текст.
===== 2.1.3.7. Подчёркнутый текст =====
Текст между символами _\_ будет отображён как __подчёркнутый__ текст.
===== 2.1.3.8. Якорь =====
{}Текст между символами \@@ будет использован как якорь. Сам текст может
быть разделён на две части с помощью символа "**|**". Если текст не разделён,
то весь текст считается якорем.
Пример:
@@anchor@@
Будет преобразован в
<a name="anchor">anchor</a>
Если текст разделён, то первая часть будет подставлена в name, а вторая
будет размещена внутри тега.
Пример:
@@anchor|Якорь@@
Будет преобразован в
<a name="anchor">Якорь</a>
===== 2.1.3.9. Ссылки =====
{}Текст, размещённый внутри двойных квадратных скобок будет считаться ссылкой. Текст
может содержать два фрагмента, разделённых символом "**|**". В этом случае,
первый фрагмент будет считаться ссылкой, а второй фрагмент её содержимым.
{}Ссылки, начинающиеся с символа **/** будут считаться абсолютными.
{}Ссылки, начинающиеся с http:/\/, ftp:/\/ или https:/\/ будут считаться внешними
и выделяться специальным классом с именем **external**.
{}Ссылки, начинающиеся с # будут считаться якорем.
Примеры:
Синтаксис wiki:
[[http://www.mydomain.com]]
[[http://www.mydomain.com|Мой домен]]
[[/about]]
[[about|О сайте]]
[[#anchor|Якорь]]
В HTML будет:
<a href="http://www.mydomain.com" class="external">http://www.mydomain.com</a>
<a href="http://www.mydomain.com" class="external">Мой домен</a>
<a href="/about">/about</a>
<a href="/about">О сайте</a>
<a href="#anchor">Якорь</a>
URL часть ссылки должна быть закодирована, чтобы не содержать символов отличных от
ASCII как этого требуют стандарты.
===== @@images|2.1.3.10. Картинки@@ =====
{}Текст, размещённый внутри двойных фигурных скобок будет считаться картинкой
и относящейся к ней информации, если он будет состоять из нескольких фрагментов,
разделённых символом "**|**".
{}Первый фрагмент (или единственный, если других нет) будет являться ссылкой на
картинку. Допускаются как относительные, так и абсолютные и внешние ссылки.
{}Второй фрагмент является информацией к картинке, которая отображается в теге
img как alt.
{}Третий фрагмент является значением ширирины картинки. Возможно указание процентов.
{}Четвёртый фрагмент является значением высоты картинки. Возможно указание процентов.
{}Пятый фрагмент является подписью к картинке. Если этот фрагмент задан, картинка и
подпись к ней будут помещены в отдельный div, в котором подпись будет выровнена по
центру относительно картинки. Этот фрагмент поддерживает внутреннее форматирование, за
исключением [[#images|картинок]].
{}Фрагменты, значения, которых не нужны, нужно оставить пустыми.
Примеры:
{{1.jpg}}
{{pic.jpg|одна странная картинка}}
{{http://www.domain.com/2.jpg|||картинка с внешнего домена}}
{{pic1.jpg|рисунок 1|300|200|Рис.1 Странная **штуковина**}}
Результат:
<img src="1.jpg">
<img src="pic.jpg" alt="одна странная картинка}}
<div class="image"><img src="http://www.domain.com/2.jpg"><p>картинка с внешнего домена</p></div>
<div class="image"><img src="pic1.jpg" alt="рисунок 1" width="300" height="200"><p>Рис.1 Странная <strong>штуковина</strong></p></div>
===== 2.1.3.11. Цвета
При написании текста в некоторых конструкциях, возможно выделение цветом.
Пример:
Этот ??white|red|**белый** текст на //красном// фоне?? смотрится красиво!
Результат:
Этот ??white|red|**белый** текст на //красном// фоне?? смотрится красиво!
Вы можете использовать как названия цветов, которые поддерживаются в HTML, так и цифровые
обозначения цветов, например #FFFFF, или #CBD.
===== 2.1.3.12. Классы и идентификаторы
При написании текста в некоторых конструкциях, возможно указание класса или идентификатора.
Впоследсвие вы можете использовать это при правке файла стилей.
Пример:
О этот оригинальный %{custom}класс% или %{#id}идентификатор% сделает текст интересней
Генерируемый HTML:
О этот оригинальный <span class="custom">класс</span> или <span id="id">идентификатор</span> сделает текст интересней
Результат:
О этот оригинальный %{custom}класс% или %{#id}идентификатор% сделает текст интересней
WARNING: Использование классов и идентификаторов в Wiki не очень хорошая идея, потому что
Wiki может использоваться для генерации документов других форматов, которые не поддерживают
классы и идентификаторы HTML.
===== 2.1.3.13. Отступы
Некоторые конструкции позволяют использовать отступы. Как правило отступы можно использовать
в тех же конструкциях, которые позволяют [[#align|выравнивание]]. Отступ указывается как ":"
после директив выравнивания, или, если директивы выравнивания не указываются, то без них.
Пример:
{}: абзац с выравниванием по ширине с отступом
Результат:
{}: абзац с выравниванием по ширине с отступом
Пример:
: абзац с отступом
Результат:
: абзац с отступом
====2.1.4. Параграфы====
{}Параграф может состоять из одной или нескольких строк. Начало параграфа никак специально
не выделяется. Параграф заканчивается либо когда встретится пустая строка (строка содержащая
только пробелы или символы табуляции также считается пустой), либо когда вначале строки
встретится символ (или группа символов) начинающие собственную конструкцию разметки.
Параграф поддерживает [[#align|выравнивание]], [[#padding|отступы]] и
[[#internals|внутреннее форматирование]].
==== @@headers|2.1.5. Заголовки@@ ====
{}Заголовок должен начинаться с одного или нескольких символов "**=**", перед которыми не должно
быть пробелов. Количество символов "**=**" определяет уровень заголовка от <h1> до <h6>.
Если символов будет больше 6, то данная последовательность **не будет** считаться тегом
заголовка и будет оставлена как есть.
{}Заголовок может занимать несколько строк, окончанием заголовка считается либо пустая строка,
либо такое же количество символов "**=**" в конце строки, либо в новой строке последовательность
символов, которая начинает собственную конструкцию разметки.
{}Наличие закрывающих символов "**=**" в конце заголовка не является обязательным.
{}Заголовки поддерживают [[#align|выравнивание]] и [[#internals|внутреннее форматирование]]
за исключением [[#images|картинок]].
Пример:
====== заголовок
в две строки
Результат:
====== заголовок
в две строки
==== 2.1.6. Горизонтальная черта =====
{}Как горизонтальная черта будет распознана последовательность символов "**\-\-\-\-**",
размещённая вначале строки. Пробелы до указанной последовательности символов не допускаются.
Какие-либо другие символы, следующие за указанной последовательностью символов, за исключением
пробелов, также не допускаются. В противном случае, данная последовательность не будет
распознана как горизонтальная черта и будет оставлена как есть.
==== 2.1.7. Преформатированный текст
{}Если в начале строки следуют два пробела, то эта строка будет считаться преформатированным
текстом. Если следующая строка также будет содержать вначале два пробела, то эта строка будет
присоединена к блоку преформатированного текста.
{}В преформатированном тексте данного вида поддерживается только замена тегов < и > на < и >,
а также замена последовательностей, которые начинаются на "\\\". Никаких других замен и
подстановок осуществляться не будет.
{}Поскольку начальные пробелы также могут быть в других конструкциях (например, списках), то
обработка правила преформатированного текста должно осуществляться в самом конце.
{}Другой вид преформатированного текста заключается между символами группой символов
\{\{\{ и \}\}\}. Отличие данной конструкции состоит в том, что в данном типе преформатированного
текста заменяются только < и > на < и >, что делает данную конструкцию более удобной
при показе фрагментов кода или системных команд.
Пример:
{{{
* это первый элемент списка, в котором мы используем блок преформатированного текста
{{{
<?php
print phpinfo();
?>
}}}
* это второй элемент списка
}}}
Результат:
* это первый элемент списка, в котором мы используем блок преформатированного текста
{{{
<?php
print phpinfo();
?>
}}}
* это второй элемент списка
Внутри \{\{\{ и \}\}\} допускается использование как последовательности \{\{\{ так и \}\}\}.
Нужно лишь помнить, что при обработке учитывается парное количество.
Пример:
{{{
{{{
{{{
текст внутри блока с использованием \ (одиночной обратной косой черты)
}}}
}}}
}}}
Результат:
{{{
{{{
текст внутри блока с использованием \ (одиночной обратной косой черты)
}}}
}}}
==== 2.1.8. Списки
{}Списки начинаются с символа "*" (ненумерованный список) или с символа "#" (нумерованный список).
Перед этими символами могут быть пробелы. Количество символов влияет на глубину списка.
Пример:
\* уровень 1. элемент 1
с дополнением!
\* уровень 1. элемент 2
\** уровень 2. элемент 1
\* уровень 1. элемент 3
Результат:
* уровень 1. элемент 1
с дополнением
* уровень 1. элемент 2
** уровень 2. элемент 1
* уровень 1. элемент 3
==== 2.1.9. Термины
{}Термины определяются с помощью тегов форматирования ";" и ":", которые располагаются
вначале строки. Пробелы между началом строки и этими символами не допускаются.
Пример:
{{{
; Первый термин
: Описание первого термина.
; Второй термин: Описание второго термина,
в несколько строк.
}}}
Генерируемый HTML:
{{{
<dl>
<dt>Первый термин</dt>
<dd>Описание первого термина.</dd>
<dt>Второй термин</dt>
<dd>Описание второго термина, в несколько строк.</dd>
</dl>
}}}
Результат:
; Первый термин
: Описание первого термина.
; Второй термин: Описание второго термина,
в несколько строк.
Термины поддерживают внутреннее [[#internals|внутреннее форматирование]]
==== 2.1.10. Таблицы
{}Таблицы начинаются с символа "|", который должен быть первым в строке. Данный символ начинает
таблицу, если она ещё не начата или новую строку таблицы и колонку, если таблица начата, или
следующую колонку таблицы, если данный символ не является первым в строке.
Если колонка начинатеся с "|=", то она считается заголовочной колонкой в таблице.
{}Содержимое колонок поддерживает [[#internals|внутреннее форматирование]], а также
[[#align|выравнивание]].
{}Если между символами "||" нет пробела, то считается, что предыдующая колонка занимает столько
колонок таблицы, сколько встретилось символов подряд.
{}Если в колонке таблицы встретились только символы ":", то считается, что данная колонка в строке выше
занимает столько строк таблицы, в скольких из них встретился символ ":", причём в содержимом
колонки других символов кроме ":" быть не должно.
{}Лишние пробелы между "|" и содержимым колонки удаляются.
Пример:
{{{
|= наименование |=}{ количество |
| Яблоко |}{ 3 |
| Банан |} 2 |
|Прочерк||
| Прочие фрукты |} 5 |
| Груша |:|
}}}
Результат:
{{{
<table>
<tr><th>наименование</th><th align="center">количество</th></tr>
<tr><td>Яблоко</td><td align="center">3</td><tr>
<tr><td>Банан/td><td align="right">2</td><tr>
<tr><td colspan="2">Прочерк</td><tr>
<tr><td>Прочие фрукты<td><td rowspan="2" align="right">5</td></tr>
<tr><td>Груша</td></tr>
</table>
}}}
А выглядит так:
|= наименование |=}{ количество |
| Яблоко |}{ 3 |
| Банан |} 2 |
|}{Прочерк||
| Прочие фрукты |} 5 |
| Груша |:|
==== 2.1.11. Специальные блоки
{}Возможно использование 4-х разных типов специальных блоков. Каждый такой блок начинается
с ключевого слова, которое описывает тип блока, за которым следует содержимое блока в одну
или несколько строк. Концом блока считается пустая строка.
Между ключевым словом и началом строки пробелы не допускаются.
Пример:
{{{
WARNING: Это блок с предупреждением!
NOTE: Это блок с замечанием!
TIP: Это блок с советом!
IMPORTANT: Это блок с важной информацией
в несколько строк!
}}}
Результаты:
{{{
<div class="warning"><img src="images/warning.png">Это блок с предупреждением!</div>
<div class="warning"><img src="images/note.png">Это блок с замечанием!</div>
<div class="warning"><img src="images/tip.png">Это блок с советом!</div>
<div class="warning"><img src="images/important.png">Это блок с важной информацией в несколько строк!</div>
}}}
А выглядит:
WARNING: Это блок с предупреждением!
NOTE: Это блок с замечанием!
TIP: Это блок с советом!
IMPORTANT: Это блок с важной информацией
в несколько строк!
=== 2.2. Директивы ===
{}Если в строке, с самого начала, без пробелов, находится какой-либо текст, который начинается
и заканчивается на "~~", то данная строка визуально никак не интерпретируется, пропускается при
выводе, а сам текст считается директивой, которая интерпретируется Wiki движком.
==== 2.2.1. Директива //TOC//
{}Директива **TOC** заставляет движок генерировать содержание с оглавлением.
Оглавление строится по заголовкам, которые встретились в тексте.
==== 2.2.2. Директива //TOC_ONELEVEL//
{}Директива **TOC_ONELEVEL** заставляет движок генерировать оглавление, сканируя все файлы,
на одном уровне иерархии с текущим.
==== 2.2.3. Директива //INCLUDE//
{}Директива **INCLUDE** заменяется содержимым файла, который, указывается в ней.
Пример:
~~INCLUDE:/doc/common.html~~
{}Путь к файлу может быть как абсолютным (начинаться с корня сайта /), так и относительным.
==== 2.2.4. Директива //TITLE//
{}Директива **TITLE** задаёт HTML заголовок **<title>**, а также заголовок страницы, который
будет использован при построении оглавления данной иерархии. Без указания директивы **TITLE**
и HTML заголовок **<title>** и заголовок страницы для иерархии назначается из содержимого
первого встретившегося тега [[#headers|заголовка]].
==== 2.2.5. Директива //TAGS//
{}Директива **TAGS** задаёт список тегов (разделённых запятыми), по которым можно впоследствии
будет искать данный документ.
Пример:
~~TAGS:крокодил, животный мир, Африка~~
==== 2.2.6. Директива //METATAGS//
{}Директива **METAGS** задаёт список тегов (разделённых запятыми), которые будут добавлены в
HTML заголок <META name="keywords">.
Пример:
~~TAGS:крокодил, животный мир, Африка~~
Результат:
<META name="keywords" content="крокодил, животный мир, Африка" />
==== 2.2.7. Директива //NEXT//
{}Директива **NEXT** задаёт URL документа, который будет считаться логически следующим за текущим.
Это необходимо для организации иерархии документов и навигации по этой иерархии
==== 2.2.8. Директива //TOP//
{}Директива **TOP** задаёт URL документа, который будет считаться логически на уровень выше текущего.
Это необходимо для организации иерархии документов и навигации по этой иерархии.
==== 2.2.9. Директива //REDIRECT//
{}Директива **REDIRECT** задаёт URL документа, на который будет осуществлён переход при загрузке
документа, содержащего данную директиву. Поэтому нет смысла размещать в данном документе ещё
какое-либо содержимое, ведь оно не будет отображено.
Пример:
~~REFRESH:http://domain.com~~
Переход будет осуществлятся с помощью выдачи HTTP-заголовка **Location:**.
==== 2.2.10. Директива //REFRESH//
{}Действие директивы **REFRESH** аналогично директиве **REDIRECT**, но отличается тем, что
документ будет отображён, а переход будет выполнен с помощью заголовка **META Refresh** через
указанное количество секунд.
Пример:
~~REFRESH:5;http://domain.com~~
Переход на http://domain.com будет выполнен через 5 секунд.
==== 2.2.11. Директива //TOPNAVPANEL//
Директива **TOPNAVPANEL** показывает панель навигации по иерерахии документов вверху документа.
Панель состоит из 3-х ссылок:
# Ссылка на предыдущий документ (не отображается для первого документа в иерархии)
# Ссылка на документ, расположенный уровнем выше (не отображается для документов первого
уровня иерархии
# Ссылка на следующий документ (не отображается для последнего документа в иерархии)
==== 2.2.12. Директива //BOTTOMNAVPANEL//
Директива **BOTTOMNAVPANEL** показывает панель навигации по иерерахии документов ввнизу документа.
Панель состоит из 3-х ссылок:
# Ссылка на предыдущий документ (не отображается для первого документа в иерархии)
# Ссылка на документ, расположенный уровнем выше (не отображается для документов первого
уровня иерархии
# Ссылка на следующий документ (не отображается для последнего документа в иерархии)