Синтаксис разметки reStructuredText

Базовые концепции

Синтаксис reStructuredText опирается на следующие концепции:

Отступы и пробелы имеют значение для команд разметки, но не имеют значения внутри текста (10 пробелов будут отображены как один).

Примечание

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

В командах (директивах) используется символ обратной кавычки `, который располагается на клавише с буквой ё и символом ~

Заголовки

Примечание

Длина подчеркивания должна быть равна длине заголовка!

Заголовок 1 уровня
==================

Заголовок 2 уровня
------------------

Заголовок 3 уровня
~~~~~~~~~~~~~~~~~~

Заголовок 4 уровня
^^^^^^^^^^^^^^^^^^

Заголовок 5 уровня
##################

Внимание

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

Выделение текста

**жирный текст**

*курсив текст*

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

``красный цвет``

Такое выделение следует использовать при написании имени модуля, файла, папки, параметра, запроса, порта и т.д.

Нумерованные списки

Для нумерованных списков следует использовать символ #.

#. Один
#. Два
#. Три

или

1. Один
2. Два
3. Три

Результат:

  1. Один

  2. Два

  3. Три

Сложные нумерованные списки:

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

#. Текст первого пункта
#. Текст второго пункта
#. Этот пункт нам надо разбить еще на два пункта:

        #. подпункт номер один
        #. подпункт номер два
#. Текст четвертого пункта

        - это маркированный список четвертого пункта
        - здесь сделаем второй пункт
#. Продолжим нумерованный список

Продолжаем наш текст

Результат:

  1. Текст первого пункта

  2. Текст второго пункта

  3. Этот пункт нам надо разбить еще на два пункта:

    1. подпункт номер один

    2. подпункт номер два

  4. Текст четвертого пункта

    • это маркированный список четвертого пункта

    • здесь сделаем второй пункт

А здесь продолжим наш текст новым абзацем…

Маркированные списки

Для маркированных списков следует использовать символ * или *.

* Один
* Два
* Три

Результат:

  • Один

  • Два

  • Три

Вложенные списки

* Первый уровень
  * Второй уровень
    * Третий уровень

Результат:

  • Первый уровень
    • Второй уровень
      • Третий уровень

Изображения

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

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

.. _fig1:
.. figure:: img/insert_image.png
        :align: center
        :alt: Вставка изображения (альтернативный текст для html)

        Вставка изображения (подрисуночная подпись)

Результат:

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

Рисунок - 1 Вставка изображения

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

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

Пример кода:

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

.. |обновление| image:: img/image_in_text.png

Вставка ссылки на изображение

Для вставки ссылки на изображение используйте ссылку на якорь вида :numref:`fig1`. Например, чтобы сослаться на изображение выше, сделайте следующие:

Это просто текст, но сейчас мы в нем сделаем ссылку на  :numref:`fig1`:

Результат:

Это просто текст, но сейчас мы в нем сделаем ссылку на Рисунок - 1:

PlantUML

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

.. _fig16:
.. uml:: /project_dtm/uml/16.uml
        :align: center
        :caption: *Вставка схемы PlantUML*

Результат

Таблицы

Работа с таблицами

Есть несколько способов сделать таблицы.

.. table:: Заголовок таблицы (Внимание! Отступ таблицы относительно
                команды ..``table::`` обязателен)

        +------------------------+------------+----------+----------+
        | Header row, column 1   | Header 2   | Header 3 | Header 4 |
        | (header rows optional) |            |          |          |
        +========================+============+==========+==========+
        | body row 1, column 1   | column 2   | column 3 | column 4 |
        +------------------------+------------+----------+----------+
        | body row 2             | Cells may span columns.          |
        +------------------------+------------+---------------------+
        | body row 3             | Cells may  | - Table cells       |
        +------------------------+ span rows. | - contain           |
        | body row 4             |            | - body elements.    |
        +------------------------+------------+---------------------+

Примечание

Отступ таблицы относительно команды .. table:: обязателен

Результат:

Таблица 1 Заголовок таблицы (Внимание! Отступ таблицы относительно команды ..``table::`` обязателен)

Header row, column 1 (header rows optional)

Header 2

Header 3

Header 4

body row 1, column 1

column 2

column 3

column 4

body row 2

Cells may span columns.

body row 3

Cells may span rows.

  • Table cells

  • contain

  • body elements.

body row 4

Простая таблица

.. table:: Простая таблица со сложной шапкой

        =====  =====  ======
        Inputs     Output
        ------------  ------
        A      B    A or B
        =====  =====  ======
        False  False  False
        True   False  True
        False  True   True
        True   True   True
        =====  =====  ======

Результат:

Таблица 2 Простая таблица со сложной шапкой

Inputs

Output

A

B

A or B

False

False

False

True

False

True

False

True

True

True

True

True


Таблица 3 CSV-таблица

Treat

Quantity

Description

Albatross

2.99

On a stick!

Crunchy Frog

1.49

If we took the bones out, it wouldn’t be crunchy, now would it?

Gannet Ripple

1.99

On a stick!

Результат:

Таблица 4 CSV-таблица

Treat

Quantity

Description

Albatross

2.99

On a stick!

Crunchy Frog

1.49

If we took the bones out, it wouldn’t be crunchy, now would it?

Gannet Ripple

1.99

On a stick!

Вставка ссылки на таблицу

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

  1. Установите перед таблицей якорь (см. рис. ниже).

    Вставка якоря перед заголовком

    Рисунок - 3 Вставка якоря перед заголовком таблицы

  2. В тексте установите ссылку на якорь вида вида :numref:`tab_example`

Внимание

После названия таблицы должна быть пустая строка и таблица должна иметь отступ от левого края (клавиша TAB для всей таблицы).

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

Посмотрите как можно перейти вот на эту таблицу (см. :numref:`tab_example`)

Результат:

Посмотрите как можно перейти вот на эту таблицу (см. Таблица 1)

Примечание

  • В названии якоря используйте префикс tab

Еще один пример:

Для работы с Программой сотрудник (программист) должен обладать
компетенциями, перечисленными в таблице (см. :numref:`tab_personal_example`) в том объеме,
который требуется для выполнения поставленных перед ним производственных
задач.

.. _tab_personal_example:

.. table:: Требования к персоналу (пример)

        +----+------------------------+-------------------------------+
        | №  | Компетенция            | Уровень                       |
        +====+========================+===============================+
        | 1  | Знакомство со СМЭВ 3   | В объеме, изложенном в        |
        |    |                        | инструкциях, технологических  |
        |    |                        | стандартах, методических      |
        |    |                        | рекомендаций, регламентах и   |
        |    |                        | руководствах, приведенных на  |
        |    |                        | сайте                         |
        |    |                        | https                         |
        |    |                        | ://smev3.gosuslugi.ru/portal/ |
        |    |                        | .                             |
        +----+------------------------+-------------------------------+

Результат:

Для работы с Программой сотрудник (программист) должен обладать компетенциями, перечисленными в таблице (см. Таблица 5) в том объеме, который требуется для выполнения поставленных перед ним производственных задач.

Таблица 5 Требования к персоналу (пример)

Компетенция

Уровень

1

Знакомство со СМЭВ 3

В объеме, изложенном в инструкциях, технологических стандартах, методических рекомендаций, регламентах и руководствах, приведенных на сайте https ://smev3.gosuslugi.ru/portal/ .

Блоки примечаний

Следует использовать два варианта примечаний:

  • .. attention:: - Внимание

  • .. note:: - Примечание

Пример:

.. attention:: Текст блока "Внимание!"

.. note:: - Текст блока "Примечание"

Результат:

Внимание

Текст блока «Внимание!»

Примечание

  • Текст блока «Примечание»

Вставка в текст исходного кода (листинг)

Исходный код можно добавить следующим образом:

  1. При помощи команды из двух двоеточий ::

Приведем пример исходного кода::


        Пример исходного кода
  1. При помощи команды .. code-block:: (рекомендуемый) т.к в этом случае можно указать язык программирования для исходного кода, например, json, sql, python и др.

Вставка исходного кода

Рисунок - 4 Вставка исходного кода

Подключение файлов

(в разработке)

В документацию можно подключить уже готовый rst-файл с общим описанием, например, раздел «Назначение системы» или «Копирайт», которые располагаются в папке doc_reuse. Следует учитывать, что общие файлы следует изменять только после согласования со всеми разработчиками документации т.к. изменение общего файла, повлечет изменения всех документов, в которые он был ранее включен.

Файл в документацию подключается директивой .. include::. Путь к подключаемому файлу указывается через слэш (slash) следующего вида /. Не используйте обратный слэш \

.. include:: modules/doc_smev3_adapter/smev3_adapter.rst

Комментарии

В ReST можно оставлять комментарии, которые отображаются только в исходном файле ReST. Комментарии создаются с помощью двух точек в начале предложения ... Для создания многострочных комментариев необходимо соблюдать отступ.


Важные особенности

Имена файлов в Sphinx

В процессе эксплуотации текущей версии выяснилась особенность, влияющая на нумерацию картинок, вложенных в файлы.

Примечание

Важно, чтобы имена файлов в разных разделах документации не повторялись

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

Но вот пример ошибки: Sphinx собирает сайт, заходит в папку folder_1 видит там файл folder_1/chapter_1.rst с картинками и раздает им порядковые номера, например с 1 по 3. Далее идет в файл folder_1/chapter_2.rst и также раздает картинкам порядковые номера, например с 1 по 5. Все здорово пока. Но потом он переходит в папку folder_2 (это уже другой документ), видит там файл folder_2/chapter_1.rst с картинками. И раздает им нумерацию. Но не с 1, а сразу с номера 4!! А в файле folder_2/chapter_2.rst начнет уже с 6 номера))

Чтобы избежать данной ситуации, файлы в одном разделе надо называть folder_1/chapter_1_xxx.rst, а в другом folder_2/chapter_2_xxx.rst. В таком случае, мы сможем избежать некорректной нумерации вложенных картинок (и таблиц) в разных документах.