我尝试在使用 XeLaTeX 处理的文档中使用 CMU Serif Upright Italic 来表示一些直立符号,但出现错误“找不到字体 CMU Serif Upright Italic”。
这个字体不是 TeXLive 的一部分吗?如果不是,那么从哪里可以得到它?
\documentclass{article}
\usepackage{fontspec}
\usepackage{polyglossia}
\usepackage[math-style=ISO]{unicode-math}
\setdefaultlanguage[variant=american]{english}
\setotherlanguages{french,german,polish,russian}
%% Choose Latin Modern...
\defaultfontfeatures{Scale=MatchLowercase, Ligatures=TeX}
\setmainfont{Latin Modern Roman}[Scale=1.0]
\setmathfont{Latin Modern Math}
\setmathfont{CMU Serif Upright Italic}[range=up]
\newcommand\upi{\symup{i}}
\newcommand\upe{\symup{e}}
\newcommand{\uppi}{\symup{\pi}}
\begin{document}
$\upe^{\uppi \upi} = - 1$
\end{document}
答案1
如果您不确定文件安装在哪里,请先运行fc-match "CMU Serif Upright Italic"
复制 XeLaTeX 的字体搜索,然后luaotfload-tool --find="CMU Serif Upright Italic"
复制 LuaLaTeX 的字体搜索。我怀疑后者会起作用,但如果不行,下一步要尝试的是kpsewhich cmunui.otf
。如果找不到,请确保cm-unicode
安装了 TeX Live 或 MikTeX 包。特别是,使用查找字体\setmathfont
通常不足以提醒 MikTeX 应该安装包。
在 Linux 上,此问题通常是由系统字体数据库不知道索引您的自定义 TeX Live 字体目录引起的。在 Debian 或 Ubuntu 上启用此功能所需的文件包含在 TeX Live 发行版中,但您必须自行将其安装到正确的系统目录中。
kpsewhich texlive-fontconfig.conf
看看你是否有这个文件,然后
sudo cp $(kpsewhich texlive-fontconfig.conf) /etc/fonts/conf.d/09-texlive.conf
以合理的优先级将其安装在系统配置目录中。我另外在自己的机器上为texmf-local
目录中的字体创建了另一个具有相同格式的文件,但您可以选择将 OpenType 字体安装到TEXMFLOCAL/usr/local/share/fonts/
或~/.fonts/
替代 TEXMFLOCAL。
然后运行
fc-cache -f -s -v
更新字体缓存。
您也可以改用 LuaLaTeX,它应该可以开箱即用。
最后,即使 XeTeX 没有索引其显示名称,通过文件名加载文件仍然有效:
\setmathfont{cmunui.otf}[range=up,
Scale=MatchLowercase]