我正在写一篇很长的文档,一般来说,我会尝试用语义来记录内容。例如,当我引入$\mathcal{A}$
和 的符号时$\mathcal{B}$
,我会在章节开头添加以下内容:
\section{An example section title}
\newcommand{\MySpecialA}{\mathcal{A}}
\newcommand{\MySpecialB}{\mathcal{B}}
Some example text. We see that \(\MySpecialA \neq \MySpecialB\)!
然后我将始终使用自己的命令。这使公式更易读,并且重构非常容易。
但是,这些定义随后可用于文档的其余部分,而不仅仅是本节。我以后可能会偶然用到它们。此外,当我以后想对变量使用相同的名称时,覆盖它时必须小心谨慎。
有没有更好的方法来处理这些“范围命令/变量名称”?
答案1
在 LaTeX 中,范围称为组。它们是使用\begingroup
和\endgroup
命令或{ }
在单独放置时创建的。
你可以自己将命令放在需要的地方,但我建议你创建自己的环境来为你执行此操作。如下所示:
\documentclass{article}
\newenvironment{scopedsection}[2]{
\section{#1}
\begingroup % these are actually redundant and just here for clarity
#2
}{
\endgroup % these are actually redundant and just here for clarity
}
\begin{document}
\begin{scopedsection}{my section}{
\newcommand{\MySpecialA}{\mathcal{A}}
}
This works: \( \MySpecialA \)
\end{scopedsection}
Throws error: \( \MySpecialA \)
\end{document}
编辑:我刚从@Mico 那里了解到,环境默认已经是一个组,并且和begingroup
实际上endgroup
是多余的。但它们仍然有利于清晰。