我有一个这样的文档,但是当我通过调用xelatex
它来呈现它时,π 字符显示为空格:
\documentclass[13pt,oneside]{scrbook}
\usepackage{fontspec} % the problem remains, whether I use this or not
\begin{document}
\mainmatter
This is a paragraph with a PI (π) in it.
\end{document}
输出中的相关错误消息似乎是:
LaTeX Font Warning: Font shape `OT1/cmr/m/n' in size <13> not available
(Font) size <12> substituted on input line 1368.
我可以使用newunicode
char 包来解决这个问题,但是这有点笨拙(我必须定义我想要使用的每个 unicode 字符),并且不能很好地与字体兼容(当这些字符出现在等宽文本中时,它们将使用 sans 字体排版,因为它们被视为数学)。
问题似乎是我使用的字体没有定义给定的字符。在这种情况下,LaTeX 是否可能自动恢复到另一种更丰富的字体?哪种字体已知可以覆盖很多字符?(我需要一些希腊字母、数学符号、箭头和引号字符。)等宽字体怎么样?
答案1
编辑这是 egreg 的(更好的)解决方案,供将来参考,因为这个答案已经被接受了。
\RequirePackage{fix-cm}
\documentclass[fontsize=13pt,oneside]{scrbook}
\usepackage{fontspec}
\usepackage[Latin,Greek]{ucharclasses}
\newfontfamily\substitutefont{CMU Serif}
\setTransitionsForGreek{\begingroup\substitutefont}{\endgroup}
\begin{document}
\mainmatter
This is a paragraph with a PI (π) in it.
\end{document}
这是我写的原始消息,没有使用该\newfontfamily
命令。
使用 ucharclasses:
\usepackage{ucharclasses}
\setTransitionsFor{GreekAndCoptic}{\begingroup\fontspec{DejaVu Sans}[Scale=MatchLowercase]}{\endgroup}
(当然,将 DejaVu Sans 更改为系统上具有所需字符的任何字体。)
答案2
您报告的警告消息无关紧要且无害。如果您在\RequirePackage{fix-cm}
该\documentclass
行之前,它会消失,但希腊字母 pi 也不会出现。相关消息位于文件末尾.log
:
Missing character: There is no π in font [lmroman12-regular]:mapping=tex-text!
Latin Modern 字体仅支持少数希腊字母。使用 CMU Serif 字体会更幸运
\RequirePackage{fix-cm} % remove the spurious warning
\documentclass[fontsize=13pt,oneside]{scrbook}
\usepackage{fontspec}
\setmainfont{CMU Serif}
\begin{document}
\mainmatter
This is a paragraph with a PI (π) in it.
\end{document}
注意:允许将 13pt 设置为基本尺寸的事实scrbook
并不足以成为使用这种尺寸的充分理由。它要么太大(对于绝大多数人来说),要么太小(对于视障人士来说)。
答案3
我遇到了同样的错误,但在不同的环境中,是由 Pandoc Markdown 中的这一行和后台的 xelatex 引起的:
$\beta \in (0,1) $
显然,Pandoc 或 xelatex 不喜欢将空格作为方程式中的最后一个字符。
也许这会节省任何人来这里的几个小时,因为这是与此警告绑定的第一个链接[WARNING] Missing character: There is no