我经常写一些等距物体居中的方程式,比如
\begin{equation*}
\hphantom{ \hspace{1cm} {(x\in X)} }
f(x) = Ax + B
\hspace{1cm} {(x\in X)}
\end{equation*}
运行良好。但是,我尝试\newenvironment
以自然的方式为此设置定义一个,并遇到了一些错误(无论是否编译)。我想到最接近的解决方案是
\newenvironment{eqspaced}[1]{
\begin{center}
$\hphantom{\hspace{1.5cm} {#1}}
\displaystyle
}{
\hspace{1.5cm} {#1}$
\end{center}
}
这个宏有什么问题?我原本想为间距添加第二个参数,但它似乎让 pdflatex 更加恼火。
答案1
你会遇到错误,对吧?当出现错误时,TeX 会尽力退出,但输出可能会有误。
问题是您不能#1
在的最后部分使用\newenvironment
。
解决方案:使用(如果运行的是 2020-10-01 之前发布的旧版本的 LaTeX,则\NewDocumentEnvironment
可能需要这样做)。\usepackage{xparse}
使用可选参数可以设置间距;如果未使用可选参数指定,则默认值为 1cm。
\documentclass{article}
\usepackage{amsmath}
\NewDocumentEnvironment{eqspaced}{O{1cm}m}
{\begin{equation*}\hphantom{\hspace{#1}#2}}
{\hspace{#1}#2\end{equation*}\ignorespacesafterend}
\begin{document}
\begin{eqspaced}{(x\in X)}
f(x)=Ax+B
\end{eqspaced}
Let's verify the centering
\begin{equation*}
f(x)=Ax+B
\end{equation*}
With the optional argument
\begin{eqspaced}[3cm]{(x\in X)}
f(x)=Ax+B
\end{eqspaced}
\end{document}
注意:之前提供的代码(参见答案历史)解决了 LaTeX 内核中的一个错误,现在该错误已得到解决LaTeX2e <2021-11-15> patch level 1
(确保拥有最新的发行版)。