本地定义来分割内容和设计

本地定义来分割内容和设计

我正在写一篇很长的文档,一般来说,我会尝试用语义来记录内容。例如,当我引入$\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是多余的。但它们仍然有利于清晰。

相关内容