日文系统中的度数符号

日文系统中的度数符号

我正在尝试在运行英文版 Windows 7 的日本计算机上为角度写一个度数符号。考虑在 TeXLive 2017 上使用 LuaLaTeX 1.0.4 编译的以下 MWE:

\documentclass{scrreprt}

\usepackage{siunitx}
\usepackage{lmodern}
\usepackage{polyglossia}
\setdefaultlanguage{english}

\begin{document}
The angle is \ang{30}.
\end{document}

该代码的输出是以下字符串:

角度为 30r

通过将 documentclass 更改为 report 或删除 lmodern,我得到了正确的度数符号。为什么会发生这种情况?有没有办法使用这些包来生成正确的字符?

答案1

该问题与 KOMA-Script 无关。使用当前的 TeX Live 2018,我使用标准类report而不是获得了相同的结果scrreprt

您不需要\usepackage{lmodern},因为 LuaLaTeX 已经使用 Latin Modern 作为默认字体。此外,默认(没有lmodern)使用的是 OpenType Latin Modern 字体。这些是 unicode 字体,包含的字形比 所使用的旧字体多得多,\usepackage{lmodern}并且限制为 256 个字符。而且 LuaLaTeX 准备使用其中几个额外的字形。

如果您加载\usepackage{lmodern}并切换到旧字体,则每个字体限制为 256 个字符。所以您不应该使用\usepackage{lmodern}

顺便说一句:如果您想使用其他字体而不是默认的 Latin Modern,建议使用包fontspec和命令(如\setmainfont\setsansfont)来加载 OpenType(或至少是 Type-1)字体。此类字体可以包含远超 256 个字符。

因此我建议使用:

\documentclass{report}

\usepackage{siunitx}
\usepackage{polyglossia}
\setdefaultlanguage{english}

\begin{document}
The angle is \ang{30}.
\end{document}

或者

\documentclass{report}

\usepackage{fontspec}
\usepackage{siunitx}
\usepackage{polyglossia}
\setdefaultlanguage{english}

\begin{document}
The angle is \ang{30}.
\end{document}

对于额外的数学功能,另请参阅包unicode-math

相关内容