![在目录中添加日期列](https://linux22.com/image/441583/%E5%9C%A8%E7%9B%AE%E5%BD%95%E4%B8%AD%E6%B7%BB%E5%8A%A0%E6%97%A5%E6%9C%9F%E5%88%97.png)
我要重新出版的书包含某一天的讲座记录。在目录中,我需要在讲座标题(章节标题)后添加一列,其中注明讲座日期。
我尝试使用这里的一些答案(在目录中添加额外的列),但这并没有回答我的问题。
我试图用这个tocloft
包来解决这个问题,但不确定如何实现。我想将以下内容称为 MWE,但到目前为止它对我来说还不起作用...
\documentclass{book}
\usepackage[utf8]{inputenc}
\title{test}
\author{name}
\date{now}
\usepackage{tocloft}
\renewcommand{\cftchappresnum}{input?}
\begin{document}
\renewcommand\cftchapdotsep{\cftdotsep}
\tableofcontents
\chapter*{first lecture title}
\addcontentsline{toc}{chapter}{first lecture title}
\chapter*{second lecture title}
\addcontentsline{toc}{chapter}{second lecture title}
\chapter*{third lecture title}
\addcontentsline{toc}{chapter}{third lecture title}
\end{document}
我想要制作的是这样的目录:
我才刚刚开始这个项目,所以很高兴能够得到有关重新构建/文档类别使用/任何可以帮助我朝着正确方向前进的相关建议。
答案1
欢迎使用 TeX.SX!如果您不介意使用\addcontentsline
手动将条目插入目录(如您的问题中所建议的那样),您可以自由地将换行符和对齐插入此宏中。例如像这样(tocloft
实际上没有包):
\documentclass{book}
\usepackage[utf8]{inputenc}
\newcommand{\toclineinsert}[3][25mm]{%
\dotfill\ #2\makebox[#1][l]{#3\dotfill}%
}
\title{test}
\author{name}
\date{now}
\begin{document}
\tableofcontents
\addcontentsline{toc}{chapter}{first lecture title \toclineinsert{4 }{January}}
\addcontentsline{toc}{chapter}{second lecture title \toclineinsert{2nd half }{January}}
\addcontentsline{toc}{chapter}{third lecture title \toclineinsert{February/}{March}}
\addcontentsline{toc}{chapter}{a pretty long fourth lecture title \newline that goes over two lines \toclineinsert{29 or 30 }{March}}
\end{document}
由于添加的列中的日期与月份名称对齐,我想出了一个解决方案,让您可以在贯穿目录的假想垂直线的左侧和右侧添加内容。
例如,\toclineinsert{4 }{January}
将在此行左侧放置一个 4 和一个空格(空格是必需的),将单词 January 放置在右侧。4 之前和 January 之后的空格用点填充。
宏\dotfill
通常会插入尽可能多的点,以移动当前行最右端的内容。它的功能与右对齐制表位非常相似。如果您在同一行中多次使用此宏,则这些宏之前、之后和之间的内容将以相等距离的方式分布。
宏\makebox
会将指定宽度的框添加到输出中。默认情况下,此宽度在宏中设置为 25mm \toclineinsert
,但您可以通过输入来覆盖此设置,例如\toclineinsert[30mm]{4 }{January}
。这会将单词 January 稍微向左移动,但当然仅限于此条目。
当然,下图中的红线不是输出的一部分,仅说明对齐。