限制单词间的收缩,而不影响正常的单词间距

限制单词间的收缩,而不影响正常的单词间距

关于 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,但需要考虑以下几点:

  1. 对 a 的任何分配\fontdimen都是全局的;
  2. \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}

在此处输入图片描述

相关内容