我如何才能微调并减少行的垂直间距,以便上下行的字符几乎互相像素接触?
例子:
答案1
虽然\offinterlineskip\lineskip1pt
似乎可以达到预期效果,但线条间距会不规则,因为基线之间的距离取决于上升部(如“d”这样的字母)或下降部(如“y”这样的字母)。此外,并非所有的下降部和上升部都是相等的。
可以通过调用来获得紧密排版,例如\fontsize{10}{10}
十点大小。可以通过修改内部函数来廉价地获得这样的设置\set@fontsize
:
\documentclass[a4paper]{article}
\usepackage{etoolbox,lipsum}
\makeatletter
\patchcmd\set@fontsize{#3}{#2}{}{}
\makeatother
\begin{document}
\lipsum[1]
\large\lipsum[2]
\end{document}
仅有的电子工具箱当然是必需的。补丁将用第二个参数替换对第三个参数的调用\set@fontsize
;第三个参数确实是 baselineskip,第二个参数是字体大小。
请注意,这将影响所有尺寸的所有文本。
如果只需要“紧密排版”某些段落,则tight
下面定义的环境即可完成此任务。这些\addvspace
命令的使用假设代码用于示例。主题可以有所变化。
\makeatletter
\let\tightset@fontsize\set@fontsize
\patchcmd\tightset@fontsize{#3}{#2}{}{}
\newenvironment{tight}
{\par\addvspace\topsep
\let\set@fontsize\tightset@fontsize
\fontsize{\f@size}{\f@baselineskip}\selectfont}
{\par\addvspace\topsep}
\makeatother
如果需要对标题进行紧密排版,则更简单。使用标题包定义使用的字体,例如
\DeclareCaptionFont{tight}{\fontsize{9}{9}\selectfont}
\captionsetup{font=tight,labelfont=bf}
答案2
\offinterlineskip
就是你想要的。
\documentclass{article}
\usepackage{lipsum}
\begin{document}
\lipsum[1]
{% Use it LOCALLY
\offinterlineskip
\lipsum[2]
}
\lipsum[3]
\end{document}
如果线条太近,您可以\lineskip=1pt
在后面添加。\offinterlineskip
关于行距主要有三个参数:\baselineskip
、\lineskip
和\lineskiplimit
。
TeXbook 的第 12 章(Glue)很好地解释了行距参数。或者,您也可以参阅TeX 按主题分类, 它说:
\baselineskip
:垂直列表中相邻框之间的“理想”基线距离。纯 TeX 默认值:12pt
。\lineskiplimit
:垂直列表中相邻框的底部和顶部之间要保持的距离。Plain TeX 默认值:0pt
。\lineskip
:如果相邻盒子底部和顶部之间的距离小于 ,则添加粘合。\lineskiplimit
普通 TeX 默认值:1pt
。
在LaTeX中,我们通常只\baselineskip
通过\fontsize
和来改变\linespread
,\lineskiplimit
而\lineskip
并不常用。
如果你想窥探,LaTeX 内核,\offinterlineskip
定义为:
\def\offinterlineskip{\baselineskip-\@m\p@
\lineskip\z@ \lineskiplimit\maxdimen}
答案3
要拉伸(或增加)行距,可以使用setspace
包裹或者使用\linespread{<factor>}
。使用后者,以下最小示例展示了更改 的一些效果\linespread
:
\documentclass{minimal}
\usepackage{lipsum}
\begin{document}
\lipsum[1]
\linespread{0.5}\selectfont
\lipsum[1]
\linespread{2}\selectfont
\lipsum[1]
\end{document}
输出如下所示:
这里也是关于这个话题的简短讨论TeX 常见问题解答。