Написание документации, часть II: LaTeX плюс latex2html
|
LaTeX Позвольте мне сначало рассказать, что такое LaTeX и с какими
целями он создавался. LaTeX -- это огромный пакет дополнительных
макросов для системы предпечатной типографской подготовки TeX,
созданной профессором Доналдом Кнутом. Если не слишком
придираться, то говоря "система LaTeX" или просто
"LaTeX", мы будем иметь в виду "TeX плюс все
макросы LaTeX". Собственно LaTeX был написан Лесли Лэмпортом
[Laslie Lamport], который решил, что хотя TeX и очень могуч,
но его слишком сложно использовать для повседневных задач.
За основу он взял систему Scribe. Scribe делает упор на логическую
структуру документа вместо физической разметки (для тех читателей,
которые хорошо разбираются в HTML добавлю, что тэг LaTeX -- как и классический plain TeX -- позволяет на обычном компьютере создавать, готовить для печати и распечатывать документы с полиграфическим качеством оформления. Замысел был таков: автор готовит статьи или даже книги на своем личном компьютере, а затем относит дискету в полиграфический салон для того, чтобы документ был распечатан на фотонаборной машине высокого разрешения, и, наконец, получает переплетенную книгу (... затем рассылает ее во все книжные магазины квадранта альфа, делает на этом миллионы, а через два года получает Межгалактическую Пулицеровскую премию. -- ну хорошо, я несколько преувеличиваю:). В последующих раздела я изложу очень короткое введение в LaTeX, но всем, кто хочет изучить LaTeX, я бы рекомендовал Не столь краткое введение в LaTeX [Not So Short Introduction to LaTeX]. Этот 95-страничный документ можно бесплатно скачать из Сети: смотрите в Дополнительные источники. LaTeX устанавливается вместес большинс твом современных Linux-дистрибутивов. Проверить правильность его установки можно с помощью команды: latex --version Моя система отзывается на нее так: TeX (Web2C 7.3.1) 3.14159 kpathsea version 3.3.1 Copyright (C) 1999 D.E. Knuth. Kpathsea is copyright (C) 1999 Free Software Foundation, Inc. There is NO warranty. Redistribution of this software is covered by the terms of both the TeX copyright and the GNU General Public License. For more information about these matters, see the files named COPYING and the TeX source. Primary author of TeX: D.E. Knuth. Kpathsea written by Karl Berry and others. Общая структура документаВот пример очень короткого, но, тем не менее, полноценного документа LaTeX: \documentclass{article} % preamble \pagestyle{empty} \begin{document} % body Собственно текст документа. \end{document} Каждый документ LaTeX состоит из преамбулы [preamle] и тела
[body]. Преамбула начинается с определения класса документа,
задаваемого
Преамбула данного выше примера содержит лишь одну команду:
Синтаксис
1 Я короткое предложение из первого абзаца. 2 3 А я единственное предложение второго абзаца. 1 Я короткое предложение 2 из первого абзаца. 3 4 А я 5 единственное предложение 6 второго 7 абзаца.Group arguments together 1 Я короткое предложение из первого абзаца. 2 3 4 А я единственное 5 предложение 6 второго абзаца. Hessenberg-% Triangular % <- обратите внимание на пробел непосредственно перед символом % Reduction Hessenberg-Triangular Reduction \raggedleft{} % нет аргументов \raggedleft % тоже самое, что и выше \makebox{Text inside of a box.} % единственный аргумент \parbox{160pt}{This text is typeset inside of a box.} % два аргумента \parbox[t]{10cm}{Это абзац, выровненный по верхнему краю.} % одна опция, два аргумента \begin{flushright} \begin{quotation} Letters are things, \\ not pictures of things. \\ -- Eric Gill \end{quotation} \end{flushright} Задание структуры документа
В зависимости от documentclass LaTeX знает о трех или четырех
уровнях заголовков. В класс
Обратите внимание, что как и в POD, который обсуждается в Части I, команды секционирования работают подобно разделителям. Они не группируют текст с помощью маркировки начала и окончания раздела, но простое их появление задает деление текста на группы. Как вы увидите в следующем месяце, в DocBook все иначе. СпискиВ состав LaTeX входит три окружения для создания списков:
Они соответствуют ненумерованному списку, нумерованному списку и списку
определений в HTML или спискам
Собственно элементы списка вводятся командой " В списке описаний необязательный параметр, задаваемый команде " Примеры:
Что может сделать для Вас emacs: \begin{itemize} \item Вырезание и вставка блоков текста \item Переформатирование и выравнивание абзацев \item Проверка правописания в документах \end{itemize} Первый запуск emacs \begin{enumerate} \item Запускаем emacs из командной строки: \texttt{\$ emacs} emacs покажет экран запуска, а затем переключится в буфер под названием \texttt{*scratch*}. \item Нажмите клавишу~Control, а затем нажмите~H. Внизу экрана появится приглашение или окно emacs. \texttt{C-h (Введите ?, чтобы увидеть другие опции)-} \item Для того, чтобы запустить учебник emacs, нажмите~T . \end{enumerate} Некоторые команды emacs: \begin{description} \item[C-x C-c] Выйти из emacs. \item[C-x f] Открыть файл. \item[C-x r k] Стереть [kill] прямоугольник, заданный отметкой и указателем, т.е. активной областью [active region]. \end{description} Перекрестные ссылки Для любой перекрестной ссылки требуется две части: та, которая
"отсылает" (собственно ссылка -- link) и та, на которую
указывается (привязка или метка -- anchor). Привязки в LaTeX'е
вставляеются командой Примеры использования \section{Установка}\label{section:setup} ... \section{Заключение}\label{section:summary} Как было сказано в разделе~\ref{section:setup} 'Установка', ... Пример использования \section{Установка}\label{section:setup} Сталь, используемый в пробной камере, легирована Ti (0,5\%), Cr (0,1\%) и Mn (0,1\%).\label{definition:chamber-alloy} \section{Эксперименты}\label{section:experiments} Для некоторых пробных камер, выполненых из нержавеющей стали (см. точный состав на стр.~\pageref{definition:chamber-alloy}), ... Определение собственных команд и окруженийОдним из главных преимуществ системы предпечатной подготовки LaTeX является то, что пользователь имеет возможность определять собственные команды и окружения. Скажем, вы хотите использовать специальную разметку для всех заменяемых параметров в описании утилиты UN*X, например чтобы: cd directory отображалась, скажем, так: cd directory
Здесь Часто имя утилиты выделяется полужирным шрифтом, а заменяемые параметры -- курсивом. Хорошим решением будет такое: \utilityname{cd} \replaceable{directory}
где команды \utilityname{pushd} \replaceable{directory} \utilityname{ls} \replaceable{filename} Для того, чтобы определить новую команду LaTeX, воспользуйтесь
где имя-команды -- имя команды, число-аргументов -- число аргументов, которые принимает новая команда (по умолчанию 0 можно опустить), а последовательность комманд -- последовательнось команд LaTeX, которые должны быть выполнены при вызове имя-команды.
Для нашего примера, определим \newcommand{\utilityname}[1]{\textbf{#1}} \newcommand{\replaceable}[1]{\textit{#1}} Предопределенные комнады
Для того, чтобы дать представление о полезности наши "свежеопределенных" команд,
предположим, что мы хотим сгенерировать указатель для всех утилит, упомянутых
в тексте. Команда \newcommand{\utilityname}[1]{\textbf{#1}\index{#1}}
и все! (Для любопытных: уровни индексов разделяются символами вертикальной
черты. Так что, вероятно, мы предпочтем команду Новые окружения определяются так:
главное отличие заключается в том, что \newenvironment{myquotation}% Обратите внимание: "%" маскирует новую строку {\begin{flushright}\begin{quotation}}% {\end{quotation}\end{flushright}} которое можно будет использовать так: \begin{myquotation} Letters are things, \\ not pictures of things. \\ -- Eric Gill \end{myquotation}
Ни команды, ни окружения нельзя определять несколько раз с помощью
Физическая разметка [Inline Markup]LaTeX предоставляет богатейшие возможности физической разметки, меняющей внешний вид текста. Здесь я ограничусь обсуждением лишь тех трех команд, которые уже упоминались при обсуждении формат "Старой, доброй и простой документации Perl" [Perl's plain old documentation]: выделения (эмфазы), курсива, полужирного и машинописного стиля шрифта.
\newcommand{\important}[1]{\textbf{#1}} \newcommand{\sourcecode}[1]{\texttt{#1}} Последовательность вызова утилит LaTeXОбычно файлы LaTeX имеют расширение tex. Эти tex-файлы преобразуются в так называемые файлы, не зависящие от устройства (dvi). dvi файлы являются двоичным представлением исходного текста. Их можно просмотреть в консольном режиме с помощью dvisvga (при условии, что терминал поддерживает графику высокого разрешения), или, например, с помощью xdvi в среде X11. Часто файлы dvi преобразуют в Postscript с помощью dvips. Если предпочтителен формат PDF, то утилита pdflatex может создать pdf из tex за один шаг. latex2htmlПока все нормально. LaTeX позволяет подготовить великолепно выглядящие документы на Postscript'е, а "единоутробная" утилита pdf делает то же самое, но в переносимом формате документов. Разве мы не говорили, что нам нужет и HTML тоже? Конечно говорили! Но тут LaTeX нам не помощник, для этого нам нужен другой инструмент: latex2html. Эта утилита преобразует исходные файлы LaTeX в набор html-файлов, связанные гиперссылками в соответствии со структурой исходного документа. Загрузить latex2html можно с его домашней страницы: http://www.latex2html.org. Можно взять его и на http://www.ctan.org, а лучше с одного из зеркал. Для того, чтобы выяснить, установлен ли latex2html в вашей системе выполните команду: latex2html --version должно быть что-то вроде этого: This is LaTeX2HTML Version 2K.1beta (1.57) by Nikos Drakos, Computer Based Learning Unit, University of Leeds.
Что следует изменить для того, чтобы сделать документы LaTeX пригодными
для обработки latex2html? Хорошая новость -- почти ничего! Убедитесь, что
в преамбуле указаны пакеты \usepackage{html,makeidx} в преамбулу вашего документа. Теперь файл my_document.tex может быть преобразован в HTML следующим вызовом latex2html my_document.tex Еще раз о ссылкахlatex2html берет на себя заботу практически обо всех проблемах, возникающих при преобразовании файла LaTeX в набор html-файлов. Однако ссылки на другие части того же документа или на другие документы концептуально отличаются в печатной документации и HTML. Рассмотрим следующий фрагмент LaTeX Ниже мы обобщим наши результаты, используя цилиндрическую систему координат. Смотрите определение координатной системы на странице~\pageref{definition:coordinate-system}.
в котором LaTeX послушно заменяет Ниже мы обобщим наши результаты, используя цилиндрическую систему координат. Смотрите определение координатной системы на странице [*]. Latex2html нуждается в нашей помощи! Для экранной версии, абзац с ссылкой нужно перефразировать, например так: Ниже мы обобщим наши результаты, используя <a>цилиндрическую систему координат<</a>>.
где мы указали гиперссылку с помощью anchor-тэгов HTML. Для того, чтобы
было возможным создавать различные версии в зависимости от выходного
формата, в latex2html определена команда
Необязательный параметр тип-ссылки устанавливает, какой счетчик будет использоваться ссылкой:
Вот наш пример, переписанный с использованием Ниже мы обобщим наши результаты, используя \hyperref[pageref]% {цилиндрическую систему координат}% для HTML {цилиндрическую систему координат. Смотрите% для LaTeX определение координатной системы на странице~} {}% завершающий текст для LaTeX, в переводе пуст {definition:coordinate-system}.% метка, на которую ссылается ссылка LaTeX преобразует это так Ниже мы обобщим наши результаты, используя цилиндрическую систему координат. Смотрите определение координатной системы на странице 97. а latex2html создает Ниже мы обобщим наши результаты, используя цилиндрическую систему координат. после обработки того же исходного текста. ГиперссылкиКогда на сцене появляюстя гиперссылки, мы сталкиваемся еще с одной проблемой, похожей на ту, с которой мы столкнулись при обработке перекрестных ссылок. Для HTML версии документа гиперссылки жизнено необходимы, в печатной -- не слишком полезны: сравните "Щелкните мышью вот здесь" и "Нажмите карандашом на эту букву". Но иногда, автору действиотельно требуется включить URL в печатный текст. latex2html предоставляет две команды, которые позволяют это сделать.
В HTML версии обе команды генерируют гиперссылку вида <a href = "URL">текст ссылки</a>. В LaTeX версии первая только вставляет текст ссылки, полностью подавляя вывод части URL. Вторая команда добавляет к этому сноску, содержащую универсальный локатор ресурса. Типичным примером применения этих команд может служить следующий Текст этой статьи можно скачать с нашего \htmladdnormallink{веб-сайта}{http://www.linux-gazette.org}. и Текст этой статьи можно скачать с нашего \htmladdnormallinkfoot{веб-сайта}{http://www.linux-gazette.org}. в LaTeX результат первой команды будет Текст этой статьи можно скачать с нашего веб-сайта.
во втором варианте Текст этой статьи можно скачать с нашего веб-сайта. Команды, специфичные для конкретного форматаВ качестве крайнего средства можно использовать несколько команд, позволяющих автору полностью разделить текст между LaTeX и HTML версиями:
Советую прибегать к разделению текстов только в том случае, когда никакая другая специализированная команда или окружение latex2html не в состоянии создать желаемую разметку. Разделение на разные ветви всегда требует дополнительных усилий по их синхронизации. Плюсы и минусы latex2html
Дополнительные источники
В следующем месяце мы обсудим DocBook Кристоф Шпиль [Christoph Spiel]Крис руководит расположенной в Верхней Баварии (Германия) компанией, консультирующей по вопросам Open Source Software. Не смотря на то, что по образованию он физик (он получил ученую степень Доктора Философии в Мюнхенском Технологическом Университете), его главные интересы вращаются вокруг численных методов, гетерогенных сред программирования и разработки программного обеспечения. Связаться с ним можно по адресу [email protected].
Copyright (C) 2002, Christoph Spiel.
|
Вернуться на главную страницу |