我想确保我理解了这个命令的含义:
- `\linespread` 命令提供只有两个值:1.6(两个空白行)和 1.3(1 1/2 个空白行)
- 在序言中设置,它会影响整个文档
- 为了将其限制在一个区域,我必须使用:
\linespread{value}\selectfont % sets (new) value for extra vertical space between lines
text input words input text
\linespread{1}\selectfont % resets to value set in preamble OR default level
我的问题是:
有没有办法用这个命令设置一个值,比如 0.2 或负值,但是没有使用额外的包裹?
我刚刚开始学习 LaTeX,在开始使用包、扩展等之前,我想尽可能地坚持使用基本命令和基本功能。到目前为止,我所能找到的只是一些包或解决方法,它们似乎与我目前的水平有点相差甚远。
答案1
您错了(我不知道您从哪里得到\linespread
只支持这两个值的信息),它支持任何值(但并非每个值都有意义)。正如@egreg 所提到的,通常需要调整的不仅仅是行扩展,而且软件包会为您捆绑这类工作并提供足够的接口。
然而,要了解事情是如何运作的,请考虑下面的小文档并查看其结果:
\documentclass{article}
\newcommand\test[1]{\linespread{#1}\selectfont
This paragraph uses linespread=#1:
Some text to try out the result of linespread. A little more to have a least three lines on this measure.
Finish off with a paragraph end so that linebreaking happens.\par\bigskip}
\begin{document}
\test{1}
\test{2}
\linespread{1}\selectfont % reset
{\itshape Going very small means that the baselineskip might become smaller than the text height, but by default a different mechanism will then kick in and keep the lines apart by a minimum of \verb=\lineskip= so nothing overlaps here not even with -1.}
\bigskip
\test{0.5}
\test{0.1}
\test{-1}
{\itshape But if we disable \LaTeX{} setting that keeps lines apart then we get overlaps. Or even a reversal of lines.}
\setlength\lineskiplimit{-1000pt} % allow boxes to overlap by this much
\bigskip
\test{0.5}
\vspace{1cm} % extra space to see what's happening
\test{0.1}
\vspace{1.5cm} % extra space to see what's happening
\test{-1} % this is now reversed
\end{document}
如果你运行这个你将得到:
负值(以及已经很小的值)的结果很有趣,但人们需要意识到这里发生了什么:排版位置位于段落结束时最后一行文本的基线,而不是页面的底线。这就是为什么我必须添加这些额外的\vspace
命令来跳过已经排版的文本,所以这根本没有用。
答案2
以下是关于的一些信息\linespread
,逐字摘录自为啥不起作用\linespread
?:
该命令
\linespread{<factor>}
应该将电流乘以\baselineskip
;<factor>
但是,从表面上看,事实并非如此。事实上,该命令相当于
\renewcommand{\baselinestretch}{<factor>}
:这样写,效果不是立即的,这似乎并不那么令人惊讶。该\baselinestretch
因子仅在选择字体时使用;仅仅改变\baselinestretch
不会改变字体,命令也是如此\fontsize{<size>}{<baselineskip>}
——您必须在任一命令后跟\selectfont
。因此:\fontsize{10}{12}% \selectfont
或者:
\linespread{1.2}% \selectfont
当然,诸如 这样的包
setspace
,其职责是管理基线,它将处理所有这些内容 — 请参阅“管理双倍行距文档”。如果你想避免,请注意段落内的变化setspace
行为:阅读“\linespread
\baselineskip
是段落参数”。
最后一条注释指的是 TeX 实际上通过首先组合段落的所有文本然后将其分成几行来设置行/句子。因此,有时更改\baselineskip
或之类的内容\linespread
只会对段落产生影响,而不会对行产生影响。
针对您的要点,我们进行具体的“回答”:
- 不,
\linespread
取任意因子,而不仅仅是1.6
或1.3
或1
。我不确定使用非常小或负的值会有什么好处\linespread
。 - 真的。
- 或者您可以使用括号
{
...}
或\begingroup
...进行分组\endgroup
。
关于包的一般情况:使用它们实际上是一个好主意(如果允许的话),因为它们提供了更改事物的接口,而不必担心细节。此外,它还能让您的代码干净且易读。
最后,我建议你阅读一下setspace.sty
并查看在后台做了多少工作来保持文档的一致性。另请参阅为什么\linespread
因素是这样的?了解有关\linespread
不同文档字体大小的复杂细节的更多信息。