equation
我在环境中插入了多个方程:
\begin{equation}
\label{Eq:SomeEquation}
P = \theta_{C} - \theta_{Y}
\end{equation}
正如所提到的等式后的逗号在每个等式后添加逗号是一种很好的做法。
我是否可以通过一个 LaTeX 命令来完成此操作,还是需要在每个等式中手动添加逗号?
答案1
你可能希望考虑在单独的公式环境中添加逗号equationc
或句点equationp
。这样,源代码的阅读就变得简单直接了。
\documentclass{article}
\newenvironment{equationc}{\begin{equation}}{,\end{equation}\ignorespacesafterend}
\newenvironment{equationp}{\begin{equation}}{.\end{equation}\ignorespacesafterend}
\begin{document}
One has
\begin{equation}
y = mx + B
\end{equation}
and
\begin{equationc}
y = mx + C
\end{equationc}
lest one ends up with
\begin{equationp}
y = mx + D
\end{equationp}
\end{document}
你也可以自定义环境定义。例如,如果不希望逗号或句号影响方程内容的居中,可以使用重叠来实现:
\newenvironment{equationc}{\begin{equation}}{\rlap,\end{equation}\ignorespacesafterend}
\newenvironment{equationp}{\begin{equation}}{\rlap.\end{equation}\ignorespacesafterend}
答案2
正如@egreg 所说,自动执行此操作并不是一个好主意:有时您需要句号而不是逗号,或者根本不需要任何符号。
不过,作为 TeX 练习,这里有一个解决方案。LaTeX 有定义
\def\endequation{\eqno \hbox{\@eqnnum}$$\@ignoretrue}
因此让我们重新定义它:
\documentclass{article}
\makeatletter
\def\endequation{\unskip,\eqno \hbox{\@eqnnum}$$\@ignoretrue}
\makeatother
\begin{document}
\thispagestyle{empty}
\begin{equation}
\label{Eq:SomeEquation}
P = \theta_{C} - \theta_{Y}
\end{equation}
\end{document}
一个更好的解决办法是将等式末尾的符号设为变量:
\documentclass{article}
\makeatletter
\def\endequation{\eqend\eqno \hbox{\@eqnnum}$$\@ignoretrue}
\makeatother
\newcommand{\eqend}{\unskip,}
\begin{document}
\thispagestyle{empty}
We can make equation end in comma
\begin{equation}
\label{Eq:SomeEquation}
P = \theta_{C} - \theta_{Y}
\end{equation}
or in dot \renewcommand{\eqend}{\unskip.}
\begin{equation}
\theta_{C} =P - \theta_{Y}
\end{equation}
We can omit the sign at all
\renewcommand{\eqend}{}
\begin{equation}
\theta_{Y} =P - \theta_{C}
\end{equation}
if we wish.
\end{document}