usepackage unicode-math 导致符号字体不足错误

usepackage unicode-math 导致符号字体不足错误

我正在做一个中英混合文档,之前用的是pdflatex,现在为了改数学字体,改用xelatex了。

但是,当我尝试更改字体时,会出现许多错误。我的文档使用 pdflatex 和 xelatex 构建得很好。但是当我添加以下内容时:

\usepackage{unicode-math}
\setmainfont{Latin Modern Roman}
\setmathfont{Latin Modern Math}

弹出许多错误,例如:

Math formula deleted: Insufficient symbol fonts. \maketitle
Math formula deleted: Insufficient symbol fonts. \maketitle
Math formula deleted: Insufficient symbol fonts. \contentsline {chapter}{序言}{1}{chapter*.5}
Math formula deleted: Insufficient symbol fonts. \contentsline {chapter}{序言}{1}{chapter*.5}
Math formula deleted: Insufficient symbol fonts. ...一章\hspace {0.3em}}引言}{3}{chapter.1}
Math formula deleted: Insufficient symbol fonts. ...rline {1.1}问题的提出}{3}{section.1.1}
Math formula deleted: Insufficient symbol fonts. ...下的发展与变化}{3}{subsection.1.1.1}
Math formula deleted: Insufficient symbol fonts. ...复用的分类}{3}{subsubsection.1.1.1.1}
Math formula deleted: Insufficient symbol fonts. ...的发展趋势}{3}{subsubsection.1.1.1.2}
Math formula deleted: Insufficient symbol fonts. ...}软件资源分类研究}{3}{section.1.2}
Math formula deleted: Insufficient symbol fonts. ...类与)概况}{3}{subsubsection.1.2.0.1}
Math formula deleted: Insufficient symbol fonts. ...和难点/新问题}}{4}{subsection.1.2.1}

构建过程最终完成,并且确实生成了一个可读的 pdf 文件,其中不包含一些数学内容。

在此处输入图片描述

我不知道为什么会出现这些错误。我对 LaTeX 不太熟悉,而且我正在使用别人的模板。谁能帮我解决这个问题?

=====================================

补充1:感谢@egreg的建议,我给出了一个触发此错误的最小示例。

除了上述错误之外,此代码还触发了一些未定义的控制序列错误。

\documentclass[UTF8, colorlinks]{pkuthss}
\usepackage{unicode-math} 
\setmainfont{Latin Modern Roman} 
\setmathfont{Latin Modern Math} 
\begin{document} 
\maketitle 
\end{document}

我再次检查了原始错误日志,发现\maketitle和中出现了很多错误\tableofcontents,还发现:

Command \@footnotemark has changed.
Font shape `T1/LatinModernRoman(0)/m/n' undefined(Font) using `T1/cmr/m/n' instead'
Font shape `T1/LatinModernMath(0)/m/n' undefined(Font) using `T1/cmr/m/n' instead
Font shape `T1/LatinModernRoman(0)/bx/n' undefined(Font) using `T1/LatinModernRoman(0)/m/n' instead
Font shape `T1/LatinModernMath(1)/m/n' undefined(Font) using `T1/cmr/m/n' instead

我猜测可能是 pkuthss 类文件中的某些内容导致的。但是在我使用该命令之前没有出现任何错误/setmathfont

=====================================

补充2:模板文件(document类)中的代码

\renewcommand{\maketitle}{
    \cleardoublepage
    % Add PDF bookmark for the title page.
    \pdfbookmark[1]{\titlepagename}{titlepage}
    \begin{titlepage}
        % It will be more nice to use this line skip level in the title page.
        \linespread{1.6}\selectfont
        % Make the title page centered.
        \begin{center}
            % Emblem and inscription of the university, and type of thesis.
            {
                \zihao{1}%
                \includegraphics[height = 2.4em]{pkulogo}\hspace{0.4em}%
                \raisebox{0.4em}{\includegraphics[height = 1.6em]{pkuword}}\\[0.8em]
                {\bfseries{\cthesisname}}
            }
            \vfill
            % Title of the thesis.
            {
                \zihao{2}{\label@ctitle}%
                \pkuthss@int@fillinblank{2}{0.64\textwidth}{\textbf{\@ctitle}}
            }
            \vfill
            % Information about the author.
            {
                % Slightly adjust the line skip when using new font size.
                \zihao{-2}\linespread{1.75}\selectfont
                \def\pkuthss@tmp@len{0.56\textwidth}
                \begin{tabular}{l@{\extracolsep{0.2em}}c}
                    {\label@cauthor}        &
                    \pkuthss@int@fillinblank{1}{\pkuthss@tmp@len}{\kaishu\@cauthor}     \\
                    {\label@studentid}  &
                    \pkuthss@int@fillinblank{1}{\pkuthss@tmp@len}{\kaishu\@studentid}   \\
                    {\label@school}         &
                    \pkuthss@int@fillinblank{1}{\pkuthss@tmp@len}{\kaishu\@school}      \\
                    {\label@cmajor}         &
                    \pkuthss@int@fillinblank{1}{\pkuthss@tmp@len}{\kaishu\@cmajor}      \\
                    {\label@direction}  &
                    \pkuthss@int@fillinblank{1}{\pkuthss@tmp@len}{\kaishu\@direction}   \\
                    {\label@cmentor}        &
                    \pkuthss@int@fillinblank{1}{\pkuthss@tmp@len}{\kaishu\@cmentor}     \\
                \end{tabular}
            }
            \vfill
            % Date.
            {\kaishu\zihao{2}\@date}
        \end{center}
    \end{titlepage}
}

