我想在考试中使用以下字体:
- 普通文本: Arial(12 pt)
- 数学文本: Times New Roman Mathtype(13 pt)
我使用 Arial字体规格. 如何更改字体和大小的数学模式?
\documentclass[12pt,a4paper,addpoints]{exam}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage[dutch]{babel}
\usepackage{fontspec}
\setmainfont{Arial}
\begin{document}\noindent
This exam is in accordance with the format of the Dutch Final Central Exams.
\begin{questions}
\question
This text is \emph{Arial (12 pt)}.\\
The following should be \emph{Times New Roman Mathtype (13 pt)}:
\[a^2+b^2=c^2\] and \[\alpha+\beta=\gamma\] and \[f(x)=\sin\left(\frac{1}{2}x+2\pi\right)\]
Note that also $x+y=z$ should be in \emph{Times New Roman Mathtype (13 pt)}.
\begin{parts}
\part[1000]
How is it done?
\end{parts}
\end{questions}
End of the exam.
\end{document}
答案1
Egreg 的方法与我所用的基本方法相同,但有一些微妙之处。
首先,您的文本会太小。在这里,“12 pt”几乎肯定意味着 1/72 英寸的 12 个 PostScript 点。PDF、Word 以及自 1984 年以来制作的几乎所有软件都认为“点”就是这个意思。但 TeX 比这更古老,并且已经使用较小的“pt”超过四十年了。其他软件将 pt 称为 bp,表示“大点”。因此,您需要告诉文档类使用12bp
,或 1/6"。
但是,标准 TeX 类不允许您这样做,因此您需要加载另一个包来更改大小:
\usepackage[fontsize=12bp]{scrextend}
您没有提供荷兰考试风格的样本,但意图可能是使字母 x 在文本和数学模式下的高度相同,您可以使用 来实现Scale=MatchLowercase
。如果大写字母应该对齐,请使用Scale=MatchUppercase
。由于所有其他字体都应缩放到主字体,因此将其设为默认字体更简单:
\defaultfontfeatures{Scale=MatchLowercase}
接下来,指定“Times New Roman Mathtype”。由于没有这样的字体,我认为它指的是 Times New Roman,这是 Mathtype 程序所使用的字体。这是一个问题,因为 Mathtype 的数学符号和希腊字母来自 Symbol,而 Symbol 不使用标准编码。您必须替换另一种数学字体,例如 XITS 或 TeX Gyre Termes Math。
如果您在意 Times New Roman 与其他 Times 克隆字体之间的细微差别,那么有一种方法可以让您的数学字母使用 Times New Roman:选项range=
。\setmathfont
请注意,某些系统仍保留 90 年代的旧版 Times New Roman 和 Arial,其中不包括希腊文。
这给我们留下了:
\documentclass[a4paper,addpoints]{exam}
\usepackage[fontsize=12bp]{scrextend}
\usepackage[dutch]{babel}
\usepackage{unicode-math}
\defaultfontfeatures{Scale=MatchLowercase}
\setmainfont{Arial}[Scale=1.0]
\setsansfont{Arial}
\setmathfont{XITS Math}
%\setmathfont{Times New Roman}[range={up,"00-"FF}]
%\setmathfont{Times New Roman Italic}[range=it]
%\setmathfont{Times New Roman Bold}[range=bfup]
%\setmathfont{Times New Roman Bold Italic}[range=bfit]
\begin{document}\noindent
This exam is in accordance with the format of the Dutch Final Central Exams.
\begin{questions}
\question
This text is \emph{Arial (12 pt)}.\\
The following should be \emph{Times New Roman Mathtype (13 pt)}:
\[a^2+b^2=c^2\]
Note that also $x+y=z$ should be in \emph{Times New Roman Mathtype (13 pt)}.\\
And some Greek: $\Alpha\Beta\alpha\beta\symup{\alpha\beta}$. % These commands work in unicode-math.
\begin{parts}
\part[1000]
How is it done?
\end{parts}
\end{questions}
End of the exam.
\end{document}
您可以取消注释该\setmathfont
命令来更改字体,这样您就可以:
答案2
我做了一个实验:
\documentclass[12pt]{article}
\usepackage{fontspec}
\setmainfont{Arial}
\newfontfamily{\stix}{STIX Two Text}
\begin{document}
A{\stix A}
\sbox0{A}\the\ht0
\sbox0{\stix A}\the\ht0
\end{document}
计算 8.58984/7.944 得出 1.081299(四舍五入到小数点后六位)。请注意,13/12=1.083333。
现在如果我这样做
\documentclass[12pt]{article}
\usepackage{fontspec}
\setmainfont{Arial}
\newfontfamily{\stix}{STIX Two Text}[Scale=1.081299]
\begin{document}
A{\stix A}
\sbox0{A}\the\ht0
\sbox0{\stix A}\the\ht0
\end{document}
我明白了
我猜想该规范的目的是使文本和数学具有相同的高度。
如果我在你的代码中实现它exam
:
\documentclass[12pt,a4paper,addpoints]{exam}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage[dutch]{babel}
\usepackage{unicode-math}
\setmainfont{Arial}
\setmathfont{STIX Two Math}[Scale=1.081299]
\begin{document}\noindent
This exam is in accordance with the format of the Dutch Final Central Exams.
\begin{questions}
\question
This text is \emph{Arial (12 pt)}.\\
The following should be \emph{Times New Roman Mathtype (13 pt)}:
\[a^2+b^2=c^2\]
Note that also $x+y=z$ should be in \emph{Times New Roman Mathtype (13 pt)}.
\begin{parts}
\part[1000]
How is it done?
\end{parts}
\end{questions}
End of the exam.
\end{document}
为了完整性,以下是输出Scale=1.083333
:
您可以使用 TeX Gyre Termes Math,而不是 STIX Two Math。