Журнал LinuxFormat - перейти на главную

LXF94:LaTeX

Материал из Linuxformat
(Различия между версиями)
Перейти к: навигация, поиск
(Создаём свои …)
(Создаём свои …)
Строка 43: Строка 43:
 
             {<<значение по #1>>}
 
             {<<значение по #1>>}
 
  Сравните \exmpl{} и \exmpl[требованию].
 
  Сравните \exmpl{} и \exmpl[требованию].
 +
 +
Для определения нового окружения используется команда \newenvironment, например:
 +
 +
[[Image:Latex 11 3.jpg|right|thumb|300px|Рис. 3.]]
 +
 +
\newenvironment{outlined}{\hrule\begin{center}}%
 +
                  {\end{center}\smallskip\hrule}
 +
\begin{outlined}
 +
  Выделенный текст.
 +
\end{outlined}
 +
 +
Формальное описание этой команды похоже на описание \newcommand:
 +
 +
\newenvironment{«окружение»}[N][«зн. по ум.»]%
 +
                {«код, открывающий окружение»}%
 +
                {«код, закрывающий окружение»}
 +
 +
Точно так же, как и в случае \newcommand, созданному окружению можно передавать параметры. Подставлять параметры можно только
 +
в коде, открывающем окружение. Кроме создания нового окружения, можно также переопределять уже имеющиеся с помощью аналогичной
 +
команды \renewenvironment.
 +
 +
В разделе, посвящённом описанию презентационного класса beamer [[LXF85|(LXF85]]), упоминалось ещё об одной возможности создавать новые именованные окружения с помощью команды \newtheorem:
 +
 +
[[Image:Latex 11 4.jpg|right|thumb|300px|Рис. 4.]]
 +
 +
\newtheorem{Texmpl}{Пример}
 +
\begin{Texmpl}[Теорема Пифагора]\label{th:1}
 +
  Пифагоровы штаны во все стороны равны.
 +
\end{Texmpl}
 +
\begin{Texmpl}\label{th:2}
 +
  Мудрость ограничена, а глупость бесконечна.
 +
\end{Texmpl}
 +
Можем сослаться первую теорему:~\ref{th:1},
 +
а можно и на вторую:~\ref{th:2}
 +
 +
Команда \newtheorem имеет две формы:
 +
 +
\newtheorem{«теорема»}[«существующая теорема»]{«заголовок»}
 +
\newtheorem{«теорема»}{«заголовок»}[«имя счётчика»]
 +
 +
Каждая из форм имеет по два соответствующих обязательных аргумента и по одному необязательному. В первом случае это имя уже существующей теоремы, с которой следует иметь совместную нумерацию. Во втором случае в качестве необязательного параметра передаётся имя уже существующего счётчика, на основе которого строится нумерация. О том, что такое счётчики и как их определять, речь пойдёт далее.
  
 
=== Счётчики и другие переменные ===
 
=== Счётчики и другие переменные ===

Версия 18:54, 16 марта 2008

Содержание

Начала программирования

ЧАСТЬ 11 Завершая этот длинный цикл статей, Евгений Балдин посмотрит на LaTeX глазами профессионального программиста.

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

Создаём свои …

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

\newcommand{\ee}{\ensuremath{e^{+}e^{-}}\xspace}

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

(thumbnail)
Рис. 1.
\(J/\psi\to\ee\) является одним из подвидов \ee-рассеяния.

Команда \xspace из одноимённого пакета добавляет в конце команды пробел в случае, если за ней не следует знаков препинания, то есть избавляет от необходимости самому вставлять явный пробел после команды.

Имеются три основные структуры, которые позволяют создавать свои или переименовать уже имеющиеся макросы:

\newcommand{«команда»}[N][«зн. по ум.»]{«определение»}
\renewcommand{«команда»}[N][«зн. по ум.»]{«определение»}
\providecommand{«команда»}[N][«зн. по ум.»]{«определение»}

\newcommand определяет новую команду. Если такая команда уже существует, то при компиляции генерируется ошибка. \renewcommand переопределяет уже существующую команду. В свою очередь, \providecommand создаёт новую команду, если на момент описания такой команды не было, и ничего не делает в противном случае.

В каждом из этих макросов есть два обязательных параметра: это имя команды и её описание. Если команде необходимо передать параметр/параметры, то первый необязательный аргумент (N) должен принять значение от одного (1) до девяти (9). В LXF85 (см. прилагаемый диск) обсуждался макрос для дублирования знака в формуле при переносе её на следующую строку (\(a+b\hm{=}c\)):

\newcommand*{\hm}[1]{#1\nobreak\discretionary{}%
 {\hbox{$\mathsurround=0pt #1$}}{}}

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

Звёздочка (*) в конце макроса \newcommand налагает на передаваемый параметр команды \hm дополнительное условие: в нем не должно быть пустых строк и команды \par. В некоторых случаях это упрощает отладку кода.

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

(thumbnail)
Рис. 2.
\newcommand{\exmpl}[1][умолчанию]%
           {<<значение по #1>>}
Сравните \exmpl{} и \exmpl[требованию].

Для определения нового окружения используется команда \newenvironment, например:

(thumbnail)
Рис. 3.
\newenvironment{outlined}{\hrule\begin{center}}%
                 {\end{center}\smallskip\hrule}
\begin{outlined}
  Выделенный текст.
\end{outlined}

Формальное описание этой команды похоже на описание \newcommand:

\newenvironment{«окружение»}[N][«зн. по ум.»]%
                {«код, открывающий окружение»}%
                {«код, закрывающий окружение»}

Точно так же, как и в случае \newcommand, созданному окружению можно передавать параметры. Подставлять параметры можно только в коде, открывающем окружение. Кроме создания нового окружения, можно также переопределять уже имеющиеся с помощью аналогичной команды \renewenvironment.

В разделе, посвящённом описанию презентационного класса beamer (LXF85), упоминалось ещё об одной возможности создавать новые именованные окружения с помощью команды \newtheorem:

(thumbnail)
Рис. 4.
\newtheorem{Texmpl}{Пример}
\begin{Texmpl}[Теорема Пифагора]\label{th:1}
  Пифагоровы штаны во все стороны равны.
\end{Texmpl}
\begin{Texmpl}\label{th:2}
  Мудрость ограничена, а глупость бесконечна.
\end{Texmpl}
Можем сослаться первую теорему:~\ref{th:1},
а можно и на вторую:~\ref{th:2}

Команда \newtheorem имеет две формы:

\newtheorem{«теорема»}[«существующая теорема»]{«заголовок»}
\newtheorem{«теорема»}{«заголовок»}[«имя счётчика»]

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

Счётчики и другие переменные

Создаём свой пакет

Установочный INS-файл

Пакетный DTX-файл

Пролог
Пользовательская документация
Код с комментариями

Пакетирование

Напутствие

Документируйте каждый шаг. Пишите как можно больше качественного текста, так как его мало не бывает. Живучесть программы определяется не только кодом, но и описанием. «Светлое будущее» за грамотным программированием.

LaTeX-цикл в Linux Format подошёл к концу. Честно говоря, я сам за это время узнал много нового для себя. Надеюсь, мне удалось поделиться этими знаниями с вами. В этой информации нет никакой чёрной магии – всё просто и логично, и эта информация полезна, так как позволяет автоматизировать одно из самых сложных ремёсел человеческой цивилизации – создание книг. Пишите тексты, большие и маленькие: они не пропадут.

Персональные инструменты
купить
подписаться
Яндекс.Метрика