我注意到,当使用命令\scalefont{}
(来自scalefnt
包)时,缩放因子的减小并不总是会导致显示字体大小的相应减小。
为了说明,考虑
\documentclass{book}
\textwidth=5.76in
\usepackage{scalefnt}
\usepackage{lipsum}
\usepackage{xcolor}
\begin{document}
\thispagestyle{empty}
\parindent 0pt
\large
\textcolor{red}{\LARGE{\textbf{A TITLE TO ILLUSTRATE AN OBSERVATION}}}
\textcolor{red}{\LARGE{\scalefont{0.99}{\textbf{A TITLE TO ILLUSTRATE AN OBSERVATION}}}}
\textcolor{red}{\LARGE{\scalefont{0.98}{\textbf{A TITLE TO ILLUSTRATE AN OBSERVATION}}}}
\textcolor{red}{\LARGE{\scalefont{0.97}{\textbf{A TITLE TO ILLUSTRATE AN OBSERVATION}}}}
\textcolor{red}{\LARGE{\scalefont{0.96}{\textbf{A TITLE TO ILLUSTRATE AN OBSERVATION}}}}
\textcolor{red}{\LARGE{\scalefont{0.95}{\textbf{A TITLE TO ILLUSTRATE AN OBSERVATION}}}}
\textcolor{red}{\LARGE{\scalefont{0.94}{\textbf{A TITLE TO ILLUSTRATE AN OBSERVATION}}}}
\textcolor{red}{\LARGE{\scalefont{0.93}{\textbf{A TITLE TO ILLUSTRATE AN OBSERVATION}}}}
\textcolor{red}{\LARGE{\scalefont{0.92}{\textbf{A TITLE TO ILLUSTRATE AN OBSERVATION}}}}
\\[3pt]
\textcolor{red}{\LARGE{\scalefont{0.91}{\textbf{A TITLE TO ILLUSTRATE AN OBSERVATION \textcolor{black}{(0.91)}}}}}
\\[8pt]
\lipsum[13]
\end{document}
其输出是
文本宽度设置为 5.76 英寸,并且输出中的第一个红色标题没有应用任何缩放。
应用于第二至第八个标题的缩放因子分别为 0.99、0.98、0.97、0.96、0.95、0.94、0.93 和 0.92。
但是,检查输出后发现没有实际的扩展一直持续到第十个标题——其与 0.91 的比例因子相关。
问题:是什么原因(可能)导致了缩放因子和实际输出之间的这种异常,根据 MWE,这似乎是经常发生的?有没有办法纠正这种现象,以便缩放因子的变化总是会产生一些影响——因为正如我们所见,巨大差距当字体大小最终减小时会发生这种情况,而人们在此过程中所期望的逐渐减小似乎目前无法实现?
谢谢。
答案1
注意 LaTeX 会发出警告。每次选择字体大小都会产生警告,例如
LaTeX Font Warning: Font shape `OT1/cmr/m/n' in size <15.89755> not available
(Font) size <17.28> substituted on input line 20.
在跑步结束时
LaTeX Font Warning: Size substitutions with differences
(Font) up to 1.38245pt have occurred.
Computer Modern 设置为仅使用一组固定的大小,以避免用位图字体填满您的磁盘,尽管在过去的 25 年左右的时间里,默认情况下并未使用位图字体,而是使用可扩展的 type1 版本,并且无论如何位图都不会填满您的磁盘。
如果你选择或多或少的任何其他字体集,它将按指定比例缩放,
\usepackage{lmodern}
使用拉丁现代变体,或者如果你想要自然缩放计算机现代,请添加
\RequirePackage{fix-cm}
在文档的开始处。
无关,但注意\Large
不接受参数,因此使用\Large ...
不\Large{...}
并将段落末尾包含在其范围内以获得适当大的基线跳过(这就是为什么图像中的大文本没有在合适的基线上间隔开的原因)
答案2
导致问题的原因:a) 字体必须是可缩放的 b) 您需要用 分隔每行\par
。因为 TeX 会将所有行视为一个段落,并应用一次字体大小。如果您可以使用 LuaLaTeX,它会为您提供更多使用该包的选项fontspec
。
% run with LuaLaTeX or pdfLaTeX
\documentclass{book}
\textwidth=5.76in
\usepackage{scalefnt}
\usepackage{xcolor}
\ifdefined\directlua
\usepackage{fontspec}
\setmainfont{texgyrepagella-regular.otf}[
BoldFont = texgyrepagella-bold.otf ,
ItalicFont = texgyrepagella-italic.otf ,
BoldItalicFont = texgyrepagella-bolditalic.otf ]
\else
\usepackage{mathpazo}
\fi
\begin{document}
\thispagestyle{empty}
\parindent 0pt
\large
\textcolor{red}{\LARGE{\textbf{A TITLE TO ILLUSTRATE AN OBSERVATION}}}\par
\textcolor{red}{\LARGE{\scalefont{0.99}{\textbf{A TITLE TO ILLUSTRATE AN OBSERVATION}}}}\par
\textcolor{red}{\LARGE{\scalefont{0.98}{\textbf{A TITLE TO ILLUSTRATE AN OBSERVATION}}}}\par
\textcolor{red}{\LARGE{\scalefont{0.97}{\textbf{A TITLE TO ILLUSTRATE AN OBSERVATION}}}}\par
\textcolor{red}{\LARGE{\scalefont{0.96}{\textbf{A TITLE TO ILLUSTRATE AN OBSERVATION}}}}\par
\textcolor{red}{\LARGE{\scalefont{0.95}{\textbf{A TITLE TO ILLUSTRATE AN OBSERVATION}}}}\par
\textcolor{red}{\LARGE{\scalefont{0.94}{\textbf{A TITLE TO ILLUSTRATE AN OBSERVATION}}}}\par
\textcolor{red}{\LARGE{\scalefont{0.93}{\textbf{A TITLE TO ILLUSTRATE AN OBSERVATION}}}}\par
\textcolor{red}{\LARGE{\scalefont{0.92}{\textbf{A TITLE TO ILLUSTRATE AN OBSERVATION}}}}\par
\textcolor{red}{\LARGE{\scalefont{0.91}{\textbf{A TITLE TO ILLUSTRATE AN OBSERVATION}}}}
\ExplSyntaxOn
\dim_zero:N \l_tmpa_dim
\dim_set:Nn \l_tmpa_dim {0.5pt}
\dim_while_do:nNnn {\l_tmpa_dim} < {13pt} {
\dim_add:Nn \l_tmpa_dim {1pt}
\bfseries\fontsize{\l_tmpa_dim}{\l_tmpa_dim*1.2}\selectfont
Fontsize\par
}
\ExplSyntaxOff
\end{document}