\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