我需要在表格环境中将字体大小更改为 11pt。文档的默认设置是使用 的 12pt scrartcl
,但我需要在浮动中将其更改为精确的 11pt(原因是之前有几十个表格被创建为精确适合 11pt)。
我使用 KOMA\changefontsizes{11pt}
来执行此操作,但这会产生数十条警告:
使用后备计算来设置输入行的基本尺寸“11pt”的字体大小......
这有点令人困惑,因为如果我将整个文档更改为 11pt,这些警告就会消失,因此 11pt 应该存在。我认为该changefontsizes
命令就是为此目的而创建的。因此,如果有人能告诉我如何正确执行此操作,我将不胜感激。
\documentclass{scrartcl}[12pt]
\usepackage{lipsum}
\begin{document}
\lipsum[1]
\begin{table}\centering
\changefontsizes{11pt}\footnotesize
\begin{tabular}{|c|c|c|}
\hline
1 & 2 & 3 \\
4 & 5 & 6 \\
7 & 8 & 9 \\
\hline
\end{tabular}
\end{table}
\end{document}
答案1
你提到“之前创建的表格大小正好为 11pt”。如果您没有收到“数十条警告”,那么我想您是使用(默认)创建这些表的11pt
文档类选项创建了这些表。但是,此选项不是与发布相同\changefontsizes{11pt}
:
通过该
11pt
选项,您可以加载文件scrsize11pt.clo
,其中包括各种字体大小切换命令的定义。(\normalsize
顺便说一下,问题\@setfontsize\normalsize\@xipt{13.6}
是\@xipt
翻译成 10.95,而不是 11pt。)所有这些命令都使用在(不可扩展的)默认字体 Computer Modern 中可用的点大小。另一方面
\changefontsizes{11pt}
,\normalsize
的点大小恰好为 11pt,所有其他切换命令的点大小都是基于 的点大小计算的\normalsize
。因此,Computer Modern 必须进行尺寸替换,这就是“数十条警告”的含义。
解决方案是使用可缩放字体(例如 Latin Modern)而不是 Computer Modern。这将使您免于除一个警告之外的所有警告(来自课程,“使用后备计算来设置字体大小”)。(如果您够大胆,可以\makeatletter\input{scrsize11pt.clo}\makeatother
在浮动内发出问题,但.clo
文件并非设计为在文档中间加载,因此不能保证。)
答案2
\changefontsizes
在文档中并没有真正解释,但专家部分肯定有解释。所以,别管了。
更改大小的正确方法是使用界面
\KOMAoption{fontsize}{11pt}
。或者,如果您觉得有趣,您可以选择10.999999 pt
。KOMA 将查找具有预定义设置的现有文件,如果找不到,它将使用
\changefontsizes
。您可以在 Clemens 的精彩回答中了解有关该机制的更多信息使用后备计算来设置字体大小。
会发生什么\changefontsizes
?它接受一个参数,即所需的字体大小,\normalsize
并进行一些计算。理论上,您可以输入任何数字,甚至非整数,的算法scrextend
会完成其工作,计算相对大小,并使用这些值作为现在的默认值。该命令发出警告,指出它现在使用后备计算。
我们还发现,并非所有字体都适用于所有字体大小。然后 LaTeX 决定使用下一个最佳字体。我想我们都见过这样的警告
LaTeX Font Warning: Font shape `OT1/cmr/m/n' in size <3.7699> not
available
(Font) size <5> substituted on input line 47.
我们需要记住一件事:使用文档描述的界面,不要使用内部或低级或包作者命令来完成日常工作。
\listfiles
\documentclass[11pt]{article}
\usepackage{scrfontsizes}
\makeatletter
\newcommand{\currentsize}{{\par current text size: \f@size pt\par}}
\newcommand{\currentfnsize}{{\par\footnotesize current footnote size: \f@size pt\par}}
\newcommand{\currentlargesize}{{\par\large current large size: \f@size pt\par}}
\makeatother
\newcommand{\explain}[1]{\bigbreak\emph{ #1:}}
\begin{document}
\explain{global option 12 pt}
\currentsize \currentfnsize \currentlargesize
\explain{Using the KOMA-interface}
\KOMAoption{fontsize}{11pt}\currentsize
\currentsize \currentfnsize \currentlargesize
\explain{\texttt{changefontsizes 11 pt}}
\changefontsizes{11}
\currentsize \currentfnsize \currentlargesize
\explain{You can even do
\texttt{changefontsizes 11.375 pt}}
\changefontsizes{31.375}
\currentsize \currentfnsize \currentlargesize
\KOMAoption{fontsize}{3.141596pt}
\currentsize \currentfnsize \currentlargesize
\end{document}
如果需要使用非标准尺寸,最好生成一个clo
文件,而不是每次都计算值。您还可以更改该文件并在您认为合适的地方进行调整。软件包scrfontsizes
可帮助您完成此任务。
\documentclass{minimal}%ok just this time
\usepackage{scrfontsizes}
\generatefontfile{texsx}{11bp}
\begin{document}\end{document}
您现在可以使用新的字体大小,但需要定义前缀(在我们的例子中texsx
)修复。
\makeatletter
\newcommand*{\@fontsizefilebase}{texsx}
\makeatother
\documentclass[fontsize=11bp]{scrartcl}
\usepackage{blindtext}
\begin{document}
\blindtext
\end{document}