使用 etoc 可拆分的本地目录,带有缩进的页码

使用 etoc 可拆分的本地目录,带有缩进的页码

我正在尝试使用 创建本地可拆分目录etoc。到目前为止,我已经定义了一个名为 的新命令,\chaptertoc我将 放在\localtableofcontentsparbox。但是现在目录不再适合一页,所以必须有分页符。所需的结果应该与我的示例完全相同(标题、上下规则和右侧的缩进页码),但应该有一个自动分页符。在当前版本中, 可以防止这种情况发生。parbox我已经尝试了各种将 等替换parboxadjustwidthtcolorbox或 的变体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

o

答案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}

易碎目录

不过我注意到,如果页面上的垂直空间需要拉伸才能达到齐平底部,就会发生奇怪的事情,即各个页面上的项目之间的间距可能会有所不同。不确定如何解决这个问题,但这对您的实际使用情况可能无关紧要(或者您可能不介意)。

相关内容