Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения
... XML. Обратите внимание, что в отличие от оригинального QuickDoc колонны вложены в [клетки...].

Предоставление таблиц id - новая функция для быстрой книги 1.5. Как и в случае с разделами, id является факультативным. Если таблица имеет заголовок, но без id, id будет создан из заголовка. Таблица выше может быть связана с использованием:

[link quickbook.syntax.block.tables.id link to table]

которые будут генерировать:

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

Синтакс является свободным и позволяет хорошо отформатировать большие клетки. Пример:

[table Table with fat cells
    [[Heading 1] [Heading 2]]
    [
        [Row 0, Col 0: a small cell]
        [
            Row 0, Col 1: a big fat cell with paragraphs
            Boost provides free peer-reviewed portable C++ source libraries.
            We emphasize libraries that work well with the C++ Standard Library.
            Boost libraries are intended to be widely useful, and usable across
            a broad spectrum of applications. The Boost license encourages both
            commercial and non-commercial use.
        ]
    ]
    [
        [Row 1, Col 0: a small cell]
        [Row 1, Col 1: a small cell]
    ]
]

и таким образом:

Table 47.5. Table with fat cells

Block Level Elements

Boost , The Boost C++ Libraries BoostBook Documentation Subset , Chapter 47. Quickbook 1.6

Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

PrevUpHomeNext

Block Level Elements

Вы можете включить еще один файл XML с:

[xinclude file.xml]

Это полезно, когда файл.xml был создан Doxygen и содержит ваш справочный раздел.

xinclude пути обычно используются без изменений в сгенерированной документации, которая не будет работать, если вы хотите, чтобы они были относительны к текущему файлу быстрой книги. Quickbook может добавить атрибут xml:base к документации бустера, чтобы указать, где должны быть найдены файлы xinclude. Например, если вы хотите, чтобы они были относительно текущего файла Fastbook:

[article Article with xincludes
[quickbook 1.6]
[xmlbase .]
]
[xinclude file.xml]

Теперь xinclude должен работать, если file.xml находится в том же каталоге, что и файл с быстрой книгой. Хотя это может не работать, если вы распространяете сгенерированные файлы (так как их относительные каталоги могут измениться).

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

quickbook article.qbk --output-file=output/article.xml

Это будет генерировать корневой тег бульвара:

<article id="article_with_xincludes"
    last-revision="$Date: 2013/08/20 08:26:48 $"
    xml:base=".."
    xmlns:xi="http://www.w3.org/2001/XInclude">

Поскольку xml:base настроена на .., процессор xml будет знать, чтобы посмотреть в родительском каталоге, чтобы найти file.xml, который поставляется через xi:include.

Пункты начинаются с левого удара и заканчиваются двумя или более новыми линиями. Для пунктов не требуется разметки. QuickBook автоматически обнаруживает пункты из контекста. Блоковые отметины [раздел, эндосект, h1, h2, h3, h4, h5, h6, блюрб, (блок-цитирование) ':', pre, def, table and include ] также могут прекратить действие пункта. Это новый пункт...

# One
# Two
# Three

будет генерировать:

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

Иерархии списка поддерживаются. Пример:

# One
# Two
# Three
    # Three.a
    # Three.b
    # Three.c
# Four
    # Four.a
        # Four.a.i
        # Four.a.ii
# Five

будет генерировать:

  1. Один
  2. Два
  3. Три
    1. Три.а
    2. Три. b
    3. Три. c
  4. Четвертое
    1. Four.a
      1. Four.a.i
      2. Four.a.ii
  5. Пять

Длинные линии будут обернуты соответствующим образом. Пример:

# A short item.
# A very long item. A very long item. A very long item.
  A very long item. A very long item. A very long item.
  A very long item. A very long item. A very long item.
  A very long item. A very long item. A very long item.
  A very long item. A very long item. A very long item.
# A short item.
  1. Короткий пункт.
  2. Очень длинный пункт. Очень длинный пункт. Очень длинный пункт. Очень длинный пункт. Очень длинный пункт. Очень длинный пункт. Очень длинный пункт. Очень длинный пункт. Очень длинный пункт. Очень длинный пункт. Очень длинный пункт. Очень длинный пункт. Очень длинный пункт. Очень длинный пункт. Очень длинный пункт.
  3. Короткий пункт.
