newtx 宏包与 ctex 冲突 (fontspec 宏包选项冲突)
NemoYuan2008 opened this issue · 2 comments
NemoYuan2008 commented
这是 newtx
宏包的问题,但是 newtx
的作者没有回复邮件,因此我想请教一下 ctex
这边有没有很好的解决办法
最新版的 newtx
宏包(通过 tlmgr
更新,版本1.732, Nov 6 2023)与 ctex 冲突,以下是一个 MWE
\documentclass{ctexart}
\usepackage{newtxtext}
\begin{document}
Hello, 你好.
\end{document}
用 XeLaTeX 编译得到以下错误
LaTeX Error: Option clash for package fontspec.
但我在 Overleaf 上编译 (项目链接) 就没关系,我用老版的 TeX Live 2022 编译,也没问题。看起来应该是最新版的 newtx
宏包的 bug.
但是我给 newtx
宏包的作者发邮件没有得到回复,我在 stackexchange 上提问得到的解决方法是
\PassOptionsToPackage{no-math}{fontspec}
\documentclass{ctexart}
\usepackage{newtxtext}
\begin{document}
Hello, 你好.
\end{document}
这能暂时解决问题,但是我现在在写一个模板方便其他人用,不知道这样做是否稳定。另一方面在 \documentclass
前面加上命令感觉也不优雅。请问一下有没有 native 的 ctex 解决办法?
muzimuzhi commented
用 XeLaTeX 编译得到以下错误
LaTeX Error: Option clash for package fontspec.
在 .log
文件里,完整的报错信息是
! LaTeX Error: Option clash for package fontspec.
See the LaTeX manual or LaTeX Companion for explanation.
Type H <return> for immediate help.
...
l.245 \ifluatex
% avoid possibly uncorrected "system" fonts
The package fontspec has already been loaded with options:
[]
There has now been an attempt to load it with options
[no-math]
Adding the global options:
,no-math
to your \documentclass declaration may fix this.
Try typing <return> to proceed.
这能暂时解决问题,但是我现在在写一个模板方便其他人用,不知道这样做是否稳定。另一方面在
\documentclass
前面加上命令感觉也不优雅。
这么做是稳定的。在 .cls
文件里,你可以使用
\PassOptionsToPackage{no-math}{fontspec}
\LoadClass{ctexart}
或者
\RequirePackage[no-math]{fontspec}
\LoadClass{ctexart}
这样你的 .cls
的用户就不需要在 \documentclass
之前写 \PassOptionsToPackage
这一行了。
NemoYuan2008 commented
非常感谢您的回复,问题已解决!