如何在 Koma-Script 中指定中间字体大小?

如何在 Koma-Script 中指定中间字体大小?

根据 KOMA-Script 手册,

KOMA-Script 类提供了选择主文档字体任意大小的功能。在此上下文中,可以使用任何众所周知的 TeX 度量单位,使用没有度量单位的数字表示 pt。

默认的 Koma Script 字体大小为 11 点。我可以毫无困难地指定 8 点,但如果我尝试 8.5 点,我会收到以下错误消息

LaTeX Warning: Unused global option(s):
    [8.5pt].

然后文本将恢复为默认的 11 点大小。那么如何在 KOMA-Script 中指定中间点大小?

为了回应 Johannes_B 的评论,我尝试这样做:

\documentclass[fontsize=8.5pt,paper=a6,pagesize]{scrbook} 
\KOMAoption{fontsize}{8.5pt}
 %if set here, you need to:
\recalctypearea 
\usepackage{fontspec,xltxtra,xunicode}
\defaultfontfeatures{Mapping=tex-text}
\setromanfont[Mapping=tex-text]{Minion Pro Cond}
\usepackage{blindtext} 
\begin{document} 
\blindtext 
\end{document}  

收到的错误信息是:

LaTeX Font Warning: Size substitutions with differences
(Font)              up to 0.5pt have occurred.

您必须指定两次字体大小,这有点奇怪;但没关系。但更重要的是,如果大小替换只是将字体降回 8 pt。或将其增加到 9pt,那么您实际上无法访问 Koma-script 中的中间点大小。还是?

(第二次编辑)为什么这个语法可以:A. \documentclass[8pt]{scrbook} 但这个不行?B. \documentclass[8.5pt]{scrbook}

我删除了 pagesize 代码,因为它不相关(除了与类型区域的计算有关)。在示例 A 中,没有“fontsize=8pt”声明,但该类生成 8 pt 排版。示例 B 产生先前的错误(即忽略全局选项),而添加“fontsize=8.5”会产生错误消息,提示字体大小可能被替换(您怎么知道?),差异最多为 0.5 pt(向上或向下或两者兼有?)。

答案1

只是为了正确获取代码:

警告非常清楚,您正在使用未定义的选项。按应有的方式设置字体大小。如果您没有全局设置它(作为 documentclass 的一个选项),而是在稍后使用,则\KOMAoption{fontsize}{4pt}需要告诉包typearea重新计算 typearea。

\documentclass[
fontsize=8.5pt,
paper=a6,
pagesize
]{scrartcl}
%\KOMAoption{fontsize}{8.5pt}
%\recalctypearea
\usepackage{blindtext}
\begin{document}
\blindtext
\end{document}

但您需要注意一点:尽管您可以请求任意大小的字体,但您需要有该大小的字体。如果没有,LaTeX 将回退到下一个匹配的可用字体大小。

答案2

LaTeX 试图给你有用的警告,在这种情况下它是有效的。只要记住总是看看第一的LaTeX 对某事的评论。


因此我们从 MWE 开始并用 对其进行编译pdflatex

\documentclass[
    paper=a6,
    8.5pt,
  ]{scrartcl}

\usepackage{lipsum}

\begin{document}

\lipsum[1]

\end{document}

LaTeX 告诉我们

LaTeX Warning: Unused global option(s):
    [8.5pt].

没有名为 的选项8.5pt。(有类似的选项,例如10pt将字体大小设置为给定值,但这些选项是专门定义的,您不能只插入任何尺寸并期望 KOMA 脚本知道如何处理它。)


好的,我们插入适当的选项

\documentclass[
    paper=a6,
    fontsize=8.5pt,
  ]{scrartcl}

\usepackage{lipsum}

\begin{document}

\lipsum[1]

\end{document}

LaTeX 告诉我们1

LaTeX Font Warning: Font shape `OT1/cmr/m/n' in size <8.5> not available
(Font)              size <8> substituted on input line 2162.

这是什么意思?好吧,为了排版包含 8.5pt 文本的文档,您必须使用提供这些字形的字体。默认字体(Computer Modern)不提供这些字形,因此 LaTeX 会选择接近的现有大小(8在本例中)并向您发出警告。您必须选择可缩放的字体才能获得任意字体大小。


我们可以加载lmodern以获得一种字体(Latin Modern),它看起来与 Computer Modern 非常相似,但可扩展。然而,它只可用 \begin{document},所以我们必须将字体大小的选择推迟到那时。

\documentclass[
    paper=a6,
  ]{scrartcl}

\usepackage{lmodern}
\AtBeginDocument{%
  \KOMAoption{fontsize}{8.5pt}%
  \recalctypearea
}

\usepackage{lipsum}

\begin{document}

\lipsum[1]

\end{document}

不再有警告。


1这就是pdflatex不同之处。如果我们使用lualatexxelatex,就可以正常工作。

答案3

检查.log文件显示,您收到的有关字体大小不可用的错误是针对某些旧式 7 位和 8 位数学字体的,这些字体fontspec与默认值没有变化。您可以通过加载任何设置可缩放数学字体的软件包来修复此错误,例如unicode-math(我个人推荐)newtxmathlmodern。您的文本字体已正确缩放。

没有必要再次使用 传递您已提供给文档类的选项,除非\KOMAoption是少数特殊情况,例如 schtandard 讨论的情况。在这种情况下,您不需要这样做。

您还会问为什么有类选项8pt而没有8.5pt。好问题!并不是每个可能的大小都有选项,例如10.125pt3.14129pt,更不用说fontsize=支持的其他高度单位10bp了,例如,因为会有无数个。LaTeX 不会将选项解析为十进制数加后缀。它有一个预定义的列表。首选使用的选项是fontsize=。当 TeX 使用 METAFONT 生成固定大小的位图字体时,标准文档类添加了像8pt和这样的选项11pt,而该界面已经过时了。这些选项是为了兼容性而保留下来的。

由于问题是关于字体缩放,因此我通常使用以下方式设置字体缩放fontspec

\defaultfontfeatures{Scale=MatchLowercase}
\setmainfont{Some Font}[Scale = 1.0]

这会将主字体设置为其自然大小,并自动将文档中的每个(现代)字体缩放到相同的 x 高度。在某些情况下,Scale=MatchUppercase可能更合适。

相关内容