我正在做一个中英混合文档,之前用的是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的作者后,我解决了这个问题。
按照他的建议,有两种方法可以解决我的问题。
没有必要使用 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 字体。
- 如果坚持使用 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,中文)(与正常安装进度相比,变化不大)。
重新安装后,我的错误消失了...我不知道为什么以及如何......
无论如何,我的问题已经解决了。我认为这是一个仅与我们大学的论文模板相关的具体问题,可能对其他人没有帮助。无论如何,我在这里发布了答案,以防另一个北大学生遇到同样的问题......