Closed muzimuzhi closed 4 years ago
ctex 与 titletoc 共用时,会造成 <sec name> 和 <sec title> 部分出现重合,见 https://github.com/stone-zeng/fduthesis/issues/73#issuecomment-491567024 。一个 mwe(源自 https://github.com/stone-zeng/fduthesis/issues/73#issuecomment-491596140 )是
<sec name>
<sec title>
\documentclass{ctexbook} \usepackage{titletoc} \begin{document} \tableofcontents \chapter{测试} \chapter{测试} \end{document}
ctex 因为修改了 \numberline 的定义,所以(很可能)需要为所有控制目录样式的包做兼容。目前兼容了 tocloft,没有兼容 titletoc。我在这篇文章的末尾提供了一种实现。
\documentclass{ctexbook} \usepackage{titletoc} %% make ctex works with titletoc \makeatletter \ExplSyntaxOn \group_begin: \char_set_catcode_other:N \# \use:n { \group_end: \ctex_preto_cmd:NnnTF \numberline { \ExplSyntaxOff } { \CTEX@toc@width@n {#1} } { } { \ctex_patch_failure:N \numberline } \@ifpackageloaded { titletoc } { } { \ctex_at_end_package:nn { titletoc } { \ctex_preto_cmd:NnnTF \numberline { \char_set_catcode_letter:n { 64 } } { \CTEX@toc@width@n {#1} } { } { \ctex_patch_failure:N \numberline } } } } \ExplSyntaxOff \makeatother \begin{document} \tableofcontents \chapter{测试} \chapter{测试} \end{document}
文章是大半年前写的,我自己也需要时间重新理解。
看起来只需要在 https://github.com/CTeX-org/ctex-kit/blob/dacf77095131f169f361437bf4e22dab830a3e7d/ctex/ctex.dtx#L8271-L8292 里为 titletoc 增加一段相同的 patch 即可。
ctex 与 titletoc 共用时,会造成
<sec name>
和<sec title>
部分出现重合,见 https://github.com/stone-zeng/fduthesis/issues/73#issuecomment-491567024 。一个 mwe(源自 https://github.com/stone-zeng/fduthesis/issues/73#issuecomment-491596140 )是ctex 因为修改了 \numberline 的定义,所以(很可能)需要为所有控制目录样式的包做兼容。目前兼容了 tocloft,没有兼容 titletoc。我在这篇文章的末尾提供了一种实现。
文章是大半年前写的,我自己也需要时间重新理解。