Go to the first, previous, next, last section, table of contents.


Перечни и таблицы

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

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

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

К примеру, нумерованный перечень начинается командой @enumerate и завершается командой @end enumerate. Начинайте простой перечень командой @itemize, за которой следует форматирующая команда, например @bullet, и завершайте командой @end itemize.

Перед каждым пунктом перечня пишите команду @item или @itemx.

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

Это нумерованный перечень с теми же пуктами::

  1. Простые перечни с "горошинами" или без них.
  2. Нумерованные перечни, использующие числа или буквы.
  3. Таблицы из двух колонок с выделением.

А это двухколоночная таблица с теми же пунктами и их @-командами:

@itemize
Простые перечни с "горошинами" или без них.
@enumerate
Нумерованные перечни, использующие числа или буквы.
@table
@ftable
@vtable
Таблицы из двух колонок, возможно, с внесением в именной указатель.

@itemize: создание простых перечней

Команда @itemize создает последовательность абзацев с отступами; на левом поле выводится "горошина" или другой значок в начале каждого абзаца, для которого такой значок нужен.

Начинайте простой перечень, записывая команду @itemize в начале строки. После этой команды пишите символ или команду Texinfo, создающую значок. Обычно после @itemize вы будете писать @bullet, но вы также можете использовать @minus или любую команду или знак, превращающийся в Info-файле в одиночный знак. Если вы не хотите меток вообще, используйте @w. (Когда вы пишите команду-значок, такую как @bullet или @minus, после команды @itemize, вы можете опустить `{}'.) Если вы не указываете команду для создания значка, по умолчанию используется @bullet.

Пишите текст самих абзацев после @itemize вплоть до строки, содержащей команду @end itemize.

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

Обычно вы должны помещать перед командой @item пустую строку. Это создаст пустую строку в Info-файле. (TeX в любом случае вставит между строк подходящий пропуск.) За исключением случаев, когда пункты очень короткие, пустые строки улучшают внешний вид перечня.

Ниже приведен пример использования команды @itemize и порождаемый им вывод. @bullet создает в Info символ `*', а в TeX круглую точку ("горошину").

@itemize @bullet
@item
Какой-то текст.

@item
Какой-то
другой текст.
@end itemize

Это дает:

Простые перечни можно включать в другие перечни. Вот перечень, помеченный дефисами, включенный в перечень, помеченный "горошинами":

@itemize @bullet
@item
Первый пункт.

@itemize @minus
@item
Внутренний пункт.

@item
Второй внутренний пункт.
@end itemize

@item
Второй внешний пункт.
@end itemize

Это дает:

@enumerate: создание нумерованных перечней

Команда @enumerate похожа на @itemize (see section @itemize: создание простых перечней), только помечает пункты последовательными целыми числами или буквами, а не "горошинами".

Пишите команду @enumerate в начале строки. Эта команда не требует аргумента, но ей можно передать в качестве параметра число или букву. Без аргумента, @enumerate начинает перечень с номера `1'. С числовым аргументом, например `3', она начинает перечень с этого номера. С аргументом в виде строчной или прописной буквы, например `a' или `A', она начинает перечень с этой буквы.

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

Между пунктами перечня вам стоит помещать пустые строки. Как правило это облегчает чтение Info-файла.

Вот пример использования @enumerate без аргумента:

@enumerate
@item
Глубинные причины.

@item
Поверхностные причины.
@end enumerate

Это дает:

  1. Глубинные причины.
  2. Поверхностные причины.

Вот пример с аргументом 3:

@enumerate 3
@item
Предрасполагающие причины.

@item
Подталкивающие причины.

@item
Увековечивающие причины.
@end enumerate

Это дает:

  1. Предрасполагающие причины.
  2. Подталкивающие причины.
  3. Увековечивающие причины.

Ниже приведен краткий обзор возможностей. Обзор составлен в виде перечня с использованием @enumerate с аргументом a.

  1. @enumerate Без аргумента, создает нумерованный перечень начиная с номера 1.
  2. @enumerate положительное-целое С числовым (положительным) аргументом, начинает нумерованный перечень с заданного номера. Вы можете использовать это для продолжения перечня, прерванного другим текстом.
  3. @enumerate прописная-буква С аргументом в виде прописной буквы, начинает перечень, в котором пункты помечаются буквами начиная с заданной.
  4. @enumerate строчная-буква С аргументом в виде строчной буквы, начинает перечень, в котором пункты помечаются буквами начиная с заданной.

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

Создание таблиц из двух колонок

Команда @table похожа на @itemize (see section @itemize: создание простых перечней), но позволяет задать название или заголовок для каждого пункта. Эта команда используется для создания двухколоночных таблиц и особенно полезна для глоссариев, пояснений и обзоров ключей командной строки.

Пишите команду @table в начале строки и на той же строке пишите ее аргумент, который является "обозначающей" командой Texinfo, такой как @code, @samp, @var, или @kbd (see section Обозначение определений, команд, etc.). Хотя обычно этим командам нужно задавать аргумент в фигурных скобках, в данном случае вы должны писать имя команды без аргумента, так как аргумент предоставит команда @item. Эта команда применяется к тексту, идущему в первой колонке каждого пункта, и определяет стиль выделения этого текста. Например, если вы напишете @code, то текст первой колонки будет выделяться командой @code.

Вы также можете предпочесть использовать в качестве аргумента для @table команду @asis. Команда @asis ничего не делает; если вы примените ее после @table, TeX и команды форматирования для Info будут выводить текст первых колонок не производя выделение ("как есть").

(Команда @table может работать и другими командами, не перечисленными здесь. Однако вы можете использовать только те команды, которые обычно принимают аргументы в фигурных скобках.)

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

Обычно перед строкой @item стоит помещать пустую строку. Это создаст пустую строку в Info-файле. За исключением случаев, когда пункты очень короткие, пустые строки смотрятся лучше.

В приведенной ниже таблице текст первой колонки выделяется с помощью команды @samp.

@table @samp
@item foo
Это текст для
@samp{foo}.

@item bar
Текст для @samp{bar}.
@end table

Это дает:

`foo'
Это текст для `foo'.
`bar'
Текст для `bar'.

Если вы хотите описать два или более именованных пункта одним блоком текста, используйте команду @itemx. (See section @itemx.)

@ftable и @vtable

Команды @ftable и @vtable действуют так же, как и команда @table, за исключением того, что @ftable автоматически вносит каждый пункт в первой колонке в указатель функций, а @vtable -- в указатель переменных. Это упрощает задачу создания именных указателей. В именной указатель вносятся только пункты из той строки, где написана команда @item, и именно в той форме, в какой они записаны в этой строке. See section Именные указатели, для получения подробной информации об именных указателях.

Начинайте таблицу из двух колонок, использующую @ftable или @vtable, написав в начале строки эту @-команду и, на той же строке, команду Texinfo, такую как @code, точно так же, как вы написали бы для команды @table. Завершайте таблицу командой @end ftable или @end vtable на отдельной строке.

Пример использования @table смотрите в предыдущем разделе.

@itemx

Используйте в таблице команду @itemx, когда для одного пункта у вас есть два или более вхождения в первой колонке, каждое из которых должно появиться на отдельной строке. Команда @itemx может применяться для всех вхождений, кроме первого; @itemx всегда должна идти после команды @item. Команда @itemx действует точно так же, как и @item, но не создает дополнительного вертикального пропуска над текстом первой колонки.

Например,

@table @code
@item upcase
@itemx downcase
Две эти команды принимают в качестве аргумента символ
или строку и возвращают соответствующий символ или
строку в верхнем (нижнем) регистре.
@end table

Это дает:

upcase
downcase
Две эти команды принимают в качестве аргумента символ или строку и возвращают соответствующий символ или строку в верхнем (нижнем) регистре.

(Обратите также внимание, этот пример иллюстрирует многострочный поясняющий текст в двухколоночной таблице.)

Таблицы из многих колонок

Команда @multitable позволяет создавать таблицы с произвольным числом колонок, каждая из которых имеет нужную вам ширину.

Вы определяете ширину колонок в самой строке @multitable и пишите каждую строку самой таблицы после команды @item, разделяя колонки командой @tab. Наконец, @end multitable завершает таблицу. Подробности описаны в следующих разделах.

Ширина колонок многоколоночных таблиц

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

  1. Чтобы задать ширины колонок как доли от полной длины строки, напишите @columnfractions и десятичные числа (предположительно меньшие единицы) после команды @multitable, как здесь:
    @multitable @columnfractions .33 .33 .33
    
    Доли не обязательно должны давать в сумме точно 1.0, как например эти. Это позволяет вам создавать таблицы, которые не требуют полной длины строки. Вы можете писать первой цифрой ноль, если хотите.
  2. Для задания строки-прототипа напишите после команды @multitable самое длинное вхождение для каждой колонки, заключенное в фигурные скобки. Например:
    @multitable {текст для первой колонки} {для второй колонки}
    
    Тогда первая колонка будет иметь ширину набранной строки `текст для первой колонки', а вторая -- ширину `для второй колонки'. Вхождения прототипа не обязательно должны появиться в самой таблице. Хотя в этом примере мы использовали простой текст, вхождения прототипа могут содержать команды Texinfo; вероятно, особенно полезны будут команды вроде @code.

Строки многоколоночных таблиц

После команды для @multitable, задающей ширину колонок (смотрите предыдущий раздел), вы начинаете каждую строку в теле таблицы командой @item и разделяете вхождения колонок командой @tab. Разрывы строк не обрабатываются особо в теле таблицы, и вы можете при необходимости разбивать входные строки в исходном файле.

Вот полный пример таблицы из нескольких колонок (текст из Руководства по GNU Emacs, @xref{Разделение окон, , , @external{emacs}, Руководство по The GNU Emacs}):

@multitable @columnfractions .15 .45 .4
@item Ключ @tab Команда @tab Описание
@item C-x 2
@tab @code{split-window-vertically}
@tab Разделить выбранное окно на два,
находящихся одно над другим.
@item C-x 3
@tab @code{split-window-horizontally}
@tab Разделить выбранное окно на два,
находящихся одно рядом с другим.
@item C-Mouse-2
@tab
@tab На строке режима или полосе прокрутки окна,
разделить это окно.
@end multitable

дает:
Ключ Команда Описание
C-x 2 split-window-vertically Разделить выбранное окно на два, находящихся одно над другим.
C-x 3 split-window-horizontally Разделить выбранное окно на два, находящихся одно рядом с другим.
C-Mouse-2 На строке режима или полосе прокрутки окна, разделить это окно.


Go to the first, previous, next, last section, table of contents.