![etoc:如何删除本地目录的标题并添加顶部/底部水平规则?](https://linux22.com/image/335194/etoc%EF%BC%9A%E5%A6%82%E4%BD%95%E5%88%A0%E9%99%A4%E6%9C%AC%E5%9C%B0%E7%9B%AE%E5%BD%95%E7%9A%84%E6%A0%87%E9%A2%98%E5%B9%B6%E6%B7%BB%E5%8A%A0%E9%A1%B6%E9%83%A8%2F%E5%BA%95%E9%83%A8%E6%B0%B4%E5%B9%B3%E8%A7%84%E5%88%99%EF%BC%9F.png)
我想使用包etoc
在每章开始时获取本地目录。但是,我很难做到:
- 隐藏标题“内容“
- 在此本地目录条目上方和下方添加水平规则
- 将章节内容(带文本的迷你目录)排版在章节标题之后,而不是在章节第三页(第二页为空白)
\documentclass{scrbook}
\usepackage{lipsum}
\usepackage{etoc}
\begin{document}
\chapter{Chapter 1}
\localtableofcontents
\section{Section 1}
\lipsum[1-20]
\section{Section 2}
\lipsum[1-20]
\end{document}
答案1
该\etocsettocstyle
命令提供了在目录之前和之后设置某些内容的方法,即水平规则。以非常原始的方式使用它,它还可以防止分页等。
\documentclass{scrbook}
\usepackage{lipsum}
\usepackage{etoc}
\newlength\tocrulewidth
\setlength{\tocrulewidth}{1.5pt}
\begin{document}
\tableofcontents
\chapter{Chapter 1}
\begingroup
\parindent=0em
\etocsettocstyle{\rule{\linewidth}{\tocrulewidth}\vskip0.5\baselineskip}{\rule{\linewidth}{\tocrulewidth}}
\localtableofcontents
\endgroup
\section{Section 1}
\lipsum[1-20]
\section{Section 2}
\lipsum[1-20]
\end{document}
答案2
(从评论中移出)
这只是 Christian 的回答。缩进的解释是,这里etoc
处于兼容模式,并将排版委托给 scrbook 类。因此,本地目录中的章节将像在主目录中一样显示。
手册etoc
中有一个使用示例\KOMAoptions{toc=left}
,但这里不行,因为它需要一些命令\etocsettocstyle{..}{..}
覆盖的 KOMA 代码。我查看了scrbook
代码,发现这样做
\makeatletter
\def\scr@tso@section@indent{0pt}
\makeatother
\localtableofcontents
解决了缩进问题。但是,子节仍将像在主目录中一样缩进。由于没有更好的解决方案,我只能提出:
\makeatletter
\edef\scr@tso@subsection@indent
{\the\dimexpr\scr@tso@subsection@indent-\scr@tso@section@indent}
\def\scr@tso@section@indent{0pt}
\makeatother
\localtableofcontents
KOMA 中可能有这些缩进的接口,但我没有(立即)弄清楚如何使用。
完整代码(来自Christian的回答):
\documentclass{scrbook}
\usepackage{lipsum}
\usepackage{etoc}
\newlength\tocrulewidth
\setlength{\tocrulewidth}{1.5pt}
\begin{document}
\tableofcontents
\chapter{Chapter 1}
\begingroup
\parindent=0em
\etocsettocstyle{\rule{\linewidth}{\tocrulewidth}\vskip0.5\baselineskip}{\rule{\linewidth}{\tocrulewidth}}
\makeatletter
\edef\scr@tso@subsection@indent
{\the\dimexpr\scr@tso@subsection@indent-\scr@tso@section@indent}
\def\scr@tso@section@indent{0pt}
\makeatother
\localtableofcontents
\endgroup
\section{Section 1}
\lipsum[1-20]
\subsection{subsection 1.1}
\section{Section 2}
\lipsum[1-20]
\end{document}