我正在尝试使用 创建本地可拆分目录etoc
。到目前为止,我已经定义了一个名为 的新命令,\chaptertoc
我将 放在\localtableofcontents
中parbox
。但是现在目录不再适合一页,所以必须有分页符。所需的结果应该与我的示例完全相同(标题、上下规则和右侧的缩进页码),但应该有一个自动分页符。在当前版本中, 可以防止这种情况发生。parbox
我已经尝试了各种将 等替换parbox
为adjustwidth
、tcolorbox
或 的变体mdframed
。通过这些,我可以控制分页符,但格式不再正确。
这是我的示例代码
\documentclass{scrbook}
\usepackage{etoc, blindtext}
\newcommand{\chaptertoc}{%
\begingroup
\parbox[b]{0.96\textwidth}{
\etocsettocstyle{\subsection*{Heading of local toc\\ \vspace{-0.75em}\rule{\textwidth}{0.4pt}}\vspace{-.5em}}{}%
\localtableofcontents
\vspace{-0.5em}
\rule{\textwidth}{0.4pt}
}\\
\endgroup
}
\begin{document}
\frontmatter
\chapter{bla}
\blindtext[3]
\chaptertoc
\section{bla 1}
\subsection{blabla 1}
\subsection{blabla 2}
\subsection{blabla 3}
\subsection{blabla 4}
\section{bla 2}
\subsection{blabla 5}
\subsection{blabla 6}
\subsection{blabla 7}
\subsection{blabla 8}
\end{document}
产生
根据示例代码所期望的结果应该像这样中断......
...但格式与上面相同,但没有分页符。
答案1
重写\etocsettocstyle
并将目录页码放入其中parbox
以获得所需的格式。
\etocsettocstyle{⟨before_toc⟩}{⟨after_toc⟩}
。
\documentclass{scrbook}
\usepackage{etoc, blindtext}
% ***************************************** added <<<<<<<<<<<<<<<<<<
\newcommand*{\pagenumberbox}[1]{\parbox{6ex}{\centering #1}} % set the width of the page number box <<<<<
\RedeclareSectionCommands[tocpagenumberbox=\pagenumberbox]{chapter,section,subsection,subsubsection}
% *****************************************
\newcommand{\chaptertoc}{%
\etocsettocstyle{%
\subsection*{Heading of local toc\\\vspace{-0.75em} \rule{\textwidth}{0.4pt}\vspace{-.5em}}
}{\vspace{-0.5em}\noindent \rule{\textwidth}{0.4pt}}%
\localtableofcontents
}
\usepackage[margin=4cm, showframe]{geometry}% % ONLY to set and show the margins
\begin{document}
\frontmatter
\chapter{bla}
\blindtext[3]
\chaptertoc
\section{bla 1}
\blindtext[5] % added <<<<<<<<<<<<<<
\subsection{blabla 1}
\subsection{blabla 2}
\subsection{blabla 3}
\subsection{blabla 4}
\section{bla 2}
\subsection{blabla 5}
\subsection{blabla 6}
\subsection{blabla 7}
\subsection{blabla 8}
\end{document}}
不含上述文字:
随着\blindtext[1]
\chapter
答案2
好吧,我努力了,我认为我至少已经接近成功了。
\documentclass{scrbook}
\usepackage{etoc, blindtext}
\newenvironment{chaptertocwrapper}{\list{}{\setlength{\rightmargin}{1.5em}\setlength{\leftmargin}{0em}}\setlength{\baselineskip}{0ex}\setlength{\parskip}{0.8ex}\item\relax}
{\endlist}
\newcommand{\chaptertoc}{%
\etocsettocstyle{%
\subsection*{Heading of local toc\\ \vspace{-0.75em}\rule{\textwidth}{0.4pt}}\vspace{-.5em}}%
\relax\begin{chaptertocwrapper}\localtableofcontents\end{chaptertocwrapper}
\vspace{-1em}
\noindent\rule{\textwidth}{0.4pt}
}
\begin{document}
\frontmatter
\chapter{bla}
\blindtext[3]
\chaptertoc
\section{bla 1}
\subsection{blabla 1}
\subsection{blabla 2}
\subsection{blabla 3}
\subsection{blabla 4}
\section{bla 2}
\subsection{blabla 5}
\subsection{blabla 6}
\subsection{blabla 7}
\subsection{blabla 8}
\end{document}
不过我注意到,如果页面上的垂直空间需要拉伸才能达到齐平底部,就会发生奇怪的事情,即各个页面上的项目之间的间距可能会有所不同。不确定如何解决这个问题,但这对您的实际使用情况可能无关紧要(或者您可能不介意)。