physymb
我在一起使用和包时遇到了麻烦fontspec
。当我使用编译时PDFLaTeX
,一切都正常,即使使用lmodern
包也是如此。但是,当我使用编译时XeLaTeX
,如果我加载了它(即使我不使用它),它也不会工作fontspec
,但如果我稍后加载包mathpazo
(我其实不想使用它,但通过调试发现),它就会工作。我的问题是,这些错误来自哪里?有解决方法吗?只加载某些字体会起作用吗?
我用来测试的文档是
\documentclass[]{article}
\usepackage{ifxetex}
\ifxetex
\usepackage[cm-default]{fontspec}
%\usepackage{mathpazo} % If you commento ut this line you get many errors.
\else
\usepackage{lmodern}
\fi
\usepackage{physymb}
\begin{document}
This is sample text.
\end{document}
答案1
问题出在accents
软件包上;我猜想accents
和之间fontspec
需要进行一些合作,因此最好联系两个软件包维护者。
fontspec
一种解决方法是使用该选项加载no-math
:这不会产生错误,但可能会产生其他后果。
另一个方法是在造成损害之前进行修补:
\documentclass[]{article}
\usepackage{ifxetex}
\usepackage{physymb}
\let\acute\relax
\let\grave\relax
\let\ddot\relax
\let\tilde\relax
\let\bar\relax
\let\breve\relax
\let\check\relax
\let\hat\relax
\let\dot\relax
\let\mathring\relax
\ifxetex
\usepackage{fontspec}
\else
\usepackage{lmodern}
\fi
\begin{document}
This is sample text.
\end{document}
在我的小实验中,使用这个定义(尽管略有修改)似乎效果很好accents
。这可能是暂时解决不兼容问题的最佳方法。
答案2
accents
你可以欺骗已经加载的包
\documentclass[]{article}
\makeatletter
\@namedef{[email protected]}{}
\makeatother
\usepackage{physymb}
\usepackage{fontspec}
\begin{document}
This is sample text.
\end{document}
你应该加载与 LaTeX 相关的字体包总是在 fontspec! 之前