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
。为了向后兼容,需要反转它们的定义和出现顺序。