删除目录中 polyglossia 法语部分前的空格

删除目录中 polyglossia 法语部分前的空格

我的问题是这样的:多语症和 toc

出于某种原因,french选项会polyglossia从目录中删除零件编号,留下一个难看的空格。上面链接的问题要求找到一种方法来重新添加这些数字,它得到了一个很好但非常复杂的答案。我要求的不是同一件事:我不想要数字回来,我只是想删除那个空格,我相信有一种简单的方法可以做到这一点。

事实上,\unskip在的参数中添加一个\part就足以从目录中删除不需要的水平空间。请参阅 MWE:

\documentclass{article}
\usepackage{polyglossia}
\setmainlanguage{english}
\setotherlanguage{french}

\begin{document}
\tableofcontents

\part{English part with a number}

\begin{french}

\part{French part with an ugly space}

\part{\unskip French part with nothing}

\end{french}
\end{document}

(各部分之间的语言变化只是为了显示差异。我的文档只提供法语版本。)

结果:

目录示例

现在我只想找到一种方法来删除所有部分的那个空间,而不需要\unskip每次都添加。我想到了一个天真的方法:

\renewcommand{\part}[1]{\part{\unskip #1}}

但是当我尝试编译时,什么也没有发生,编译似乎卡住了。

那么,摆脱目录中不需要的空间的最简单方法是什么?

答案1

标准类别的设计很糟糕,但是多年来一直如此……

\documentclass{article}
\usepackage{polyglossia}
\setmainlanguage{english}
\setotherlanguage{french}

\makeatletter
\patchcmd{\@part}
  {\thepart\hspace{1em}}
  {\partnumberline{\thepart}}
  {}{}
\makeatother
\newrobustcmd{\partnumberline}[1]{%
  \if\relax\detokenize{#1}\relax\else #1\hspace{1em}\fi
}


\begin{document}
\tableofcontents

\part{English part with a number}

\begin{french}

\part{French part with nothing}

\end{french}
\end{document}

在此处输入图片描述

相关内容