LuaLaTeX:使用“\scshape”时,ctex 和 microtype 一起会产生错误

LuaLaTeX:使用“\scshape”时,ctex 和 microtype 一起会产生错误

考虑以下 MWE,使用 LuaLaTeX 进行编译:

%! TEX program = lualatex
\documentclass{article}

\RequirePackage[fontset=fandol]{ctex}
\usepackage{microtype}

\begin{document}
{\scshape Some text}
\end{document}

如果没有\usepackage{microtype},代码可以编译得很好,但是有了 ,microtype就会出现一些错误,例如:

Missing font identifier.
<to be read again> 
ltj@curjfnt 
{\scshape
Missing = inserted for ifnum.
<to be read again> 
ltj@curjfnt 
{\scshape

这些错误可能是在六月或七月的更新中引入的,并且从那时起就一直存在。

我正在使用 TeX Live 2021,所有软件包都是最新的(到 10 月)。这是怎么回事?我该如何修复?

更新:该问题已于 2021/11/18 起修复,请参阅https://github.com/CTeX-org/ctex-kit/commit/09e78bc34346daa50be9b5892ed1503550e0f444

答案1

编辑:在最新的 microtype 3.0 中,可以使用以下代码作为临时解决方法(这里\AtEndPreamble需要包etoolbox):

\AtEndPreamble{\AtBeginDocument{\microtypesetup{deactivate}{\scshape}\microtypesetup{reactivate}}}
\AtEndPreamble{\AtBeginDocument{\microtypesetup{deactivate}{\bfseries\scshape}\microtypesetup{reactivate}}}
\AtEndPreamble{\AtBeginDocument{\microtypesetup{deactivate}{\sffamily\scshape}\microtypesetup{reactivate}}}
\AtEndPreamble{\AtBeginDocument{\microtypesetup{deactivate}{\ttfamily\scshape}\microtypesetup{reactivate}}}

原始帖子:

奇怪的是,在序言中添加此行可以解决问题。

\AtBeginDocument{\microtypesetup{disable}{\scshape}\microtypesetup{enable}}

这是偶然发现的,我不知道它为什么有效。

相关内容