我该如何定义新环境?以及为什么要这样做?

我该如何定义新环境?以及为什么要这样做?

我读过关于定义新的自定义环境的文章,这些环境可以像

\begin{thisismyown}
% do some funky stuff
\end{thisismyown}

我该如何定义thisismyown?以及为什么要这样做?

答案1

你可以使用命令创建新的环境

\newenvironment{thisismyown}[num]{begin}{end}

其中[num]是您想要传递给环境的参数数量,如果您不想要任何参数,可以将其省略;begin是将在您调用时插入的文本\begin{thisismyown},相应地end是您拥有 时将出现的内容\end{thisismyown}

至于为什么要这样做,主要原因是如果你有一些元素会重复多次——定理、问题陈述、解决方案、莎士比亚名言……——并且希望它们都以相同的方式格式化。通过将格式放入新环境中,你可以使文档源更具可读性,并且可以轻松地在一个地方更改环境以更新整个文档中的所有实例。

例如,也许你正在输入作业,并希望有一个环境来定义你的答案将是什么样子。你可以使用类似这样的内容:

\newenvironment{question}[2]{
  \noindent\textsc{Question #1}:\begin{quotation}\textit{#2}\end{quotation}
}{
  \hrule\vspace{2em}
}
...
\begin{question}{1}{Solve for $x$.}
  The answer is, $x=42$.
\end{question}

每个问题都会被很好地格式化,带有小写字母的标签,按第一个参数编号,按第二个参数重述。然后,您将解决方案放入环境中,当它结束时,您会在页面上看到一条实线和一些空白的垂直空间。当然,您也可以使用自定义计数器来跟踪问题编号,但这是另一个答案……

答案2

你可以像这样定义它:

\newenvironment{thisismyown}{%
  code run at the beginning%
}{%
code run at the end}%

每次启动环境时,开始代码都会运行,与关闭环境时类似。

您还可以为您的环境定义参数:

\newenvironment{thisismyown}[arguments][optional]{beginning code}{end code}

最多可使用 9 个参数。它们在开头的代码中可以通过 #1 到 #9 访问,但不是最后的代码。所以,\newenvironment与 类似\newcommand。但它为您提供了内容的范围。

相关内容