我正在使用titletoc
在每个页面的开头创建一个部分目录\part
。
现在我引入了包scrwfile
来获得更多的\write
输出。然而这也删除了部分目录。
有没有办法使用 titletoc 将其恢复?否则我会对替代方案感兴趣。
\documentclass{scrbook}
\usepackage{scrwfile}
\usepackage{titletoc}
\newcommand{\PartialToc}[1]{%
\startcontents[part]
\section*{\contentsname}
\printcontents[part]{}{0}{\setcounter{tocdepth}{#1}}
}
\begin{document}
\mainmatter
\tableofcontents
\part{Part Heading First}
\PartialToc{1}
\chapter{first}
\chapter{second}
\stopcontents[part]
\part{Part Heading Second}
\PartialToc{1}
\chapter{One}
\chapter{Two}
\stopcontents[part]
\end{document}
答案1
除了 Markus Kohm 过去经常提到与此类程序可能不兼容之外,我无法谈论与 之间的问题scrwfile
,这些程序会更改 KOMA 脚本类命令。我实际上不知道这里是否是这种情况。关于的“姊妹”包,我前段时间写了一些关于此的内容,但与此同时可能已经进行了兼容性更改:titletoc
titletoc
KOMA-Script 与 titlesec 之间的不兼容性。
但我可以提出一个替代方案:minitoc
。
\documentclass{scrbook}
\usepackage{scrwfile}
\usepackage[nohints]{minitoc}
\mtcsetrules{parttoc}{off}
\mtcsettitle{parttoc}{Part Contents}
\mtcsettitlefont{parttoc}{\LARGE\bfseries\sffamily} % "\sffamily" is KOMA-script default
\newcommand{\setparttoc}[1]{%
\mtcsetdepth{parttoc}{#1} % "0" as usual chapter depth
\parttoc
}
\begin{document}
\doparttoc
\mainmatter
\tableofcontents
\part{Part Heading First}
\setparttoc{0}
\chapter{First Chapter}
\section{First section}
\chapter{Second Chapter}
\section{First section, again}
\part{Part Heading Second}
\setparttoc{1}
\chapter{Chapter One}
\section{Another first section}
\chapter{Chapter Two}
\section{Why first sections only?}
\end{document}
所讨论示例的输出(scrwfile
已停用):
答案中上述示例的输出:
这当然可以进行更精细的调整,但它展示了这个想法。添加
\renewcommand*{\mtcgapbeforeheads}{-50pt}
\renewcommand*{\mtcgapafterheads}{-40pt}
外观是否更适合问题中的情况。顺便说一下,这些值与这些部分 toc 命令的默认值相反。
顺便说一句,对于知道自己在做什么的用户来说:scrwfile
在日志文件中打印出一条警告,声称处于 Alpha 状态。可以使用软件包删除此警告silence
。