在之前的一个问题中我问过自定义我的目录。目前,我决定为每篇文章简单地填写目录,如下所示:
\addtocontents{toc}{\textit{\Author}\\}
\addtocontents{toc}{\hspace{1cm} \Title \dotfill \pageref{firstpage}–\pageref{lastpage}\\}
但我仍然不知道如何缩进包含标题的行(如果标题延伸超过一行,则所有行都应缩进相同的量):
=== Author's Name ===
=== Title: 1st Line ===
=== Title: 2nd Line ===
有简单的解决办法吗?
答案1
下面是受一些内部memoir
宏启发的示例,可以用于任何类:
\documentclass[a4paper]{memoir}
\newcommand\Title{This is a very long and complicated title that spans
several lines going on and on}
\newcommand\AuthorInToc[1]{\addtocontents{toc}{\protect\formatauthor{#1}}}
\newcommand\ArticleInToc[2]{\addtocontents{toc}{%
\protect\formatarticle{#1}{#2}}}
\newcommand\formatauthor[1]{\noindent \textit{#1}\par}
\newcommand\formatarticle[2]{%
\begingroup%
\nopagebreak%
\noindent%
\setlength\leftskip{1cm}%
\setlength\rightskip{4em}%
\setlength\parfillskip{-4em}%
\textit{Title:}~{#1}\dotfill\hbox to 4em{\hfil #2}\par%
\endgroup%
}
\begin{document}
\tableofcontents*
\chapter{test}
\AuthorInToc{An Author}
\ArticleInToc{\Title}{1--5}
\end{document}
这样做的目的是要记住,每个条目实际上TOC
都是一个段落,所以要这样对待它。