考虑一下这个MWE:
\documentclass{minimal}
\usepackage{fontspec}
\setmainfont{Latin Modern Roman}
\setsansfont{Latin Modern Sans}
\setmonofont{Latin Modern Mono}
\begin{document}
X marks the spot.
\end{document}
在 Ubuntu 14.04.1 上使用 TeXLive 2014 的标准 ISO,LuaLaTex 可以编译此文件;而 XeLaTeX 则会出现此错误:
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!
! fontspec error: "font-not-found"
!
! The font "Latin Modern Roman" cannot be found.
!
! See the fontspec documentation for further information.
!
! For immediate help type H <return>.
!...............................................
l.4 \setmainfont{Latin Modern Roman}
发生了什么事?我该如何解决这个问题?
答案1
\usepackage{fontspec}
就足够了。默认情况下,它会将字体设置为 Latin Modern。也就是说,您的代码对我来说编译得很好。
我对 XeLaTeX 不太熟悉。但是,我知道它使用 OS 字体,并且我知道它处理事情的方式与 LuaLaTeX 不同。因此,您可能需要告诉您的系统有关 TeX 字体的信息。例如,我有以下配置文件/etc/fonts/conf.avail/09-texlive-fonts.conf
:
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
<dir>/usr/local/texlive/current/texmf-dist/fonts/opentype</dir>
<dir>/usr/local/texlive/current/texmf-dist/fonts/truetype</dir>
<dir>/usr/local/texlive/current/texmf-dist/fonts/type1</dir>
<dir>/usr/local/texlive/texmf-local/fonts/opentype</dir>
<dir>/usr/local/texlive/texmf-local/fonts/truetype</dir>
<dir>/usr/local/texlive/texmf-local/fonts/type1</dir>
</fontconfig>
然后,它就从 sym 链接过来了/etc/fonts/conf.d/
。然后,您需要更新fontconfig
缓存等。但是,处理此问题的最佳方法是查看您的发行版中是否有一个包,当安装其自己的包时,它会执行类似的操作。如果有,只需按照该包的提示进行操作,使其适应上游安装。
有用的命令:mkfontscale
,mkfontdir
fc-cache
。但请检查您的发行版 - 它可能更喜欢其中一些命令的包装器。
请注意,我使用的current
可能不适合您。您可能需要2014
改为使用。