Closed NShiroha closed 4 months ago
不幸的是,
ctex
文档类默认加载fontspec
宏包,在导言区加上\usepackage[no-math]{fontspec}
的话会造成冲突。
也可以在 \documentclass
之前使用 \PassOptionsToPackage{no-math}{fontspec}
,该命令的文档见 texdoc clsguide
或 https://latexref.xyz/Class-and-package-commands.html。
经过尝试,我惊奇地发现,在指定文档类时设置该选项,即使用
\documentclass[no-math]{ctexart}
,就可以达到预期效果。
这是因为文档类选项会传递给在其后加载的所有宏包,同样见 texdoc clsguide
。这是一个通用的知识,不限定于某个文档类或某个宏包,所以宏包文档一般不作介绍。非标准文档类有时候会提到。
\usepackage[<option list>]{<pkgname>}
设置宏包选项\PassOptionsToPackage{<options list>}{<pkgname>}
xeCJK 作了特殊处理,它会把(对自己而言)未知的宏包选项,和已知的宏包选项中的 quiet 和 silence 都传递给 fontspec。所以 xeCJK 文档中提了一句。
随后我又发现
xeCJK
宏包手册有这么一段话:xeCJK 以 ⟨key⟩=⟨var⟩ 的形式提供宏包选项,你可以在调用宏包的时候直接设置这些选项,也可以在调用宏包之后使用 \xeCJKsetup 来设置这些选项。xeCJK 内部调用 fontspec 宏包,可以在调用 xeCJK 的时候,使用它的宏包选项。xeCJK 会将 fontspec 的选项传递给它。
个人认为,这里的叙述太过模糊,并没有说清楚
fontspec
宏包选项如何设置,建议补充一下。
可能是「它」的指代带来了模糊,我理解的是「如果 fontspec 有宏包选项 xyz,那么向 xeCJK 传递宏包选项 xyz 等同于向 fontspec 传递 xyz」。你有没有建议的描述方式?
更新:根据 https://github.com/CTeX-org/ctex-kit/blob/049fed1128f4ab929fdd89cf4625df3b80a80aa6/xeCJK/xeCJK.dtx#L8240-L8265 https://github.com/CTeX-org/ctex-kit/blob/049fed1128f4ab929fdd89cf4625df3b80a80aa6/xeCJK/xeCJK.dtx#L8332 也许可以改成「xeCJK 内部调用 fontspec 宏包。调用 xeCJK 时使用的(对 xeCJK 来说)未知宏包选项和 quiet、silence 选项,都会传递给 fontspec。」
也许可以改成「xeCJK 内部调用 fontspec 宏包。调用 xeCJK 时使用的(对 xeCJK 来说)未知宏包选项和 quiet、silence 选项,都会传递给 fontspec。」
我觉得这样改可以接受,如果能给出示例就更好了。另外,最好在 CTEX 宏集手册中也简要说明一下。
这是因为文档类选项会传递给在其后加载的所有宏包,同样见
texdoc clsguide
。这是一个通用的知识,不限定于某个文档类或某个宏包,所以宏包文档一般不作介绍。非标准文档类有时候会提到。
呃……可能是我不了解了,但您提到的texdoc clsguide
标题也说了“for class and package writers”,我想这对一般用户来说也许不太能算通用知识……
不论如何,感谢您的解答。
(完全不需要使用「您」的)
这个问题始于
\hbar
的输出效果问题。我发现自定义正文字体后,\hbar
的效果会变得很奇怪:fontspec
宏包的no-math
选项即可解决这个问题。不幸的是,
ctex
文档类默认加载fontspec
宏包,在导言区加上\usepackage[no-math]{fontspec}
的话会造成冲突。经过尝试,我惊奇地发现,在指定文档类时设置该选项,即使用\documentclass[no-math]{ctexart}
,就可以达到预期效果。然而这又使我十分疑惑,因为 CTEX 宏集手册并未提及设置
fontspec
宏包选项的方法。随后我又发现xeCJK
宏包手册有这么一段话:个人认为,这里的叙述太过模糊,并没有说清楚
fontspec
宏包选项如何设置,建议补充一下。我现在也算半个新手,对很多东西依然缺乏了解,如有不妥还望包涵。