我读过关于定义新的自定义环境的文章,这些环境可以像
\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
。但它为您提供了内容的范围。