该类可以scrartcl
制作真正的14点类型吗?
它将产生 13.999pt、13.9999pt 和 13.99998pt,但 14pt 仅产生 14.4 点类型。
谢谢 :)
\documentclass[fontsize=13.999pt]{scrartcl}
\usepackage[letterpaper]{geometry}
\usepackage{fontspec}
\setmainfont{Vollkorn}
\makeatletter
\def\showfontsize{\f@size{} point}
\makeatother
\begin{document}
\showfontsize
\end{document}
更改fontsize
为 14pt:
\documentclass[fontsize=14.000pt]{scrartcl}
生成:
同样,将其更改fontsize
为 13.999999pt、13.9999999pt、13.99999999pt 等等,也会产生 14.4pt 类型。
奇怪的是:
\documentclass[fontsize=14.00001pt]{scrartcl}
生成:
和这个:
\documentclass[fontsize=14.000001pt]{scrartcl}
生成:
密切相关:如何使用 KOMA 脚本更改字体大小?
答案1
KOMA-Script 支持多种设置字体大小的方法。首先,如果你想fontsize=
<值>它尝试加载字体大小定义文件\@fontsizefilebase
<值>.clo. 如果找不到,它会尝试\@fontsizefilebase
<值>pt.clo
。如果没有找到,它会尝试size
<调整后的值>.clo
。<调整后的值>是以 pt 为单位的字体大小,但去除 后pt
,结果为,例如,10
10pt 为 ,11
为11pt
,14
为14pt
。最后但并非最不重要的是,KOMA-Script 为没有字体大小定义文件的字体大小提供了后备计算。
的默认\@fontsizefilebase
值为scrsize
,但您可以在之前更改它\documentclass
。
因此,使用fontsize=14pt
,scrartcl
搜索scrsize14pt.clo
和size14.clo
。如果您已安装包extsizes
,它会找到size14.clo
。在那里你可以找到:
\renewcommand\normalsize{%
\@setfontsize\normalsize\@xivpt{17}%
在 LaTeX 内核中:
\def\@xivpt{14.4}
这就是获得 14.4pt 而不是 14pt 的原因。
如果您确实想要 14pt,则需要创建自己的字体大小定义文件。您可以使用scrsize10pt.clo
,重命名并更改值。或者您可以使用:
\documentclass{scrartcl}
\usepackage{scrfontsizes}
\generatefontfile{afsize}{14pt}
\begin{document}
Test
\end{document}
生成afsize14pt.clo
。生成字体定义文件后:
\makeatletter
\newcommand*{\@fontsizefilebase}{afsize}
\makeatother
\documentclass[fontsize=14pt]{scrartcl}
\usepackage[letterpaper]{geometry}
\usepackage{fontspec}
\makeatletter
\def\showfontsize{\f@size{} point}
\makeatother
\begin{document}
\showfontsize
\end{document}
将导致:
最后但并非最不重要的
\documentclass[letterpaper,fontsize=14pt]{scrartcl}
\KOMAoptions{fontsize=14pt}
\makeatletter
\def\showfontsize{\f@size{} point}
\makeatother
\begin{document}
\showfontsize
\end{document}
也会导致使用 14pt,因为\KOMAoptions{fontsize=14pt}
使用了后备计算。这是 使用的相同字体大小计算\generatefontsizes
。尽管如此,在这个例子中,一些加载时间长度的初始化scrartcl
可以通过 的字体大小来完成size14.clo
。因此,如果您的文档需要至少两次 LaTeX 运行,那么结合这两种方法将是一种安全的解决方案:
\makeatletter
\newcommand*{\@fontsizefilebase}{afsize}% setup prefix of font declaration files
\makeatother
\documentclass[letterpaper,fontsize=14pt]{scrartcl}
% Generate and use the font size declaration file, if is does not exist
\IfFileExists{\csname @fontsizefilebase\endcsname 14pt.clo}{}{%
\usepackage{scrfontsizes}
\generatefontfile{afsize}{14pt}
\KOMAoptions{fontsize=14pt}
}
\begin{document}
\csname f@size\endcsname\ point
\end{document}
答案2
KOMA 有两种不同的系统来设置字体大小:
少量的字体大小选项(8pt、9pt、10pt、11pt、12pt、14pt 17pt、20pt)加载scrsizeXX.clo
(来自 KOMA)或(如果找到)sizeXX.clo
(来自extsize
包),其中声明了指定的字体大小。您可以通过编写合适的sizeXX.clo
或向此列表添加更多选项scrsizeXX.clo
。在这种情况下,实际字体大小可能与名称不同(这与标准类相同)。这发生在这里:
\documentclass[fontsize=14pt]{scrartcl}
\begin{document}
blub
\end{document}
Class scrartcl Info: File `size14.clo' used to setup font sizes on input line 2033.
由于舍入误差,接近 14pt 的值也可能会触发 size14.clo 的加载。
对于其他字体大小值,它将计算字体大小。在这种情况下,字体大小将完全符合要求。
对于 pdflatex 文档,字体大小是否仍有可能由于 fd 文件中的声明而发生变化。例如
\documentclass[fontsize=13.8pt]{scrartcl}
\begin{document}
blub
\end{document}
导致
LaTeX Font Warning: Font shape `OT1/cmr/m/n' in size <13.8> not available
(Font) size <14.4> substituted on input line 2033.
在这种情况下,您需要例如包 fix-cm。使用 xelatex 和 lualatex 则不需要。