减少内联数学中的空格长度

减少内联数学中的空格长度

我所提交的期刊要求内联数学必须格式化为$x\!=\!3$,即,我们在运算符周围插入一个细的负空间。

有没有什么方法可以在整个文档范围内进行设置,这样我就不必逐行浏览 30 页的手稿了?

让我强调一下,原则上,我希望能够编辑间距仅限内联数学

答案1

您可以使用\everymath\everydisplay

\documentclass{article}
\usepackage{amsmath}

\newmuskip\normalthickmuskip
\newmuskip\normalthinmuskip
\AtBeginDocument{%
  \normalthickmuskip=\thickmuskip
  \normalthinmuskip=\thinmuskip
}
\everymath{%
  \thickmuskip=\muexpr\normalthickmuskip-(1\normalthinmuskip plus 1\normalthinmuskip)\relax
}
\everydisplay{\thickmuskip=\normalthickmuskip}
\let\texdisplaystyle\displaystyle
\renewcommand{\displaystyle}{\texdisplaystyle\the\everydisplay}

\begin{document}

\begin{center} % just for easing comparisons with below formulas
$a=b$
\end{center}
\[
a=b
\]
\begin{align*}
a&=b
\end{align*}

\end{document}

重新定义\displaystyle是必要的,因为amsmath环境通常不会评估\everydisplay

在此处输入图片描述

这将影响全部关系,不仅如此=。您可能还希望减少\medmuskip内联公式。

答案2

由于 -- 参数的值\thickmuskip控制插入到相邻的数学原子之间的空格数量math-ord--math-rel5mu我熟悉的所有文档类中,并且由于\!插入-3mu(负)空格,您可以通过发出指令来实现日志的格式化目标

\everymath{\thickmuskip=2mu minus 2mu}

在序言中。请注意,\thickmuskip显示的方程中使用的值是不是受此指令影响。(附注:如果amsmath已加载包,则需要将的值\thickmuskip明确重置为显示的方程的默认值,如下所示@egreg 的回答

我不得不说,该期刊要求降低 的值\thickmuskip,同时不要求降低 的值——该参数控制插入相邻的和类型数学原子(例如和)\medmuskip之间的空格量——这近乎奇怪或荒谬。举个例子,等式math-ordmath-bin+-

1+1=2

的默认值\medmuskip是。我认为在保持不变的情况下将其减少到 是4mu一个非常糟糕的想法。因此,我建议您也执行类似\thickmuskip2mu\medmuskip

\everymath{\medmuskip=1.5mu minus 1.5mu}

在序言中

完整的 MWE:

在此处输入图片描述

\documentclass{article}
\begin{document}
$1+1=2$ --- normal look

\everymath{\thickmuskip=2mu minus 2mu}
$1+1=2$ --- bizarre look

\everymath{\medmuskip=1.5mu minus 1.5mu\thickmuskip=2mu minus 2mu}
$1+1=2$ --- cramped (but not bizarre) look
\end{document}

答案3

除了这个答案:虽然它确实按照我想要的方式更改了间距,但它引入了 URL 渲染的回归(.、-、/ 等字符变宽了),也影响了\nolinkurlbiblatex 中的链接。我通过添加来修复它

\def\Hurl{\begingroup \everymath{}\Url}

回到序言。

相关内容