Spec-Zone.ru › LaTeX

\newenvironment & \renewenvironment

Синопсис, один из:

\newenvironment{env}{begdef}{enddef}
\newenvironment{env}[nargs]{begdef}{enddef}
\newenvironment{env}[nargs][optargdefault]{begdef}{enddef}
\newenvironment*{env}{begdef}{enddef}
\newenvironment*{env}[nargs]{begdef}{enddef}
\newenvironment*{env}[nargs][optargdefault]{begdef}{enddef}

или один из этих.

\renewenvironment{env}{begdef}{enddef}
\renewenvironment{env}[nargs]{begdef}{enddef}
\renewenvironment{env}[nargs][optargdefault]{begdef}{enddef}
\renewenvironment*{env}{begdef}{enddef}
\renewenvironment*{env}[nargs]{begdef}{enddef}
\renewenvironment*{env}[nargs][optargdefault]{begdef}{enddef}

Определяет или переопределяет окружение env, то есть создаёт конструкцию \begin{env} ... body ... \end{env}.

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

env

Обязательно; имя окружения. Оно состоит только из букв или символа * и, следовательно, не начинается с обратной косой черты, \. Оно не должно начинаться со строки end. Для \newenvironment, имя env не должно быть именем уже существующего окружения, а также команда \env не должна быть определена. Для \renewenvironment, env должно быть именем существующего окружения.

nargs

Необязательно; целое число от 0 до 9, обозначающее количество аргументов, которые принимает окружение. Когда вы используете окружение, эти аргументы появляются после \begin, как в \begin{env}{arg1} ... {argn}. Пропуск этого эквивалентен установке его в 0; окружение не будет иметь аргументов. При переопределении окружения новая версия может иметь другое количество аргументов, чем старая версия.

optargdefault

Необязательно; если это присутствует, то первый аргумент определённого окружения является необязательным, со значением по умолчанию optargdefault (которое может быть пустой строкой). Если этого нет в определении, то окружение не принимает необязательный аргумент.

То есть, когда optargdefault присутствует в определении окружения, вы можете начать окружение с квадратных скобок, как в \begin{env}[optval]{...} ... \end{env}. В этом случае внутри begdefn параметр #1 устанавливается в значение optval. Если вы вызываете \begin{env} без квадратных скобок, то внутри begdefn параметр #1 устанавливается в значение по умолчанию optargdefault. В любом случае, любые требуемые аргументы начинаются с #2.

Пропуск [myval] в вызове отличается от наличия квадратных скобок без содержимого, как в []. В первом случае #1 расширяется до optargdefault; во втором случае #1 расширяется до пустой строки.

begdef

Обязательно; текст, расширяемый при каждом появлении \begin{env}. Внутри begdef параметры #1, #2, ... #nargs, заменяются значениями, которые вы предоставляете при вызове окружения; см. примеры ниже.

enddef

Обязательно; текст, расширяемый при каждом появлении \end{env}. Он не может содержать параметров, то есть вы не можете использовать #1, #2, и т.д., здесь (но см. последний пример ниже).

Все окружения, то есть код begdef, тело окружения и код enddef, обрабатываются в группе. Таким образом, в первом примере ниже, эффект от \small ограничен кавычками и не распространяется на материал после окружения.

Если вы пытаетесь определить окружение, а имя уже используется, то получаете что-то вроде ‘Ошибка LaTeX: Команда \fred уже определена. Или имя \end... недопустимо, см. стр. 192 руководства’. Если вы пытаетесь переопределить окружение, а имя ещё не использовано, то получаете что-то вроде ‘Ошибка LaTeX: Окружение hank не определено.’.

Этот пример даёт окружение, подобное окружению LaTeX’s quotation, за исключением того, что оно будет начертано мелким шрифтом.

\newenvironment{smallquote}{%
  \small\begin{quotation}
}{%
  \end{quotation}
}

У этого есть аргумент, который напечатан жирным шрифтом в начале абзаца.

\newenvironment{point}[1]{%
  \noindent\textbf{#1}
}{%
}

Этот пример показывает использование необязательного аргумента; он даёт окружение цитаты, которое указывает автора.

\newenvironment{citequote}[1][Shakespeare]{%
  \begin{quotation}
  \noindent\textit{#1}: 
}{%
  \end{quotation}
}

Имя автора необязательно и по умолчанию равно ‘Shakespeare’. В документе используйте окружение следующим образом.

\begin{citequote}[Lincoln]
  ...
\end{citequote}

Последний пример показывает, как сохранить значение аргумента, чтобы использовать его в enddef, в данном случае в рамке (см. \sbox & \savebox).

\newsavebox{\quoteauthor}
\newenvironment{citequote}[1][Shakespeare]{%
  \sbox\quoteauthor{#1}%
  \begin{quotation} 
}{%
  \hspace{1em plus 1fill}---\usebox{\quoteauthor}
  \end{quotation}
}

© 2007–2018 Karl Berry
Public Domain Software
http://latexref.xyz/_005cnewenvironment-_0026-_005crenewenvironment.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API