提问于:
浏览数:
4066
我最近在试着将一个Word模板改写成latex模板,首先碰到行间距的问题。Word的多倍行距指的是两行字体间的空白空间,所以1.5倍行距就是两行字体间隔1.5倍字体高度的距离。根据这个我以为可以很快将latex中的行间距调整到一致,但是,我发现latex的行间距则较为复杂,需要很好理解`\baselineskip`,`\baselinestretch`。
关于`\baselineskip`文档上是这么说的:
> `\baselineskip` is a length command which specifies the minimum space between the botton of two successive lines in a paragraph.
根据这个解释,大多数资料里都认为`baselineskip`指的是两行字的baseline之间的距离,像下面这样:
> Synopsis \baselineskip=[length]
> Description . A parameter that tells TeX the distance between baselines.
但是,我在mac和pc上安装texlive分别进行测试,发现好像不是这样的。我用下面的测试文档,分别用10pt和12pt默认字号,pdflatex和xelatex编译测试。
```
\documentclass[UTF8,10pt]{article}
\begin{document}
baselineskip: \the\baselineskip
The first paragraph.. xyzXYZ, The first paragraph.. xyzXYZ, The first paragraph.. xyzXYZ, The first paragraph.. xyzXYZ, The first paragraph.. xyzXYZ, The first paragraph.. xyzXYZ, The first paragraph.. xyzXYZ, The first paragraph.. xyzXYZ, The first paragraph.. xyzXYZ, The first paragraph.. xyzXYZ, The first paragraph.. xyzXYZ, The first paragraph.. xyzXYZ, The first paragraph.. xyzXYZ, The first paragraph.. xyzXYZ, The first paragraph.. xyzXYZ, The first paragraph.. xyzXYZ, The first paragraph.. xyzXYZ, The first paragraph.. xyzXYZ
\end{document}
```
生成pdf后我粗略测量字体和baseline之间的距离,结果如下图:
![](https://pics.latexstudio.net/data/images/202002/6f2f8f73e87cb05.png)
对于10pt和12pt字体,`baselineskip`的值分别为12和14.4,和资料中说的,`baselineskip`默认是字体大小的1.2倍左右吻合,但是生成的pdf中,基线之间的距离和字体大小却不是1.2而是接近1.4,这是怎么回事?是我测量的字体大小不对?还是有其他设置调整了行距?还是其他?
刚接触latex,如有什么疏漏,尚望指出,谢谢各位!
2 回答
0
看看这个文章
https://www.zhihu.com/question/62327906
0
> 但是生成的pdf中,基线之间的距离和字体大小却不是1.2而是接近1.4,这是怎么回事?
因为 10pt 字号下的大写字母高度,不是 10pt。
可以利用 `\rule` 直接绘制指定高度的线,省去测量的麻烦和不精确。
```tex
\documentclass{article}
\usepackage{xcolor}
\makeatletter
\newcommand{\baselinerule}{%
\leavevmode\rlap{\color{blue}\rule{.2\linewidth}{.5pt}}}
\newcommand{\baselineskiprule}{%
\leavevmode{\color{red}\rule[\dimexpr\f@size pt-\baselineskip\relax]{2pt}{\baselineskip}}%
\llap{\rule{2pt}{\f@size pt}}\space}
\makeatletter
\begin{document}
\noindent
\baselinerule content \baselineskiprule XXX\\
\baselinerule content \baselineskiprule XXX\\
\end{document}
```
![](https://pics.latexstudio.net/data/images/202002/98397af0027645f.png)
在输出结果中,蓝色横线表示行所在的基线,黑色色块高度代表当前字号(例如 10pt),红色色块高度表示当前默认行距超出字号的部分(例如 12pt - 10pt = 2pt)。
-
回复 undefined :大写 M 字母大概是 1 em 的宽度,除此之外,字号的大小和字体中任一字母的全高(高度 深度)没有直接关系 – 论坛 github.com/CTeX 2020-02-17 20:36 回复
-
非常感谢,应该是这样,字号的大小应该不完全是字体最低点到最高点之间的距离,我也找到一个链接说明这个问题,https://graphicdesign.stackexchange.com/question – Tianpeng 2020-02-17 16:46 回复
你的回答
请登录后回答
你的回答将会帮助更多人,请务必认真回答问题。