多种环境选项

多种环境选项

tikzpicture 环境如何支持多个选项,例如\begin{tikzpicture}[red, thick] ... \end{tikzpicture}

根据一些 LaTeX 文档,一个环境不允许有多个选项(参见这个文件)。

请注意,这个问题类似于如何将两个参数传递给 \newenvironment?,但未得到答复。

请注意,此问题对必需参数/参数(用花括号提供)和选项(用方括号提供)进行了区分。

答案1

支持的语法\newenvironment

\newenvironment{<name>}[<n>]{<begin-code>}{<end-code>}

或者

\newenvironment{<name>}[<n>][<default>]{<begin-code>}{<end-code>}

这就是您引用的文档中所解释的内容。

第一种类型定义了一个采用<n>强制参数的环境,因此

\newenvironment{foo}[2]{<begin-code>}{<end-code>}

你必须打电话

\begin{foo}{first}{second}
body
\end{foo}

在第二种模式下,环境接受一个可选参数,其默认值为<default>;因此

\newenvironment{foo}[2][default]{<begin-code>}{<end-code>}

你可以使用以下方式调用环境

\begin{foo}{argument}
body
\end{foo}

\begin{foo}[option]{argument}
body
\end{foo}

的情况tikzpicture

\newenvironment{tikzpicture}[1][]{<begin-code>}{<end-code>}

环境如何处理可选参数留给<begin-code>管理。当你这样做时

\begin{tikzpicture}[red,black]
...
\end{tikzpicture}

可选参数,用于处理提取 TikZ 选项。

答案2

从技术上讲,这只是一个可选参数(red,thick),两个看起来类似\begin{tikzpicture}[red][thick]或相似。

此外,如果您使用低级 TeX 命令,该陈述并不完全正确;只需考虑一下的签名\newcommand{\command}[number of arguments][default value of first argument]{code}

这里发生的事情是,环境获取的一个参数被解析,并沿着逗号拆分为几个子参数,然后在代码中使用。许多包使用了一些派生函数xkeyval(您可以在此处了解如何使用它),但我确信tikz它有自己的例程。

相关内容