Работа в системе LaTeX



         

Новые окружения: общий случай


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

Предположим, нам хочется взять в рамку абзац текста шириной

7\,\rm см
. Один из возможных способов таков:

\begin{tabular}{|p{7cm}|} \hline Этот текст будет заключен в рамку. Как видите, окружение, предназначенное для верстки таблиц, можно использовать и для этих целей.\\ \hline \end{tabular}

При этом будет напечатано вот что:

\begin{tabular}{|p{7cm}|} \hline Этот текст будет заключен в рамку. Как видите, окружение, предназначенное для верстки таблиц, можно использовать и для этих целей.\\ \hline \end{tabular}

Если таких рамок с текстом у вас много, то можно сократить число нажатий на клавиши, определив окружение с именем, скажем, {ramka}, так, чтоб можно было бы просто писать

\begin{ramka} Этот текст будет ... ... этих целей. \end{ramka}

Определяется это окружение так:

\newenvironment{ramka}{\begin{tabular}{|p{7cm}|} \hline}{\\\hline\end{tabular}}

В общем случае команда \newenvironment имеет такой формат:

\newenvironment{имя}{открывающие\_команды}{закрывающие\_команды}

Здесь имя — имя определяемого окружения, открывающие\_команды — команды и/или текст, подставляемые вместо команды \begin с именем окружения, закрывающие\_команды — команды и/или текст, подставляемые вместо команды \end с именем окружения.

Вместо окружения, определяемого с помощью \newenvironment, можно с тем же успехом создать два макроса: один — для открывающих\_команд, другой — для закрывающих. Например, в нашем случае с рамкой можно было бы написать

\newcommand{\nachalo}{\begin{tabular}{|p{7cm}|}\hline} \newcommand{\konec}{\\\hline\end{tabular}}

и создавать рамки так:

\nachalo Этот текст... \konec

Преимущество оформления такого рода конструкций в виде окружений состоит в том, что при этом легче контролировать ошибки: если вы напишете \begin{ramka} и при этом забудете написать соответствующую команду \end{ramka}, то LaTeX выдаст сообщение об ошибке, в котором именно это вам и скажет; если же вы забудете команду \konec, то сообщения об ошибке будут менее понятными.


Содержание  Назад  Вперед