我的一个用户menukeys
软件包报告说,法语中的 activ 字符存在问题,即!
、;
和。我发现这不是一个错误?
,但是:
menukeys
catoptions
似乎干扰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
。
正如您所看到的,!
和:
似乎失去了活性。所以问题是:如何恢复!
和的活性:
?
答案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}}
我会更新期权进行相应包装。