Physymb 无法与 fontspec 配合使用,除非通过 fontspec 加载不同的字体

Physymb 无法与 fontspec 配合使用,除非通过 fontspec 加载不同的字体

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! 之前

相关内容