我设置\mathsurround
为2pt
,以便文本和行内方程之间的水平间距稍微大一些。有没有办法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}