![减少内联数学中的空格长度](https://linux22.com/image/398577/%E5%87%8F%E5%B0%91%E5%86%85%E8%81%94%E6%95%B0%E5%AD%A6%E4%B8%AD%E7%9A%84%E7%A9%BA%E6%A0%BC%E9%95%BF%E5%BA%A6.png)
我所提交的期刊要求内联数学必须格式化为$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-rel
在5mu
我熟悉的所有文档类中,并且由于\!
插入-3mu
(负)空格,您可以通过发出指令来实现日志的格式化目标
\everymath{\thickmuskip=2mu minus 2mu}
在序言中。请注意,\thickmuskip
显示的方程中使用的值是不是受此指令影响。(附注:如果amsmath
已加载包,则需要将的值\thickmuskip
明确重置为显示的方程的默认值,如下所示@egreg 的回答。
我不得不说,该期刊要求降低 的值\thickmuskip
,同时不要求降低 的值——该参数控制插入相邻的和类型数学原子(例如和)\medmuskip
之间的空格量——这近乎奇怪或荒谬。举个例子,等式math-ord
math-bin
+
-
1+1=2
的默认值\medmuskip
是。我认为在保持不变的情况下将其减少到 是4mu
一个非常糟糕的想法。因此,我建议您也执行类似\thickmuskip
2mu
\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 渲染的回归(.、-、/ 等字符变宽了),也影响了\nolinkurl
biblatex 中的链接。我通过添加来修复它
\def\Hurl{\begingroup \everymath{}\Url}
回到序言。