在带星号的 \part* 中使用时,\parttoc 不会出现

在带星号的 \part* 中使用时,\parttoc 不会出现

part我正在尝试利用包在关卡开始时创建 mini-ToC minitoc。它对于 numbered 工作正常\part,但是,使用 starred 时不会呈现\part*。根据文档,我在命令\addstarredpart后添加了\part*。这是最小的工作示例:

\documentclass{report}
\usepackage{minitoc}

\begin{document}

    \doparttoc
    \tableofcontents

    \part*{Part one}
    \addstarredpart{Part one}
    \parttoc

    \chapter{Chapter one}   

    \section{Section one}
    \section{Section two}

    \chapter{Chapter two}

\end{document}

*.toc文件内容:

\partbegin 
\contentsline {starpart}{Part one}{3}
\contentsline {chapter}{\numberline {1}Chapter one}{3}
\contentsline {section}{\numberline {1.1}Section one}{3}
\contentsline {section}{\numberline {1.2}Section two}{3}
\contentsline {chapter}{\numberline {2}Chapter two}{4}

*.ptc1文件内容:

{\reset@font\ptcCfont\mtc@string\contentsline{chapter}{\noexpand \leavevmode \numberline {1}Chapter one}{\reset@font\ptcCfont 3}}
{\reset@font\ptcSfont\mtc@string\contentsline{section}{\noexpand \leavevmode \numberline {1.1}Section one}{\reset@font\ptcSfont 3}}
{\reset@font\ptcSfont\mtc@string\contentsline{section}{\noexpand \leavevmode \numberline {1.2}Section two}{\reset@font\ptcSfont 3}}
{\reset@font\ptcCfont\mtc@string\contentsline{chapter}{\noexpand \leavevmode \numberline {2}Chapter two}{\reset@font\ptcCfont 4}}

使用 PdfLaTex 进行测试。

编辑:我在构建过程中收到以下警告:
W0046(minitoc(hints)) You have attempted to insert (minitoc(hints)) empty parttocs.

答案1

由于\partbegin被视为\partend,这意味着代码\addtocounter{ptc}{-1}永远不会按照原计划执行。所以我想我会尝试一下。

\documentclass{report}
\usepackage{minitoc}

\begin{document}
    \doparttoc
    \tableofcontents

    \clearpage
    \addstarredpart{Part one}% note the page number
    \part*{Part one}
    \addtocontents{toc}{\string\addtocounter{ptc}{-1}}%

    \parttoc

    \chapter{Chapter one}   

    \section{Section one}
    \section{Section two}

    \chapter{Chapter two}
\end{document}

更持久的解决方案是重新定义\partbegin\partend。甚至可以删除测试。

\documentclass{report}
\usepackage{minitoc}
\makeatletter
\def\@spart{\addtocontents{toc}{\protect\partend}%
  \addtocontents{toc}{\protect\partbegin}%
  \ptc@spart}
\def\partbegin{\addtocounter{ptc}{-1}}
\def\partend{\immediate\closeout\tf@mtc
  \immediate\openout\tf@mtc=\jobname.mtc}
\makeatother

\begin{document}
    \doparttoc
    \tableofcontents

    \clearpage
    \addstarredpart{Part one}% note the page number
    \part*{Part one}

    \parttoc

    \chapter{Chapter one}   

    \section{Section one}
    \section{Section two}

    \chapter{Chapter two}
\end{document}

修复这些错误的主要问题是手册中一直使用 ,\partbegin而它应该使用\partend。为了向后兼容,需要反转它们的定义和出现顺序。

相关内容