* First
* Second
* Third

будет генерировать:

  • Первый
  • Вторая
  • Третий

Поддерживаются смешанные списки (заказные и неупорядоченные). Пример:

# One
# Two
# Three
    * Three.a
    * Three.b
    * Three.c
# Four

будет генерировать:

  1. Один
  2. Два
  3. Три
    • Три.а
    • Три. b
    • Три. c
  4. Четыре

И...

# 1
    * 1.a
        # 1.a.1
        # 1.a.2
    * 1.b
# 2
    * 2.a
    * 2.b
        # 2.b.1
        # 2.b.2
            * 2.b.2.a
            * 2.b.2.b

будет генерировать:

  1. 1
    • 1.a
      1. 1.a.1
      2. 1.a.2
    • 1.b
  2. 2
    • 2.a
    • 2.b
      1. 2.b.1
      2. 2.b.2
        • 2.b.2.a
        • 2.b.2.b

Иногда разметка списка вики может быть сложной для использования, особенно если вы хотите включить более сложную разметку со списком. Таким образом, в Fastbook 1.6, альтернативный способ разметки списков введенных:

[ordered_list [item1][item2]]

эквивалентно:

# item1
# item2

И:

[itemized_list [item1][item2]]

эквивалентно:

* item1
* item2

Предварительный код начинается с пространства или вкладки. Код будет выделен синтаксисом согласно текущему режиму Источник:

#include <iostream>
int main()
{
    // Sample code
    std::cout << "Hello, World\n";
    return 0;
}
import cgi
def cookForHtml(text):
    '''"Cooks" the input text for HTML.'''
    return cgi.escape(text)

Macros, которые уже определены, расширены в исходном коде. Пример:

[def __array__ [@http://www.boost.org/doc/html/array/reference.html array]]
[def __boost__ [@http://www.boost.org/libs/libraries.htm boost]]
    using __boost__::__array__;

Генераты:

using boost::array;

Внутри кода, кодовые блоки и встроенный код, QuickBook не позволяет любой разметке избегать конфликтов с целевым синтаксисом (например, c++). В случае, если вам нужно переключиться на разметку QuickBook в коде, вы можете сделать это с использованием конкретного языка escape-back delimiter. In C++ and Python, the delimiter is the double del (back-quote): «``» and «``». Пример:

void foo()
{
}

Будут генерировать:

void foo()
{
}

При побеге от кода к QuickBook допускаются только разметки уровня фразы. Отметины уровня блока, такие как списки, таблицы и т.д., не допускаются.

Иногда вы не хотите, чтобы какой-то предопределенный текст был рассмотрен как исходный код. В таких случаях используйте [pre...] блок разметки.

[pre
    Some *preformatted* text                    Some *preformatted* text
        Some *preformatted* text            Some *preformatted* text
            Some *preformatted* text    Some *preformatted* text
]

Пространства, вкладки и новинки становятся таковыми. В отличие от всех разметок уровня быстрых блоков, pre (и Code) являются единственными, которые допускают несколько новых линий. Вышеприведенная маркировка будет генерировать:

Some preformatted text                    Some preformatted text
    Some preformatted text            Some preformatted text
        Some preformatted text    Some preformatted text

Обратите внимание, что в отличие от Code, разметка фраз, таких как шрифт, по-прежнему разрешена внутри блоков pre.

[:sometext...]

Включен этот пункт. Это относится только к одному пункту.

[note This is a note]
[tip This is a tip]
[important This is important]
[caution This is a caution]
[warning This is a warning]

генерирует DocBook напоминания:

[Note] Note

Это записка

[Tip] Tip

Это совет

[Important] Important

Это важно

[Caution] Caution

Это предупреждение

[Warning] Warning

Это - предупреждение

Это единственные напоминания, поддерживаемые DocBook. Так, например, [информация] Это некоторая информация] вряд ли даст желаемый эффект.

[h1 Heading 1]
[h2 Heading 2]
[h3 Heading 3]
[h4 Heading 4]
[h5 Heading 5]
[h6 Heading 6]

Heading 1

Heading 2

Heading 3

Heading 4
Heading 5

Heading 6

Вы можете указать id для заголовка:

[h1:heading_id A heading to link to]

Чтобы связать его, вам нужно будет включить id раздела обложки:

[link document_id.section_id.heading_id The link text]

Хотя вы можете предшествовать заголовку anchor, если хотите использовать независимое местоположение.

Если заголовок не имеет id, то он будет автоматически генерироваться с нормальным именем с name="document_id.section_id.нормализованным_header_text" (т.е. действительные символы a-z, A-Z, 0-9 и _. Все невалидные символы преобразуются в подчеркивание, и все верхняя часть преобразуются в нижнюю. Например: Заголовок 1 в разделе 2 будет нормализован до section_2.heading_1. Вы можете использовать:

[link document_id.section_id.normalized_header_text The link text]

чтобы связать их. Дополнительные сведения см. в разделе Ссылки на сервер и Раздел.

[Note] Note

Указание заголовка ids - это функция с быстрой книгой 1.6, более ранние версии не поддерживают их.

В случаях, когда вы не хотите заботиться об уровне заголовка (от 1 до 6), вы можете использовать Generic Heading:

[heading Heading]

Generic Heading предполагает уровень, плюс один, самого внутреннего участка, где он размещен. Например, если он помещен в крайнюю часть, то он предполагает h2.

Заголовки часто используются в качестве альтернативы разделам. Он используется, особенно если вы не хотите начинать новый раздел. Однако во многих случаях заголовки в конкретном разделе просто плоские. Пример:

[section A]
[h2 X]
[h2:link_id Y]
[h2 Z]
[endsect]

Здесь мы используем h2, предполагая, что раздел А является самым внешним уровнем. Если он помещен на внутреннем уровне, вам придется использовать h3, h4 и т.д. в зависимости от того, где находится раздел. В целом это уровень секции плюс один. Однако довольно утомительно сканировать уровень секции каждый раз. Если переписать пример выше, как показано ниже, это будет автоматически:

[section A]
[heading X]
[heading Y]
[heading Z]
[endsect]

Они работают хорошо, независимо от того, где вы их размещаете. Вы можете изменить разделы по желанию без какой-либо дополнительной работы, чтобы обеспечить правильный уровень заголовка. На самом деле, с секцией и руководство у вас есть все, что вам нужно. h1.h6 становится избыточным. h1.h6 может быть обесценено в будущем.

[def macro_identifier some text]

Когда определяется макрос, идентификатор заменяет текст где угодно в файле, в пунктах, в разметках и т. д. макро_идентификатор является строкой небелых символов пространства, за исключением '. Макро не может следовать алфавитному характеру или акценту. сменный текст может быть любой фразой (даже отмеченной). Пример:

[def sf_logo [$http://sourceforge.net/sflogo.php?group_id=28447&amp;type=1]]
sf_logo

Теперь везде помещается sf_logo, картина будет встроена.

[Tip] Tip

Это хорошая идея, чтобы использовать макроидентификаторы, которые различимы. Например, в этом документе макроидентификаторы имеют два ведущих и следящих значения (например, __spirit__). Причина заключается в том, чтобы избежать нежелательной замены макроса.

Ссылки (URLS) и изображения являются хорошими кандидатами на макросы. 1 Они имеют тенденцию сильно меняться. Это хорошая идея, чтобы разместить все ссылки и изображения в одном месте рядом с вершиной, чтобы сделать изменения легко. 2 Синтакс не очень хорош. Проще читать и писать, например, __spirit__, чем [@http://spirit.sourceforge.net Spirit].

Еще несколько примеров:

[def :-)            [$theme/smiley.png]]
[def __spirit__     [@http://spirit.sourceforge.net Spirit]]

(См. Images и Links)

Ссылка на эти макросы:

Hi __spirit__  :-)

будет генерировать это:

Привет Спирит

Quickbook имеет некоторые предопределенные макросы, которые вы уже можете использовать.

Table 47.3. Predefined Macros

Macro

Значение

Пример

__DATE__

Дата

2016-Sep-21

__TIME__

Текущее время

02:37:38 PM

__FILENAME__

Имя источника Quickbook

block.qbk


Шаблоны обеспечивают более универсальный механизм замены текста. Шаблоны пригодятся, когда вам нужно создать параметризируемый, многолинейный, котелый текст, который вы указываете один раз и много раз расширять. Шаблоны принимают один или несколько аргументов. Эти аргументы действуют как держатели места для замены текста. В отличие от простых макросов, которые ограничиваются разметкой уровня фразы, шаблоны могут содержать разметку уровня блока (например, пункты, блоки кода и таблицы).

Пример шаблона:

[template person[name age what]
Hi, my name is [name]. I am [age] years old. I am a [what].
]

Template Identifier

Идентификаторы шаблонов могут состоять из:

  • Первоначальный алфавитный характер или подчеркивание, за которым следуют нулевые или более буквенно-цифровые символы или подчеркивание. Это похоже на ваш типичный идентификатор C/C++.
  • Однозначная пунктуация характера (неафиолетовый печатный характер)

Formal Template Arguments

Формальные аргументы шаблона - это идентификаторы, состоящие из начального алфавитного характера или подчеркивания, за которыми следуют нулевые или более буквенно-цифровые символы или подчеркивание. Это похоже на ваш типичный идентификатор C/C++.

Формальный аргумент шаблона временно скрывает шаблон того же имени в точке, где шаблон расширяется. Обратите внимание, что тело лица шаблона выше относится к имя age и what как [имя] [возраст] и [что]. имя age и what являются шаблонами, которые существуют в течение времени вызова шаблона.

Template Body

Тело шаблона может быть практически любым блоком QuickBook или фразой. На самом деле есть две формы. Шаблоны могут быть фразой или уровнем блока. Шаблоны Фразы имеют форму:

[template sample[arg1 arg2...argN] replacement text... ]

Шаблоны блоков имеют форму:

[template sample[arg1 arg2...argN]
replacement text...
]

Основное правило заключается в следующем: если новая линия сразу же следует за списком аргументов, то это шаблон блока, иначе это шаблон фразы. Шаблоны фраз обычно расширяются как часть фраз. Как и макросы, элементы уровня блоков не допускаются в шаблонах фраз.

Template Expansion

Вы расширяете шаблон таким образом:

[template_identifier arg1..arg2..arg3]

При расширении шаблона вы предоставляете реальные аргументы. Шаблон будет расширен с вашими аргументами. Пример:

[person James Bond..39..Spy]
[person Santa Clause..87..Big Red Fatso]

Что расширится до:

Привет, меня зовут Джеймс Бонд. Мне 39 лет. Я шпион.

Привет, меня зовут Санта Клаус. Мне 87 лет. Я Большой Красный Фатсо.

[Caution] Caution

Предостережение: шаблоны рекурсивны. Шаблон может назвать другой шаблон или даже сам по себе, прямо или косвенно. В QuickBook (пока) нет контрольных структур, поэтому это всегда будет означать бесконечное восстановление. QuickBook может обнаружить эту ситуацию и сообщить об ошибке, если рекурсия превышает определенный предел.

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

Обратите внимание, что шаблоны и параметры шаблонов не могут быть расширены везде, только там, где текст интерпретируется как фраза. Таким образом, они не могут быть расширены в таких местах, как заголовки таблиц и URL ссылки. Если вы хотите использовать шаблон для создания ссылки на основе параметра шаблона, вы не можете использовать нормальную ссылку и вместо этого должны использовать сбежавший docbook. Пример:

[template boost_ticket[key] '''<ulink url="https://svn.boost.org/trac/boost/ticket/'''[key]'''">#'''[key]'''</ulink>''']
[boost_ticket 2035]

расширится до:

#2035

[Caution] Caution

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

Nullary Templates

Нуллярные шаблоны выглядят и действуют как простые макросы. Пример:

[template alpha[]&apos;&apos;&apos;&amp;#945;&apos;&apos;&apos;]
[template beta[]&apos;&apos;&apos;&amp;#946;&apos;&apos;&apos;]

Расширение:

Some squigles...[*[alpha][beta]]

У нас есть:

αβ

Различие с макросами есть

  • Прямой синтаксис расширения template. Это преимущество, потому что теперь нам не нужно использовать скрытые условности именования, такие как двойные акценты (например, __alpha__), чтобы избежать нежелательной замены макро.
  • Шаблон расширяется в точке, где он используется. Макро расширяется сразу в момент его объявления. Это тонко и может вызвать небольшое различие в поведении, особенно если вы ссылаетесь на другие макросы и шаблоны в организме.

Пустые скобки после идентификатора шаблона (alpha []) не указывают никаких аргументов. Если тело шаблона не выглядит как список аргументов шаблона, мы можем опустить пустые скобки. Пример:

[template aristotle_quote Aristotle: [*['Education is the best provision
for the journey to old age.]]]

Расширение:

Here's a quote from [aristotle_quote].

У нас есть:

Вот цитата Аристотеля: Образование - лучшее положение для путешествия в старость..

Недостатком является то, что вы не можете избежать пространства между идентификатором шаблона, aristotle_quote, и шаблонным кузовом "Aristotle...". Это пространство будет частью тела шаблона. Если это пространство является нежелательным, используйте пустые скобки или используйте космический выход: «\». Пример:

[template tag\ _tag]

Затем расширяется:

`struct` x[tag];

У нас есть:

struct x_tag;

У тебя есть несколько способов сделать это. Хотя я предпочитаю прямые пустые скобки.

Simple Arguments

Как уже упоминалось, аргументы разделены двойной точкой ".. В качестве альтернативы, если двойная точка не используется и ожидается более одного аргумента, QuickBook использует белое пространство для разделения аргументов, следуя этой логике:

  • Перерыв последнего аргумента на два, на первом найденном пространстве (", "n", "t" или "r").
  • Повторяйте до тех пор, пока не будет достаточно аргументов или если не будет найдено больше пространств (в этом случае сообщается об ошибке).

Например:

[template simple[a b c d] [a][b][c][d]]
[simple w x y z]

будет производить:

wxyz

«w x y z» изначально рассматривается как один аргумент, потому что мы не поставляли ». сепараторы. Однако, поскольку простая ожидает 4 аргумента, «w x y z» разрушается итеративно (применяя логику выше), пока у нас нет «w», «x», «y» и «z».

Быстрее! Книга только пытается получить аргументы, которые ей нужны. Например:

[simple w x y z trail]

будет производить:

след wxyz

Аргументы: "w", "x", "y" и "z" след.

[Caution] Caution

Описанное здесь поведение для QuickBook 1.5. В более старых версиях вы можете использовать как двойную точку, так и белое пространство в качестве сепараторов в одном и том же вызове шаблона. Если ваш документ отмечен как более старая версия, он будет использовать старое поведение, которое описано в документации QuickBook 1.4.

Punctuation Templates

С шаблонами одна из наших целей - позволить нам переписать QuickBook в QuickBook (как библиотека qbk). Для того, чтобы это произошло, нам нужно разместить шаблоны пунктуации одного персонажа, которые довольно распространены в QuickBook. Вы, возможно, заметили, что однозначные пунктуации символов разрешены как шаблонные идентификаторы. Пример:

[template ![bar] <hey>[bar]</hey>]

Теперь, расширяя это:

[!baz]

Мы будем:

<hey>baz</hey>
[blurb :-) [*An eye catching advertisement or note...]
    Spirit is an object-oriented recursive-descent parser generator framework
    implemented using template meta-programming techniques. Expression templates
    allow us to approximate the syntax of Extended Backus-Normal Form (EBNF)
    completely in C++.
]

будет генерировать это:

[Note] Note

Предпочтение призывы, где это уместно.

[table:id A Simple Table
    [[Heading 1] [Heading 2] [Heading 3]]
    [[R0-C0]     [R0-C1]     [R0-C2]]
    [[R1-C0]     [R1-C1]     [R1-C2]]
    [[R2-C0]     [R2-C1]     [R2-C2]]
]

будет генерировать:

Table 47.4. A Simple Table

Головка 1

Головка 2

Головка 3

R0-C0

R0-C1

R0-C2

R1-C0

R1-C1

R1-C2

R2-C0

R2-C1

R2-C2


Название таблицы является факультативным. Первая строка таблицы автоматически рассматривается как заголовок таблицы; то есть она завернута в теги

Головка 1

Головка 2

Row 0, Col 0: небольшая клетка

Row 0, Col 1: большая жировая клетка с пунктами

Boost предоставляет бесплатные рецензируемые портативные библиотеки C++. Мы подчеркиваем библиотеки, которые хорошо работают с C++ Standard Library. Библиотеки, предназначенные для широкого использования и использования в широком спектре приложений. Лицензия Boost поощряет как коммерческое, так и некоммерческое использование.

Row 1, Col 0: небольшая клетка

Row 1, Col 1: небольшая клетка


Вот как иметь предопределенные блоки кода в таблице:

[table Table with code
    [[Comment] [Code]]
    [
        [My first program]
        [``
            #include <iostream>
            int main()
            {
                std::cout << "Hello, World!" << std::endl;
                return 0;
            }
        ``]
    ]
]

Table 47.6. Table with code

Комментарий

Код

Моя первая программа

#include  int main() { std::cout << "Hello, World!" << std::endl; return 0; } 

Variable Lists

[variablelist A Variable List
    [[term 1] [The definition of term 1]]
    [[term 2] [The definition of term 2]]
    [[term 3] [
    The definition of term 3.
    Definitions may contain paragraphs.
    ]]
]

будет генерировать:

A Variable List

term 1

Определение термина 1

term 2

Определение термина 2

term 3

Определение термина 3.

Определения могут содержать пункты.

Правила для переменных списков такие же, как и для таблиц, за исключением того, что допускается только 2 "колонки". Первая колонка содержит термины, а вторая колонка содержит определения. Те, кто знаком с HTML, признают это как «список определений».

Include

Вы можете включить один файл QuickBook из другого. Синтакс просто:

[include someother.qbk]

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

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

[Note] Note

В Fastbook 1.5 и более ранних шаблонах не были включены в включенные файлы. Если вы хотите использовать шаблоны или макросы из файла в быстрой книге 1.6, вместо этого используйте импорт.

Директива [включает] позволяет указать документ id для использования в включенном файле. Вы можете указать id следующим образом:

[include:someid someother.qbk]

Все автогенерированные якори будут использовать документ id в качестве уникального префикса. Так что, например, если есть топ-секции в какой-то другой. qbk названный «Intro», названный якорь для этого раздела будет «someid.intro», и вы можете связать его с [ссылка someid.intro] Intro].

Если включенный файл имеет блок docinfo, id, указанный в директиве [include], перепишет его.

Вы также можете включить файлы C, C++ и python. Это будет включать любые блоки быстрой книги в файл, которые не находятся внутри названных фрагментов кода. См. раздел Import для синтаксических деталей. Например, скажите, что вы включили этот файл:

/**
 * Hello world example
 */
// In this comment, the backtick indicates that this is a
// quickbook source block that will be included.
/*`
First include the appropriate header: [hello_includes]
Then write your main function: [hello_main]
*/
// This defines a code snippet, the syntax is
// described in the import section. It's available
// in the whole of this source file, not just after
// its definition.
//[hello_includes
#include <iostream>
//]
//[hello_main
int main() {
    std::cout << "Hello, trivial example" << std::endl;
}
//]

Она будет генерировать:

First include the appropriate header:
    #include <iostream>
Then write your main function:
    int main() {
        std::cout << "Hello, trivial example" << std::endl;
    }

Import

В быстрой книге 1.6 и позже, если вы хотите использовать шаблон, макро или фрагмент кода из файла, вам нужно импортировать его. Это не будет включать какой-либо контент из этого файла, но будет включать шаблоны, макросы и фрагменты кода в область текущего файла.

С файлами с быстрой книгой это позволяет создавать шаблоны и макробиблиотеки. Для python (упоминается расширением .py), C или C++, это позволяет включать фрагменты кода из исходных файлов, так что ваши примеры кода могут быть сохранены до даты и полностью протестированы.

Example

Вы можете легко импортировать фрагменты кода из исходного кода в свой QuickBook. Ниже показано, как это делается:

[import ../test/stub.cpp]
[foo]
[bar]

Первая строка:

[import ../test/stub.cpp]

собирает специально отмеченные фрагменты кода из stub.cpp и помещает их в ваш файл QuickBook в качестве виртуальных шаблонов. Каждый из специально обозначенных фрагментов кода имеет имя (например, foo и bar в приведенном выше примере). Это должен быть идентификатор шаблона для этого конкретного фрагмента кода. Вторая и третья строки выше делают фактическое расширение шаблона:

[foo]
[bar]

И результат:

Это функция foo.

Это описание может иметь пункты...

И любой быстрый блок-разметка.

std::string foo()
{
    // return 'em, foo man!
    return "foo";
}

Это бар функция

std::string bar()
{
    // return 'em, bar man!
    return "bar";
}

Небольшой текст здесь

Code Snippet Markup

Обратите внимание на то, как фрагменты кода в stub.cpp замечаются. Мы используем отличительные комментарии после формы:

//[id
some code here
//]

Первая линия комментариев выше инициирует названный код-сниппет. Этот префикс не будет виден в быстрой книге. Весь код-сниппет между /[id и //] будет добавлен в виде шаблона в быстрой книге с именем id. Комментарий /] завершает код-сниппет Это тоже не будет видно в быстрой книге.

Special Comments

Специальные комментарии формы:

//` some [*quickbook] markup here

и:

/*` some [*quickbook] markup here */

quickBook. Это может содержать быструю книгу блоки (например, разделы, пункты, таблицы и т.д.). В первом случае первичный удар, клещ и белое пространство игнорируются. Во-вторых, первоначальный удар звездой и последний удар звезды должны быть проигнорированы.

Специальные комментарии формы:

/*<- this C++ comment will be ignored ->*/

или

/*<-*/ "this c++ code  will be ignored" /*->*/

или

//<-
private:
    int some_member;
//->

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

Комментарии этой формы:

//=int main() {}

или

/*=foo()*/

будет отображаться как код, который не в комментариях. Это позволяет включить какой-то код в фрагмент, но не использовать его при составлении вашего примера.

Callouts

Специальные комментарии формы:

/*< some [*quickbook] markup here >*/

будут считаться призывами. Они будут собраны, пронумерованы и выведены в виде «кричащего клопа» (малая иконка с номером). После того, как весь фрагмент будет парсирован, список вызовов генерируется. Подробнее см. Callouts. Пример:

std::string foo_bar() 1
{
    return "foo-bar"; 2
}

1

Mythical FooBar. Подробнее

2

верните их!

Это фактический код:

//[ foo_bar
std::string foo_bar() /*< The /Mythical/ FooBar.
                      See [@http://en.wikipedia.org/wiki/Foobar Foobar for details] >*/
{
    return "foo-bar"; /*< return 'em, foo-bar man! >*/
}
//]

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

/*<< some [*quickbook] markup here >>*/

Это линейная версия призыва. При этом «жучок» помещается слева от блока кода, вдали от фактического кода. Размещая его на дальнем левом углу, код становится неисследованным. Пример:

class x
{
public:
    1x() : n(0)
    {
    }
    2~x()
    {
    }
    3int get() const
    {
        return n;
    }
    4void set(int n_)
    {
        n = n_;
    }
};

1

Конструктор

2

Destructor

3

Получить переменную n

4

Установить переменную n

Смотрите реальный код здесь: tools/quickbook/test/stub.cpp

Plain blocks

block является простым блок-элементом, который не обертывает его содержимое ни в docbook, ни в бустерах. Это может быть полезно при использовании сбежавших блок-тегов docbook, таких как:

[template chapter[title]
[block'''<chapter><title>'''[title]'''</title>''']
]
[template chapterend
[block'''</chapter>''']
]
[chapter An example chapter]
Content
[chapterend]

Без элемента block шаблоны chapter и chapterend будут обернуты в теги абзацев.

[Note] Note

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


PrevUpHomeNext

Статья Block Level Elements раздела The Boost C++ Libraries BoostBook Documentation Subset Chapter 47. Quickbook 1.6 может быть полезна для разработчиков на c++ и boost.




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: Chapter 47. Quickbook 1.6 ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-30 11:47:00
2025-05-19 23:41:09/0.020793914794922/1