Tex: подробное описание С. М. Львовский


 Создание новых окружений


Download 1.51 Mb.
Pdf ko'rish
bet106/143
Sana08.05.2023
Hajmi1.51 Mb.
#1444247
1   ...   102   103   104   105   106   107   108   109   ...   143
Bog'liq
LaTeX-Lvovsky

4. Создание новых окружений
4.1. Новые окружения: общий случай
Как мы уже имели возможность убедиться, для сокращения времени на написание длинных
последовательностей команд удобно пользоваться макросами. В тех случаях, когда для до

стижения необходимого нам эффекта требуется сложная последовательность команд в нача

ле и в конце какого-то текста, L
A
TEX дает нам возможность создать оформить соответствую
щие макросы в виде нового окружения. Как это делается, разберем на примере.
Предположим, нам хочется взять в рамку абзац текста шириной 7 см. Один из возможных
способов сделать это таков:
\begin{tabular}{|p{7cm}|}
\hline
—TOT TEKST BUDET ZAKL@ˆEN W RAMKU. kAK WIDITE,
OKRUVENIE, PREDNAZNAˆENNOE DLQ WERSTKI TABLIC,
MOVNO ISPOLXZOWATX I DLQ “TIH CELEJ.\\
\hline
\end{tabular}
что даст на печати вот что:
Этот текст будет заключен в рамку.
Как видите, окружение, предназначен

ное для верстки таблиц, можно ис

пользовать и для этих целей.
Если таких рамок с текстом у Вас много, то можно сократить число нажатий на клавиши,
определив окружение с именем, скажем, RAMKA, так, чтоб можно было бы просто писать
\begin{RAMKA}
—TOT TEKST BUDET ...
... “TIH CELEJ.
\end{RAMKA}
Определяется это окружение так:
\newenvironment{RAMKA}{\begin{tabular}{|p{7cm}|}
\hline}{\\\hline\end{tabular}}
В общем случае команда \newenvironment имеет такой формат:
\newenvironment{
имя}{открывающие_команды}{закрывающие_команды}
Здесь имя
— имя определяемого окружения, открывающие_команды — команды и/или
текст, подставляемые вместо команды \begin с именем окружения, закрывающие_команды
— команды и/или текст, подставляемые вместо команды \end с именем окружения.
Вместо окружения, определяемого с помощью \newenvironment, можно с тем же успе

хом создать два макроса: один для открывающих_команд, другой для закрывающих. На

пример, в нашем случае с рамкой можно было бы написать
\newcommand{\NAˆATX}{\begin{tabular}{|p{7cm}|}\hline}
\newcommand{\KONˆITX}{\\\hline\end{tabular}}


VII.4. СОЗДАНИЕ НОВЫХ ОКРУЖЕНИЙ
157
и создавать рамки так:
\NAˆATX
—TOT TEKST...
\KONˆITX
Преимущество оформления такого рода конструкций в виде окружений состоит в том, что
при этом легче контролировать ошибки: если Вы напишете \begin{RAMKA} и при этом забу
дете написать соответствующую команду \end{RAMKA}, то L
A
TEX выдаст сообщение об ошиб
ке, в котором ровно это Вам и скажет; если же Вы забудете команду \KONˆITX, то сообще
ния об ошибке будут менее понятными. Кроме того, нелишне напомнить, что команды \begin
и \end, ограничивающие окружение, ограничивают группу: все неглобальные определения и
изменения параметров, происходящие внутри окружения, забываются по выходе из него.
Новые окружения можно определять так, чтобы они принимали аргументы. Пусть, на

пример, в зависимости от обстоятельств нам нужны рамки разной ширины. Тогда разумно
модифицировать определение окружения RAMKA таким образом, чтобы ширина текста в рам
ке передавалась ему как аргумент. Соответствующее определение будет выглядеть так:
\newenvironment{RAMKA}[1]{\begin{tabular}{|p{#1}|}
\hline}{\\\hline\end{tabular}}
После этого можно писать, например,
\begin{RAMKA}{6cm}
tEKST...
\end{ramka}
или даже
\begin{RAMKA}{.85\textwidth}
tEKST...
\end{ramka}
Общие правила таковы. Чтобы создать окружение с аргументами, надо воспользоваться
командой \newenvironment c необязательным аргументом. Этот необязательный аргумент
ставится между первым и вторым обязательными; как и в случае с \newcommand, он означает
количество аргументов, которые будет требовать окружение, и это количество не может пре

вышать девяти; места, куда будут вставлены аргументы, по-прежнему обозначаются #1, . . .
#9
, причем эти значки можно употреблять только в открывающих командах (то есть во
втором обязательном аргументе команды \newenvironment)
С помощью \newenvironment нельзя переопределить уже существующее окружение (ес

ли Вы все же попробуете так сделать, L
A
TEX выдаст сообщение об ошибке). Если Вам дей
ствительно необходимо такое переопределение, надо пользоваться командой \renewenvironment,
работающей точно так же, как и \newenvironment, с тем различием, что в качестве первого
аргумента ей можно передавать только имя уже существующего окружения.

Download 1.51 Mb.

Do'stlaringiz bilan baham:
1   ...   102   103   104   105   106   107   108   109   ...   143




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling