考虑以下 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}}
这是偶然发现的,我不知道它为什么有效。