=============================

补充3:

我发现如果我不使用 unicode-math 包,而只添加顺序\setmainfont,文件将正常构建和显示。所以我猜这不是与字体相关的问题?

\setmainfont{Latin Modern Roman}

=========================

补充4:

我还有另一个产生错误的最小示例:

\documentclass[UTF8, colorlinks]{pkuthss}
\usepackage{unicode-math}
\setmainfont{Latin Modern Roman}
\setmathfont{Latin Modern Math}
\begin{document}
test:$d=\left\langle t_1, t_2, \dots , t_T\right\rangle $\\
corpus:$c=\left\lbrace d_1, d_2, \dots, d_D \right\rbrace $\\
\end{document}

错误如下:

Math formula deleted: Insufficient symbol fonts. test:$d
Math formula deleted: Insufficient symbol fonts. ...angle t_1, t_2, \dots , t_T\right\rangle $
Math formula deleted: Insufficient symbol fonts. ...brace d_1, d_2, \dots, d_D \right\rbrace $

如果我将第一行改为这样,就不会出现错误。那么我应该从 pkuthss 类文件中发布什么内容呢?

\documentclass[UTF8, colorlinks]{article}

我还注意到错误发生之前有一些警告:

Font shape `T1/LatinModernRoman(0)/m/n' undefined(Font) using `T1/cmr/m/n' instead

===============================

补充5:

已更新至最新版本。

我已将 pkuthss 类文件更新至最新版本,https://github.com/CasperVector/pkuthss,正如@Mico 所建议的。不幸的是,错误仍然存​​在...

当我尝试构建补充 4 中的最小示例时,仍然弹出相同的消息。

我感到很沮丧...有人能帮我吗?

答案1

在咨询了pkuthss.cls的作者后,我解决了这个问题。

按照他的建议,有两种方法可以解决我的问题。

  1. 没有必要使用 unicode-math 包来满足我更改数学字体的需求。两种可选方法:

    a) 使用带参数的文档类nopkufont\documentclass[UTF8, nopkufont]{pkuthss}。当前字体风格按照我校规定,否定该参数则使用传统latex字体(latexsym)。

    b)更改cls文件内容:

   \ifpkuthss@opt@pkufont
      % Use Times New Roman / Arial according to school regulation.
      % Option used to prevent newtxtext from manipulating footnote marks.
      \RequirePackage[defaultsups]{newtxtext}
      \RequirePackage{newtxmath}
    \else
      % Provides `\Box' for originauth.tex if newtx is absent.
      \RequirePackage{latexsym}
    \fi

删除该行将 \RequirePackage{newtxmath}会把数学内容的字体改为拉丁现代数学,而不违反北大规定。

您可以同时使用上述两种解决方案,这就是我所做的,因为无论在哪种情况下,我都希望使用拉丁现代数学作为数学字体,并且如果大学要求,我可能必须将普通文本更改为 newtx 字体。

  1. 如果坚持使用 unicode-math 包,重新安装就解决了我的问题。

还注意到@egreg没有重现我的错误,所以我的tex配置可能有问题。按照作者的建议,我卸载了tex live,并按照作者提供的引导指南重新安装了最新的tex live版本(https://bbs.pku.edu.cn/attach/boards/MathTools/M.1435670549.A/pkuthss-bootstrap-0.1.5-r1.pdf?t=1464095057,中文)(与正常安装进度相比,变化不大)。

重新安装后,我的错误消失了...我不知道为什么以及如何......

无论如何,我的问题已经解决了。我认为这是一个仅与我们大学的论文模板相关的具体问题,可能对其他人没有帮助。无论如何,我在这里发布了答案,以防另一个北大学生遇到同样的问题......

相关内容