LINUX Format №087-088 01.07

Page 90

LaTeX Учебник Если необязательный аргумент определён, то осуществляется нумерация строк. Если аргумент равен 1, то нумеруются все строки, если 2 – то каждая вторая, а далее по индукции. Команда \STATE определяет простое утверждение. Условный оператор представлен командами \IF{<условие>}, \ELSIF{<условие>}, \ELSE и \ENDIF. Циклы представлены операторами \FOR и \FORALL, которые закрываются командой \ENDFOR. Аналогично присутствуют пары \WHILE{<условие>} – \ENDWHILE, \REPEAT – \UNTILL{<условие>} и бесконечный цикл \LOOP – \ENDLOOP. Кроме уже перечисленных конструкций определены предварительное условие для корректного выполнение алгоритма \REQUIRE, постусловие, которое должно выполняться при корректной работе алгоритма, \ENSURE, возвращение результата \RETURN, промежуточная печать \PRINT и комментарий \COMMENT. Собственно говоря, всё. Псевдокод автоматически разбивается на строки и форматируется в соответствии с общепринятыми представлениями. Очевидно также, что навыки набора математики будут здесь очень кстати. Подробности по настройке пакета следует выяснять в документации к нему: algorithms.pdf. Для того, чтобы сделать из объекта algorithmic «плавающий объект» можно воспользоваться окружением algorithm, для его использования следует загрузить одноимённый стиль в преамбуле. Внутри algorithm можно использовать команды \caption и \label.

LaTeX и контроль версий Исходный текст LaTeX тоже представляет собой код. И как всякий код, он достоин жить в системе контроля версий. Часто бывает любопытно узнать текущую версию документа и время его последнего обновления. Если в качестве системы контроля версий используется Subversion, то для начала следует загрузить пакет svn6. \usepackage{svn} \SVN $Date$ \SVN $Rev$

При этом в текст следует добавить метки, предваряемые командой \SVN. Для интерполяции меток в системе Subversion при обновлении файла следует выполнить команды вида: > svn propset svn:keywords “Date Rev” «имя файла» > svn commit -m “интерполяция меток”

При этом svn передаётся информация о том, какие именно метки требуется обновлять при выполнении commit. В данном случае, это метки Date и Rev — дата и номер ревизии, соответственно. Более подробную информацию можно получить с помощью команды > svn help propset

Команда \SVN $Date$ определяет команды \SVNDate и \SVNTime, ответственные за календарную дату и время. Все остальные команды вида \SVN $Keyword$, где Keyword — одна из интерполируемых меток svn, определяют команды \SVNKeyword. После интерполяции метки будут выглядеть примерно следующим образом (см. рисунок). Схожую функциональность предоставляет пакет svninfo.

Клоны algorithms С использованием имеющихся наработок пакета algorithms был создан algorithmicx. Этот пакет предоставляет более расширенный набор команд. Кроме того, пользователю предоставляются команды, с помощью которых можно формировать свои алгоритмические конструкции. Автор также предоставил вариант форматирования отступов, принятый в Pascal, что позволяет относительно легко приводить программы на этом языке к виду, годному для красивой распечатки. Пакет работает с теми же окружениями, что используюся в пакете algorithms. Это приводит к их несовместимости. Решение схожей функциональности предоставляет пакет algorithm2e. Форматирование C-подобно. Предоставлен избыточный набор конструкций и возможность самому создавать новые структуры. Есть зачатки локализации. Пакет использует окружение algorithm, Это приводит к несовместимости как с пакетом algorithms, так и с пакетом algorithimcx.

Generation, Enumeration and Search». Специально для представления псевдокода в этой книге они создали пакет, который так и назвали: pseudocode. Дональд Л. Крехер использовал одноимённое окружение и в своей следующей книге по алгоритмам, выпущенной уже в 2005 году. Пакет поддерживается до сих пор.

clrscode Пакет clrscode представляет возможность набирать псевдокод, как это делали авторы книги «Алгоритмы: построение и анализ» Томас Х. Кормен, Чарльз И. Лейзерсон, Рональд Л. Ривест и Клиффорд Штайн5. Для работы с пакетом необходимо загрузить одноимённый стиль. Это прекрасный пример того, как можно адаптировать LaTeX для создания книг по программированию.

Пример использования пакета pseudocode.

Пример использования пакета clrscode.

pseudocode Профессора Дональд Л. Крехер [Donald L. Kreher] и Дуглас Р. Стинсон [Douglas R. Stinson] написали книгу «Combinatorial Algorithms:

5 Introduction to algorithms, Second Edition. Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein.

К сожалению, в книгах по LaTeX редко рассматриваются структуры, полезные для представления программных текстов или псевдокода. Здесь я попытался восполнить этот зияющий пробел. Тема настолько обширна, что разрабатывать её можно почти бесконечно. LaTeX сам по себе код, поэтому программистам, по идее, должно быть уютно в его окружении. LXF

5 Если же в вашем проекте используется CVS (Concurrent Versions System), то следует воспользоваться пакетом rcs. За подробностями следует обратиться к документации пакета.

Через месяц Вы узнаете всё об оформлении абзаца и страницы. Январь 2007 Linux Format

89


Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.