Scrartcl 13.999 分 14.4 分但不是 14 分?

Scrartcl 13.999 分 14.4 分但不是 14 分?

该类可以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 脚本更改字体大小?

有关的:Scrbook:使用后备计算来设置字体大小

答案1

KOMA-Script 支持多种设置字体大小的方法。首先,如果你想fontsize=<值>它尝试加载字体大小定义文件\@fontsizefilebase<值>.clo. 如果找不到,它会尝试\@fontsizefilebase<值>pt.clo。如果没有找到,它会尝试size<调整后的值>.clo<调整后的值>是以 pt 为单位的字体大小,但去除 后pt,结果为,例如,1010pt 为 ,1111pt1414pt。最后但并非最不重要的是,KOMA-Script 为没有字体大小定义文件的字体大小提供了后备计算。

的默认\@fontsizefilebase值为scrsize,但您可以在之前更改它\documentclass

因此,使用fontsize=14ptscrartcl搜索scrsize14pt.closize14.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}

将导致:

14 分

最后但并非最不重要的

\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 则不需要。

相关内容