我的问题是这样的:多语症和 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}