当内联方程后面跟着标点符号时,覆盖其右侧的间距

当内联方程后面跟着标点符号时,覆盖其右侧的间距

我设置\mathsurround2pt,以便文本和行内方程之间的水平间距稍微大一些。有没有办法0pt在行内方程后面跟着标点符号时将其设置为右侧?

例如,代码

Let $x=0$ and $y=1$.

排版方式与下面第一行相同,但我希望它与第二行相同。

编译后的代码输出

有没有办法可以实现这一点而不必每次都提供\hspace{-2pt}

编辑:

我已经考虑过@barbarabeeton的建议,即在最后一个之前加上标点符号$,但有些标记在文本模式和数学模式下的排版方式不同。可能标点符号有点太严格了,因为我想包含括号 () [] {} 甚至撇号 '。此外,我希望我的代码具有灵活性,这样每当我决定更改某些内容时,我都不必编辑整个文档。

答案1

有两种方法。第一种是删除数学环绕字距(在标点符号前使用宏);第二种是在公式内部使用标点符号,但使用宏来处理空格因素并删除字距。

在示例中,我展示了两种方法。第三行的 `mathsurround 为零,并手动添加了字距,以显示输出相同。

\documentclass{article}

\newcommand{\unms}{\kern-\mathsurround}

\newcommand{\fp}[1]{%
  \mbox{#1}%
  \xdef\fpuncsf{%
    \kern-\mathsurround
    \spacefactor\the\sfcode`#1\relax
  }%
  \aftergroup\fpuncsf
}

\setlength{\mathsurround}{2pt}

\begin{document}

Let $x=0$ and $y=1$\unms. There was a sentence ending period.

Let $x=0$ and $y=1\fp.$ There was a sentence ending period.

%% check
\mathsurround=0pt\def\?{\kern2pt }

Let \?$x=0$\? and \?$y=1$. There was a sentence ending period.

\end{document}

在此处输入图片描述

相关内容