\fontsize{...}{some length} 和 \linespread{some length} 之间有什么区别?

\fontsize{...}{some length} 和 \linespread{some length} 之间有什么区别?

我注意到的第二个参数\fontsize和第一个参数\linespread似乎都会改变文本行之间的间距。它们之间有什么区别?我是否应该使用其中一种?

答案1

的参数\linespread是一个实数(不是长度),而的两个参数\fontsize都是长度。

\fontsize{<size>}{<baselineskip>}设置字体<size><baselineskip>同时\linespread{<factor>}用作多种的对于\baselineskip。事实上,后者实际上相当于

\renewcommand{\baselinestretch}{<factor>}

使用哪种字体由您决定。但是,两者都需要选择字体才能激活。有关此特性的更多信息,请参阅 TeX FAQ 条目为啥不起作用\linespread

在 LaTeX 内核中,\fontsize定义\linespread

\DeclareRobustCommand\linespread[1]
   {\set@fontsize{#1}\f@size\f@baselineskip}
\DeclareRobustCommand\fontsize[2]
   {\set@fontsize\baselinestretch{#1}{#2}}

请注意,两者都利用了\set@fontsize{<factor>}{<size>}{<baselineskip>}。将两者分开的原因是允许您使用修复一个,同时操纵另一个。一旦调用,它就会创建设置为其自身的倍数并将此结果存储在中以供其他用途(除其他外)。调用“使用”这些设置。对于内心狂野的人\set@fontsize来说,这里是细节(带有一些评论):\size@update\baselineskip\baselinestretch\normalbaselineskip\selectfont

\def\set@fontsize#1#2#3{%
    \@defaultunits\@tempdimb#2pt\relax\@nnil
    \edef\f@size{\strip@pt\@tempdimb}% <-- extracts font size
    \@defaultunits\@tempskipa#3pt\relax\@nnil
    \edef\f@baselineskip{\the\@tempskipa}% <-- extracts baseline skip
    \edef\f@linespread{#1}% <-- extracts baseline stretch
    \let\baselinestretch\f@linespread% <-- stores baseline stretch
      \def\size@update{%
        \baselineskip\f@baselineskip\relax% <-- stores baseline skip in \baselineskip
        \baselineskip\f@linespread\baselineskip% <-- multiplies \baselineskip by \baselinestretch
        \normalbaselineskip\baselineskip% <-- stores \normalbaselineskip
        \setbox\strutbox\hbox{%
          \vrule\@height.7\baselineskip
                \@depth.3\baselineskip
                \@width\z@}%
        \let\size@update\relax}%
  }

所有这些复杂的事情都可以通过setspace保持一致性。

相关内容