Оформление текстов

Для оформления текстов в описании задач и на wiki-страницах проектов Redmine использует язык разметки Textile.

Стили шрифтов

_italic_: курсив

*_bold italic_*: жирный курсив

+underline+: подчеркнутый

-strike-through-: перечеркнутый

Plain ^superscript^: Верхний индекс

Plain ~subscript~: Нижний индекс

inline @monospace@: моноширинный шрифт

??cite??: цитата

Строчные элементы

Внешние ссылки

Адреса http(s), ftp и mail автоматически преобразуются в "кликабельные" ссылки:

http://www.redmine.org: http://www.redmine.org

Для размещения в ссылке произвольного текста используйте следующую разметку:

"Главная страница проекта Redmine":http://www.redmine.org: Главная страница проекта Redmine.

E-mail ссылки

someone@foo.bar: .

В ссылке на e-mail адрес можно указать тему, текст письма и адреса для отправки копий.

"Email webmaster and admin":mailto:webmaster@foo.bar?cc=admin@foo.bar: Email webmaster and admin -- указание адреса для отправки копии.

"Email someone for help":mailto:someone@foo.bar?subject=Website%20Help: Email someone for help -- указание темы письма.

"Email someone for help":mailto:someone@foo.bar?subject=Website%20Help&body=My%20problem%20is%20: Email someone for help -- указание текста письма.

Важно: вместо пробелов в ссылку следует вставлять код %20.

Акронимы

Ненавязчиво пояснить аббревиатуры в тексте можно следующим образом:

JPL(Jean-Philippe Lang): JPL.

К сожалению, не работает для кириллицы и смешанного регистра: ИС(Информационные Системы), QoS(Quality of Service)

Изображения

Внешние:

!image_url! — встраивает в текст изображение, находящееся по внешнему адресу image_url.

!image_url(Image title)! — изображение будет снабжено заголовком.

  • встроенное изображение, причем текст будет продолжен после изображения Индеец вот так, а при наведении курсора на изображение появится текст. Этот текст также появится,если изображение по какой-либо причине недоступно — Индеец (отображение зависит от браузера)

!>image_url! — изображение выровнено по правому краю, текст обтекает изображение по левому краю.

  • изображение отображается справа от текста

    пример изображения справа от текста
    опять справа от текста
    еще справа от текста
    и тут картинка справа от текста
    а тут текст слева от картинки

Прикрепленные:

!attached_image.png! — встраивает в текст изображение attached_image.png, прикрепленное к странице.

!{width:50%}attached_image.png! — задаёт ширину изображения относительно блока, в который его встроили (для больших изображений можно воспользоваться блоком предварительного просмотра).

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

Блочные элементы

Для корректной обработки textile-разметки рекомендуется помещать блочные элементы (p, h, bq, fn) в самое начало строки и отделять их от остального текста пустыми строками.

Заголовки

hn. Заголовок n-ного уровня, где n принимает значение от 1 до 6.

h1. Заголовок 1

h2=. Заголовок 2 // = выравнивание по центру

h3>. Заголовок 3 // > выравнивание по правому краю

Заголовки снабжаются якорями, на которые можно будет давать ссылки (см. раздел Wiki-страницы).

Расставленные в тексте заголовки формируют блок "содержания" страницы, который можно встроить на страницу с помощью специального макроса.

Абзацы

p. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

p(. Отступ слева в 1em. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

p((. Отступ слева в 2em. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
Отступ сохраняется для всех следующих без пробела строк.

p>. Выравнивание по правому краю. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

p<. Выравнивание по левому краю (по умолчанию).

p)))>. Выравнивание по правому краю с отступом справа в 3em. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
Выравнивание и отступ также сохраняется для всего следующего через перенос строки (<br>)
текста.

Выравнивание сбрасывается с введением пустой строки между выровненным блочным элементом и остальным текстом.

p=. Выравнивание по центру. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

p<>. Выравнивание по левому и правому краю. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

Горизонтальный разделитель

---

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor 
incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud
 exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute 
irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla 
pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia
 deserunt mollit anim id est laborum.

---

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.


Pre-форматирование

Внутри выделенного тэгами блока текст не будет преобразован Парсером.

Чтобы избежать преобразования textile-разметки в html-код используйте тэги <pre></pre>.

