最近我从 切换到pdflatex
以便xelatex
能够使用 OpenType 字体。我喜欢使用突出显示的变量来\mathcal
表示特定变量,而我过去使用\mathscr
-typeset 变量来表示矩阵。但是当我使用 XeLaTeX 编译时,它们看起来完全一样。
旧代码
\documentclass{standalone}
\usepackage{mathrsfs}
\begin{document}
$\mathcal{C} = \mathscr{C}$
\end{document}
输出
新代码
\documentclass{standalone}
\usepackage{unicode-math}
\begin{document}
$\mathcal{C} = \mathscr{C}$
\end{document}
输出
破译密码
我试图从中找回字形mathrsfs
,但是却失败了。
\documentclass{standalone}
\usepackage{unicode-math}
\usepackage{mathrsfs}
\begin{document}
$\mathcal{C} = \mathscr{C}$
\end{document}
输出
问题:我怎样才能恢复这种行为?原则上,我希望获得Computer/Latin Modern 版本的旧\mathcal
字母。pdflatex
替代解决方案(附录 2016/05/11)
答案1
您有多种选择
不要使用unicode-math
除非您有特殊的理由使用它,否则您不必使用它,并且您的旧代码应该可以正常工作。
\documentclass{standalone}
\usepackage{mathrsfs}
\begin{document}
$\mathcal{C} = \mathscr{C}$
\end{document}
使用不同的数学字体
一些 OpenType 数学字体(如 XITS Math)既有数学书法字母,也有数学脚本字母。默认情况下,XITS Math 有数学脚本字母,数学书法字母可通过样式集 1 获得。我们可以使用unicode-math
\documentclass{standalone}
\usepackage{unicode-math}
\setmathfont{XITS Math}
\setmathfont[range={\mathcal,\mathbfcal},StylisticSet=1]{XITS Math}
\begin{document}
$\mathcal{C} = \mathscr{C}$
\end{document}
使用\mathscr
不同的字体
默认字体 Latin Modern Math 仅包含数学书法字母;我们可以使用 XITS Math 中的数学脚本。虽然unicode-math
默认情况下会加载 Latin Modern Math,但出于某种原因我们必须明确使用它,否则事情会不太正确。
\documentclass{standalone}
\usepackage{unicode-math}
\setmathfont{Latin Modern Math}
\setmathfont[range={\mathscr,\mathbfscr}]{XITS Math}
\begin{document}
$\mathcal{C} = \mathscr{C}$
\end{document}
话虽如此,这种复杂情况的根源在于,编码 Unicode 数学符号的人无法找到任何令人信服的证据证明在数学中,书法字母和数学脚本在相同的语境中具有不同的含义,因此他们认为这只是一种风格上的差异,而不是语义上的差异,所以它们在编码上是统一的。
答案2
当 Unicode 添加数学字母块时,他们决定不将脚本和书法视为不同的,我认为 unicode-math 或多或少作为设计原则遵循了这一点。
如果你查看日志,你会看到
Missing character: There is no
答案3
您可以对不同的范围使用不同的字体;XITS Math 具有与通常的字体类似的书法字母。
\documentclass{standalone}
\usepackage{unicode-math}
\setmathfont{Latin Modern Math}
\setmathfont[range={\mathcal,\mathbfcal},StylisticSet=1]{XITS Math}
\setmathfont[range=\mathscr]{XITS Math}
\begin{document}
$\mathcal{ABCDEF} = \mathscr{ABCDEF}$
\end{document}