在书写方程式时,我使用逗号、点和任何用分隔符分隔的标点符号来结尾\quad
...
\begin{equation}
sin(x)+cos(x)=a\quad,
\end{equation}
因为我要写大量的数学表达式,所以每次我决定在末尾添加标点符号 {,.;!?等} 时,我都想自动实现这种间距,equation
依此align
$$
类推。
有人有想法吗?非常感谢!
答案1
尽管许多人避开这种做法(我曾受到该网站编辑的斥责,但我当地的编辑接受这种做法),但我也更喜欢在等式和后续标点符号之间留出额外的空格。
我更喜欢\rlap
标点符号具有所需的间距,这样它就不会改变方程内容的整体居中对齐。否则,当标点方程附近有未标点的方程时,这种情况会最为明显。(注意:即使插入标点符号,我也会发现这方面很有用没有额外的间距。)
可以在宏\mcomma
和中定义所需间距的特定样式\mperiod
。
不过,我将其\rlap
作为可选参数的一部分,以防等式内容太宽,重叠的标点符号会干扰编号。在这些情况下,空白的可选参数[]
将导致插入标点符号而不带\rlap
。
\documentclass{article}
\usepackage{amsmath}
\newcommand\mperiod[1][\rlap]{#1{\;\;\;.}}
\newcommand\mcomma[1][\rlap]{#1{\;\;\;,}}
\begin{document}
\begin{align*}
y &= mx + b\mcomma\\
y &= Ax^2 + Bx + C\mperiod
\end{align*}
Also,
\[
F = ma
\]
and
\[
E = mc^2
\mperiod\]
\end{document}
我不相信完全自动化是可能的,因为在数学模式中句号和逗号都有多种含义......在某些情况下几乎不可能区分小数点和语法句号。
但是,可以使用紧凑的符号,例如\z.
and \z,
(或可选的\z[].
and \z[],
),如
\documentclass{article}
\usepackage{amsmath}
\newcommand\z[2][\rlap]{\ifx.#2\mperiod[#1]\else\ifx,#2\mcomma[#1]\fi\fi}
\newcommand\mperiod[1][\rlap]{#1{\;\;\;.}}
\newcommand\mcomma[1][\rlap]{#1{\;\;\;,}}
\begin{document}
\begin{align*}
y &= mx + b\z,\\
y &= Ax^2 + Bx + C\z.
\end{align*}
Also,
\[
F = ma
\]
and
\[
E = mc^2
\z.\]
\end{document}
答案2
您可以定义一个newcommand
带有两个参数的参数:
- 方程
- 标点
如果没有提供标点符号,\quad
则不要添加,如果提供了标点符号,则添加\quad
。
这是一个简单的 MWE:
\documentclass{article}
\usepackage{ifthen}
\newcommand{\myequation}[2]{%
\ifthenelse{\equal{#2}{}}{%
\begin{equation}
#1
\end{equation}%
}{%
\begin{equation}
#1 \quad #2
\end{equation}%
}%
}%
\begin{document}
\myequation{\sin(x)+\cos(x)=a}{,}
\myequation{\sin(x)+\cos(x)=b}{}
\end{document}