catoptions 摧毁了法语活跃角色!并且:

catoptions 摧毁了法语活跃角色!并且:

我的一个用户menukeys软件包报告说,法语中的 activ 字符存在问题,即!;和。我发现这不是一个错误?,但是:menukeyscatoptions似乎干扰babel这里。

\documentclass{article}

\usepackage[french]{babel}
\RequirePackage{catoptions}

\begin{document}
\begin{itemize}
    \item Test:
    \item Test;
    \item Test?
    \item Test!
\end{itemize}
\end{document}

上面的代码给出了

无选项

没有catoptions,但是

带有 catoptions

catoptions

正如您所看到的,!:似乎失去了活性。所以问题是:如何恢复!和的活性:

答案1

microtype带有 babel 和 kerning 选项的软件包修复了这个问题:

\documentclass{article}

\usepackage[french]{babel}
\usepackage[babel, kerning]{microtype}
\RequirePackage{catoptions}

\begin{document}
\begin{itemize}
    \item Test:
    \item Test;
    \item Test?
    \item Test!
\end{itemize}
\end{document}

它还修复了诸如cleveref和 之类的软件包的问题。我不太清楚为什么;也许有更了解的人可以评论一下。

答案2

的目标之一期权软件包的目的是为程序员提供普通的(即 TeX 的默认)catcode。“现行”的 catcode(即在之前生效的 catcode)期权\AtBeginDocument加载后)然后通过以下方式恢复排版

\AtBeginDocument{\cptrestorecatcodes}

巴别塔在执行之前或之后强制执行活动的 catcode \cptrestorecatcodes ,具体取决于哪个包(巴别塔或者期权) 会首先加载。

解决方案既有效又不违背初衷卡托普利翁包装如下:

\AtEndOfPackage{\BeforeStartOfDocument{\cptrestorecatcodes}}

我会更新期权进行相应包装。

相关内容