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



         

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


Кроме того, нелишне напомнить, что команды \begin и \end, ограничивающие окружение, ограничивают группу: все неглобальные определения и изменения параметров, происходящие внутри окружения, забываются по выходе из него.

Новые окружения можно определять так, чтобы они принимали аргументы. Пусть, например, в зависимости от обстоятельств нам нужны рамки разной ширины. Тогда разумно модифицировать определение окружения {ramka} таким образом, чтобы ширина текста в рамке передавалась ему как аргумент. Соответствующее определение будет выглядеть так:

\newenvironment{ramka}[1]{\begin{tabular}{|p{#1}|} \hline}{\\\hline\end{tabular}}

После этого можно писать, например,

\begin{ramka}{6cm} Текст... \end{ramka}

или даже

\begin{ramka}{.85\textwidth} Текст... \end{ramka}

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

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

У команд для пере)пределения окружения также существуют " варианты со звездочкой": \newenvironment* и \renewenvironment*. Если окружение с аргументами определено с помощью одной из этих команд, то в его аргументе запрещены пустые строки или команды \par.




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