让 unicode 字符和 siunitx \ang{} 一起工作

让 unicode 字符和 siunitx \ang{} 一起工作

代码

% !TeX program = lualatex
\documentclass{article}

\usepackage{lmodern}

\usepackage{fontspec, newunicodechar}
\newfontfamily{\fallbackfont}{DejaVu Sans Mono}[Scale=MatchLowercase]
\DeclareTextFontCommand{\textfallback}{\fallbackfont}
\newunicodechar{✓}{\textfallback{✓}}
\newunicodechar{✗}{\textfallback{✗}}

\usepackage{siunitx}

\begin{document}
\ang{4} ✓ ✗
\end{document}

输出

度数符号不起作用的输出。

问题

当我删除时\usepackage{lmodern},所有符号都起作用,但我想要lmodern字体。 输出所有符号起作用的位置。

这部分定义了 lmodern 中不存在的后备字符:

\usepackage{fontspec, newunicodechar}
\newfontfamily{\fallbackfont}{DejaVu Sans Mono}[Scale=MatchLowercase]
\DeclareTextFontCommand{\textfallback}{\fallbackfont}
\newunicodechar{✓}{\textfallback{✓}}
\newunicodechar{✗}{\textfallback{✗}}

当我移除该部分时,度数符号又开始起作用。 仅度数符号起作用的输出。

问题

这两个东西为什么有冲突?明明lmodern可以显示度数符号,怎么解决?

答案1

不要lmodern一起加载fontspec

fontspec加载默认字体时,拉丁现代:

\documentclass{article}

\usepackage{fontspec, newunicodechar}

\newfontfamily{\fallbackfont}{DejaVu Sans Mono}[Scale=MatchLowercase]
\DeclareTextFontCommand{\textfallback}{\fallbackfont}

\newunicodechar{✓}{\textfallback{✓}}
\newunicodechar{✗}{\textfallback{✗}}

\usepackage{siunitx}

\begin{document}

\ang{4} ✓ ✗

\fontname\font

\end{document}

在此处输入图片描述

相关内容