由于 nicematrix 和 tocloft 不兼容,导致 ToC 中缺少空格

由于 nicematrix 和 tocloft 不兼容,导致 ToC 中缺少空格
\documentclass{book}
\usepackage{tikz}
\usepackage{nicematrix}
\usepackage{tocloft}

\begin{document}
    
\tableofcontents

\chapter{The chap one}

\section{The sec one}

\section{The sec two}

\begin{NiceTabular}{cc}
    \CodeBefore
    \tikz\draw[red,line width=0.5pt] (2 -| 1) -- (2 -| 2);
    \Body
    1 & 2 \\
    3 & 4 \\
\end{NiceTabular}

\end{document}

在此处输入图片描述

没有\CodeBefore一切正常。

答案1

这是版本 5.15 (2021/04/25) 中的一个小错误nicematrix:在某些情况下,它会将 添加\ExplSyntaxOn到文件.aux,但不会添加匹配的\ExplSyntaxOff,因此从那时起空格将被忽略。该问题应该很快就会修复,同时您可以将此补丁添加到文档的序言中(nicematrix更新时会出错,然后您应该删除该补丁):

\IfPackageAtLeastTF{nicematrix}{2021/04/26}
  {\PackageError{}{Patch no longer needed! Delete these lines!}{}}
  {\AfterEndEnvironment{NiceTabular}{%
    \immediate\expandafter\write\csname @mainaux\endcsname{\ExplSyntaxOff}}}

以下是完整示例:

\documentclass{book}
\usepackage{tikz}
\usepackage{nicematrix}
\usepackage{tocloft}

\IfPackageAtLeastTF{nicematrix}{2021/04/26}
  {\PackageError{}{Patch no longer needed! Delete these lines!}{}}
  {\AfterEndEnvironment{NiceTabular}{%
    \immediate\expandafter\write\csname @mainaux\endcsname{\ExplSyntaxOff}}}

\begin{document}

\tableofcontents

\chapter{The chap one}

\section{The sec one}

\section{The sec two}

\begin{NiceTabular}{cc}
    \CodeBefore
    \tikz\draw[red,line width=0.5pt] (2 -| 1) -- (2 -| 2);
    \Body
    1 & 2 \\
    3 & 4 \\
\end{NiceTabular}

\end{document}

答案2

正如 Phelype Oleinik 所解释的,这是 中的一个错误nicematrix。我已进行了更正,并nicematrix在 CTAN 上上传了新版本(2021-05-06 的 v 5.15a)以解决该问题。

相关内容