我刚刚尝试使用 XeLaTeX 重新编译该russian-babel
包的文档文件。源文件russianb.dtx
最后一次修改是在 2017 年 1 月(https://www.ctan.org/pkg/babel-russian),然后编译总是成功的。但现在我得到了一个编译错误。经过短暂的调查发现,CMU 字体是导致问题的原因,如下例所示。
\documentclass{article}
\usepackage{fontspec}
\defaultfontfeatures{Ligatures={TeX}}
%\setmainfont{STIX Two}[
% UprightFont={* Math},
% %UprightFont={* Text},
% ItalicFont={* Text Italic},
% BoldFont={* Text Bold},
% BoldItalicFont={* Text Bold Italic},
%]
\setmainfont{CMU Serif}
\setsansfont{CMU Sans Serif}
\setmonofont{CMU Typewriter Text}
\usepackage[russian,english]{babel}
\begin{document}
English
\textsf{English}
\texttt{English}
\selectlanguage{russian}
Русский
\textsf{Русский}
\texttt{Русский}
\end{document}
编译因以下错误而终止:
dvipdfmx:fatal: This font using the "seac" command for accented characters...
No output PDF file written.
)
Error 1 (driver return code) generating output;
file test-CMU.pdf may not be valid.
因此可以猜测错误是由 XeLaTeX 可执行文件的一些最新更改引起的。有人能帮忙解决这个问题吗?但请注意,如果用 STIX Two 字体替换 CMU 字体,编译就会成功。
答案1
如果添加,\XeTeXtracingfonts=1
您可以在日志中看到 miktex 为打字机字体找到 type1 字体(a .pfb
):
/MiKTeX 2.9/fonts/type1/public/cm-unicode/cmuntt.pfb
当尝试排版带有重音符号的字符时,此操作会失败。
您可以通过使用文件名而不是字体名称来设置字体来避免这种情况(您也许必须设置类似的粗体打字机):
\setmonofont{cmuntt.otf}