不使用包的行距

不使用包的行距

我想确保我理解了这个命令的含义:

  • `\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}

如果你运行这个你将得到:

enter image description here

负值(以及已经很小的值)的结果很有趣,但人们需要意识到这里发生了什么:排版位置位于段落结束时最后一行文本的基线,而不是页面的底线。这就是为什么我必须添加这些额外的\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.61.31。我不确定使用非常小或负的值会有什么好处\linespread
  • 真的。
  • 或者您可以使用括号{...}\begingroup...进行分组\endgroup

关于包的一般情况:使用它们实际上是一个好主意(如果允许的话),因为它们提供了更改事物的接口,而不必担心细节。此外,它还能让您的代码干净且易读。

最后,我建议你阅读一下setspace.sty并查看在后台做了多少工作来保持文档的一致性。另请参阅为什么\linespread因素是这样的?了解有关\linespread不同文档字体大小的复杂细节的更多信息。

相关内容