关于 Latex 中的单词间距有很多问题,但这个问题不同。我通常对默认间距感到满意,不想更改它。但是,有时 Latex 会将单词间距缩短太多,使文本行非常紧凑。我的猜测是,正常单词间距可以减少多少肯定存在某个阈值,我想只更改这个阈值,而不影响其他任何东西。
比如我把阈值设为2pt,那么我期望对于每对连续距离大于2点的单词,这个距离不会改变,而对于每对连续距离小于2点的单词,这个距离会增加到2点。
是否可以?
答案1
可收缩量由当前字体的字体度量定义。其值可以检索为,\fontdimen4\font
并且应该将其与位于的标准字间空间进行比较\fontdimen2\font
。10pt 的标准 Computer Modern Roman 字体具有
\fontdimen 2 = 3.33333pt
\fontdimen 4 = 1.11111pt
而 NewTX 字体(Times 的克隆版)
\fontdimen 2 = 2.5pt
\fontdimen 4 = 1.00006pt
因此单词间距最多可以缩小 1.5pt。相比之下,TeX Gyre Bonum 字体的宽度相当大,
\fontdimen 2 = 3.2pt
\fontdimen 4 = 1.06999pt
不存在“通用阈值”:由字体设计师决定。
您可以更改相关的值\fontdimen
,但需要考虑以下几点:
- 对 a 的任何分配
\fontdimen
都是全局的; \fontdimen
必须为您使用的每种字体变体(形状,粗细或大小)分配不同的字体。
所以,如果你这样做
\AtBeginDocument{\fontdimen4\font=1pt }
这只会影响\normalfont
。\normalsize
您可能会将其\selectfont
设置\fontdimen4\font
为 的三分之一\fontdimen2\font
,但这也会对通常具有零可收缩性的等宽字体起作用。
例子。
\documentclass{article}
\usepackage{newtx}
\AddToHook{selectfont}{%
\ifdim\fontdimen4\font>0pt
\fontdimen4\font=\dimexpr\fontdimen2\font/3\relax
\fi
}
\begin{document}
2: \the\fontdimen2\font
4: \the\fontdimen4\font
\itshape
2: \the\fontdimen2\font
4: \the\fontdimen4\font
\upshape\Large
2: \the\fontdimen2\font
4: \the\fontdimen4\font
\ttfamily
2: \the\fontdimen2\font
4: \the\fontdimen4\font
\end{document}
如果没有\AddToHook
声明,相同的代码将会产生
答案2
修改后的答案
我原来的答案仍然提供了有用的信息,所以我把它留在了下面。然而,OP在修改问题时似乎想指定默认的单词间距(\fontdimen2
),希望在阈值()以下单词之间的收缩为零\fontdimen4
。目前尚不清楚OP是否希望指定单词间距()的允许扩展量\fontdimen3
。
可以通过以下方式设置这些来实现 OP 的目标:
\fontdimen2\font=2pt% What the OP calls "Threshold"
\fontdimen3\font=22pt% allowable expansion beyond "Threshold"
\fontdimen4\font=0pt% Space will never shrink below threshold
请参阅接受的答案不同的 \fontdimen<num> 代表什么意思更多细节。
原始答案
只要 [全] 行上的字符标称宽度与行宽不匹配,就可能发生收缩。此时,在排版段落时,TeX 将扩展或收缩粘连尺寸,以匹配行宽,同时最大化“质量”算法,它通过一系列用户可设置的惩罚来实现这一点。
像这样的命令\sloppy
仅仅是对质量算法所使用的某些惩罚的重置。
的当前值\fontdimen4
可以通过 来查看\the\fontdimen4\font
。其值可以通过 相对地改变
\fontdimen4\font=\dimexpr\fontdimen4\font-1pt\relax
以下 3 种情况均超出了规则给出的文本宽度。但是,允许收缩的量会根据 的设置而变化\fontdimen4
。
\documentclass[11pt]{article}
\textwidth=.95in
\begin{document}
\noindent\rule{\textwidth}{2pt}
Test of spacing
\fontdimen4\font=0pt
Test of spacing
\fontdimen4\font=3pt
Test of spacing
\end{document}
当没有收缩要求时,例如设置为 2in 时,所有 3 种情况都无法区分。还显示了相对于其当前值\textwidth
如何变化。\fontdimen4
\documentclass[11pt]{article}
\textwidth=2in
\begin{document}
\noindent\rule{\textwidth}{2pt}
Test of spacing
\fontdimen4\font=0pt
Test of spacing
\fontdimen4\font=3pt
Test of spacing
Value of fontdimen4:
\the\fontdimen4\font
Changing its relative value:
\fontdimen4\font=\dimexpr\fontdimen4\font-1pt\relax
\the\fontdimen4\font
\end{document}