<pre>Внутри выделенного *тэгами* блока текст не будет преобразован [[RedmineTextFormattingRus#Разметка Textile|Парсером]].</pre>

Цитаты

> "Ruby on Rails" — программный каркас, написанный на языке программирования 
Ruby. Ruby on Rails предоставляет архитектурный образец Model-View-Controller 
(модель-представление-контроллер) для веб-приложений, а также обеспечивает их 
интеграцию с веб-сервером и сервером базы данных.

"Ruby on Rails" — программный каркас, написанный на языке программирования Ruby. Ruby on Rails предоставляет архитектурный образец Model-View-Controller (модель-представление-контроллер) для веб-приложений, а также обеспечивает их интеграцию с веб-сервером и сервером базы данных.

или
bq.:http://ru.wikipedia.org/wiki/Ruby_on_Rails "Ruby on Rails" — программный 
каркас, написанный на языке программирования Ruby. Ruby on Rails предоставляет 
архитектурный образец Model-View-Controller (модель-представление-контроллер) для
 веб-приложений, а также обеспечивает их интеграцию с веб-сервером и сервером 
базы данных.

"Ruby on Rails" — программный каркас, написанный на языке программирования Ruby. Ruby on Rails предоставляет архитектурный образец Model-View-Controller (модель-представление-контроллер) для веб-приложений, а также обеспечивает их интеграцию с веб-сервером и сервером базы данных.

>> Вдруг кому пригодится.
> bq.:http://ru.wikipedia.org/wiki/Ruby_on_Rails 
преобразуется парсером в атрибут @cite="http://ru.wikipedia.org/wiki/Ruby_on_Rails"@
html-тэга <blockquote>

Вдруг кому пригодится.

bq.:http://ru.wikipedia.org/wiki/Ruby_on_Rails преобразуется парсером в атрибут cite="http://ru.wikipedia.org/wiki/Ruby_on_Rails" html-тэга <blockquote>

Списки

Разметка для ненумерованного списка

* Item 1
* Item 2
** Item 2.1

 ** Item 2.1.1
*** Item 2.1.2
** Item 2.2
* Item 3

** Item 0

отображается как:

  • Item 1
  • Item 2
    • Item 2.1
      • Item 2.1.1
      • Item 2.1.2
    • Item 2.2
  • Item 3
  • Item 0

Разметка для нумерованного списка

# Item 1
# Item 2

 ## Item 2.1

  ## Item 2.1.1
## Item 2.2
# Item 3

# Item 0

отображается как:

  1. Item 1
  2. Item 2
    1. Item 2.1
      1. Item 2.1.1
    1. Item 2.2
  3. Item 3
  1. Item 0

Под элемент списка можно встроить текст, не нарушив нумерации, если поместить его через перенос строки и пробел:

* Item 1
 some text
 some text
* Item 2
 some text
** Item 2.1
 some text
* Item 3
  1. Item 1
    some text
    some text
  2. Item 2
    some text
    1. Item 2.1
      some text
  3. Item 3
    some text

Таблицы

1. Любое количество пустых символов будет заменено одним пробелом, поэтому для удобства разметки можно использовать текстовый редактор и табуляцию.

|_.UserID|_.Name|_.Group|_. attribute list |
|\3=.IT               |<. align left|
|1|Artur Pirozhkov |/2.Users |>. align right|
|2|Vasya Rogov        |=. center |
|3|John Smith |Admin
               (root)|^. valign top |
|4|-          |Nobody
               (anonymous)|~. valign bottom|

Отображается как:
UserID Name Group attribute list
IT align left
1 Artur Pirozhkov Users align right
2 Vasya Rogov center
3 John Smith Admin
(root)
valign top
4 - Nobody
(anonymous)
valign bottom

2. Для применения атрибутов к таблице, перед началом таблицы необходимо указать дополнительный тег table{}.
Например для горизонтального центрирования применяется свойство margin:0 auto, для указания статической ширины таблицы можно использовать свойство width:<значение> с значением в пикселях (600px) либо в процентах 100%.

table{margin:0 auto; width:50%}.
|_\2.example|
|example|example|
|example|example|

Отображается как:

example
example example
example example

3. Стили применимы и к наполнению таблицы.

table{margin:0 auto}.
{background:#4F4F4F}. |_\8.%{font-size:18px; color:#F5F5DC}Check-list%|
{background:#4F4F4F}. |_=.%{color:#F5F5DC}№ 
кейса%|_=.%{color:#F5F5DC}Описание%|_=.%{color:#F5F5DC}Используемая 
процедура%|_=.%{color:#F5F5DC}Ожидаемый 
результат%|_=.%{color:#F5F5DC}Фактический результат.%|_=.%{color:#F5F5DC}Проверено%|_=.%{color:#F5F5DC}№ бага%|_=.%{color:#F5F5DC}Комментарий%|
|_.*1*|Описание теста №1|{{collapse(Процедура 1)
тело процедуры 1
}}|=.Запись в БД обновилась.|=.%{color:green}Запись в БД обновилась.%|_.08.10.15|_.-||
{background:#F5F5DC}. |_.*2*|Описание теста №2|{{collapse(Процедура 2)
тело процедуры 2
}}|=.Ошибка|=.%{color:red}Ошибки не возникло.%|_.08.10.15|"20912":http://www.redmine.org/issues/20912|Не воспроизводится.|
{background:#4F4F4F}. |_\8.|
Check-list

кейса
Описание Используемая
процедура
Ожидаемый
результат
Фактический результат. Проверено № бага Комментарий
1 Описание теста №1 Запись в БД обновилась. Запись в БД обновилась. 08.10.15 -
2 Описание теста №2 Ошибка Ошибки не возникло. 08.10.15 20912 Не воспроизводится.

Сноски

Поясняемый текст[21]

fn21. Поясняющий текст.

Поясняемый текст21

21 Поясняющий текст.

Ссылка не обрабатывается парсером, если отделяется от поясняемого текста: например [4] или "другой пример"[4].

Ссылки на объекты Redmine

Redmine позволяет встраивать в тексты ссылка на различные ресурсы (задачи, wiki-страницы, ревизии…).

Чтобы предотвратить преобразование redmine-разметки в ссылку поставьте перед ней восклицательный знак.

Wiki-страницы

Ссылка отображается красной, если страницы не существует: Nonexistent page.

[[Guide]]: Guide — ссылка на страницу.

[[Guide|User manual]]: User manual — ссылка с произвольным текстом.

[[Guide#User-guide|User guide]]: User guide — ссылка на определенный заголовок страницы.
После символа # в названии заголовка ставятся дефисы вместо пробелов.

[[someproject:some-page]] — ссылка на wiki-страницу из другого проекта.

[[someproject:]] — ссылка на главную страницу Wiki другого проекта.

Вложения

attachment:i0003.gif: i0003.gif — ссылка на файл, прикрепленный к данной странице; если название файла содержит небуквенные символы, следует взять его в двойные кавычки.

Важно: ссылки на прикрепленные файлы действуют только на той странице, к которой они прикреплены.

Документы

document#17 — ссылка на документ по идентификатору.

document:somedocument — ссылка на документ по названию.

document:"Some document" — название документа заключается в двойные кавычки, если в нем есть пробелы.

document:some_project:"Some document" — ссылка по названию на документ в другом проекте.

Проекты

project#4 или project:someid — ссылка на проект по числовому или символьному идентификатору.

project:someproject — ссылка на проект по названию.

project:"Some project" — название заключается в двойные кавычки, если в нем есть пробелы.

Задачи

#3177: #3177 — ссылка перечеркнута, если задача закрыта.

#3177-9: #3177-9 — ссылка на комментарий к задаче.

Версии

version#3 — ссылка на версию по идентификатору.

version:1.0.0 — ссылка на версию по названию.

version:"1.0 beta 2" — название заключается в двойные кавычки, если в нем есть пробелы.

Изменения

В зависимости от типа хэша изменений, используемого вашим репозитарием:

r758 или commit:c6f4d0fd: r758 — редакция

svn1|r758 или commit:hg|c6f4d0fd: ссылка на редакцию в определенном репозитарии

sandbox:r758 или sandbox:commit:c6f4d0fd: ссылка на редакцию в другом проекте

Файлы репозитория

source:some/file — ссылка на файл репозитория.

source:some/file@52 — ссылка на редакцию файла репозитория.

source:some/file#L120 — ссылка на строку файла репозитория.

source:some/file@52#L120 — комбинация разметки.

source:repo_identifier|some/file — ссылка на репозиторий не по умолчанию.

source:"some file@52#L120" — двойные кавычки используются, если в URL присутствуют пробелы.

export:some/file -- ссылка на скачивание файла.

Форумы

forum#2: ссылка на форум по идентификатору.

P(. forum:Discussion: ссылка на форум по названию.

P(. forum:"Help and more": двойные кавычки используются, если в названии есть пробелы.

message#1218: ссылка на сообщение по идентификатору.

Новости

news#1: ссылка на новость по идентификатору.

news:Greetings: ссылка на новость по названию.

news:"eCookbook first release !": двойные кавычки используются, если в названии есть пробелы.

Макросы

Список доступных макросов и их описание (по-английски) вызывается следующим макросом:

{{macro_list}}

Содержание

Отображает блок "содержание" страницы, который формируется автоматически на основе выставленных в тексте заголовков:

{{TOC}}

{{>TOC}} // блок справа

Дочерние страницы

Выводит список ссылок на все дочерние страницы (англ.) для текущей страницы:

{{child_pages}}

Выводит список дочерних страниц для любой страницы:

{{child_pages(RedmineIssues)}}

Пример:


Начинает список со ссылки на страницу:

{{child_pages(RedmineIssues, parent=1)}}

Пример:


Выводит дочерние страницы заданной глубины вложенности:

{{child_pages(RedmineIssues, depth=2)}}


{{child_pages(RedmineIssues, depth=1, parent=1)}}


Включение текста

Выводит содержимое указанной страницы:


{{include(PMO)}}

Пример (для удобства включение обрамлено горизонтальными разделителями "---" )


PMO

Project Management Offices need to provision and track workloads between competing projects. Redmine is a great project collaboration tool for software teams.

A series of plugins are under development in order to ease the use of Redmine as a PMO tool :
  • Workload (weekly timesheet and future assignments per developper with summary information)
  • Taskjuggler (for scheduling future tasks leveredged by a first-class scheduling program)

Redmine 0.9 also takes better into account task dependencies. The Taskjuggler round-trip extension and plugin is user for controling developper overload. Workload eases planning of future tasks in man-days.

These plugins are currently under beta development and participation is very much welcome !


Если включаемая страница не найдена или у текущего пользователя нет доступа на её просмотр, будет выведено сообщение об ошибке:

Error executing the include macro (Page not found)

Свёрнутый блок

{{collapse(Осторожно, спойлер!)
Всех убил адвокат.
}}

Предпросмотр изображения

Выводит блок шириной 100 px для предварительного просмотра прикрепленного изображения:

{{thumbnail(scm_diff.png)}}

Можно задать ширину блока и всплывающую подсказку:

{{thumbnail(scm_diff.png, size=300, title=Thumbnail)}}

scm_diff.png

CSS

Идентификаторы

p(#id). — присваивает абзацу идентификатор id.

Пример:

Данный абзац имеет идентификатор id (якорь), что может быть использовано, например, для создания ссылки на него без использования заголовков.

Классы

p(class_name). — присваивает абзацу класс.

%(class_name)span_content% — присваивает диапазону класс.

Примеры:

Избранное

Стили

%{background:lightgreen}Зеленый фон%Зеленый фон

%{text-decoration:overline}"Надчеркивание"%"Надчеркивание"

Комбинирование стилей:

%{background:silver;color:black;border-style:outset;padding:5px}Отмена%Отмена

Подсветка кода

Подсветка кода реализована на CodeRay - скоростной библиотеке, написанной на Ruby. Она поддерживает синтаксис C, C++, CSS, Delphi, Diff, Groovy, HTML, Java, Javascript, JSON, Nitro-XHTML, PHP, Python, RHTML, Ruby, Scheme, SQL, XML и YAML.

Чтобы подсветить код, используйте следующую разметку:

<pre><code class="ruby">
  Place your code here.
</code></pre>

Пример:

# The Greeter class
class Greeter
  def initialize(name)
    @name = name.capitalize
  end

  def salute
    puts "Hello #{@name}!" 
  end
end

Экранирование разметки

Чтобы парсер не обрабатывал символы как textile-разметку, их следует поместить в экранирующие тэги:
Input Output
<notextile>|</notextile> |

Заключение

Простейшие возможности разметки доступны через кнопки над полем ввода, однако, все варианты оформления применимы к любому тексту в Redmine: задаче, новости, комментарию и т.п.
Историю изменений wiki-страницы можно посмотреть, нажав ссылку "История " вверху справа.
В качестве примера всех перечисленных вариантов разметки можно рассмотреть исходный код данной статьи.



i0003.gif (50 KB) Lucy Yevseyeva, 2011-09-09 13:56

scm_diff.png (52.3 KB) Lucy Yevseyeva, 2014-06-21 19:57