等式末尾的标点间距、对齐或 $$

等式末尾的标点间距、对齐或 $$

在书写方程式时,我使用逗号、点和任何用分隔符分隔的标点符号来结尾\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带有两个参数的参数:

  1. 方程
  2. 标点

如果没有提供标点符号,\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} 

在此处输入图片描述

相关内容