我有一个命令\date{}{}
,只需获取日期和事件并打印“日期--事件”
我想要做的是创建另一个命令,列出我在整个文档中创建的所有事件。
有人能推荐一种方法来做到这一点吗?谢谢。
答案1
这里有一个快速的方法,\addcontentsline
将日期添加到.dates
文件中并用显示它\listofdates
,这是一个劫持 - 宏,即它\tableofcontents
在 TeX 组内发生变化,这样它在外面是安全的,即原来\@starttoc
仍然\tableofcontents
可以正常工作,并且可以在任何文档中毫无问题地使用。
\dateevent
然而,为了保留原始名称,我使用了宏名称\date
并引入了一个名为的格式辅助宏\dateformatter
,可以随意重新定义它,这里只需用粗体字母输入日期并用斜体输入事件标题。
\documentclass{article}
\usepackage{blindtext}
\makeatletter
\newcommand{\dateformatter}[2]{%
\textbf{#1} -- \textit{#2}%
}
\newcommand{\dateevent}[2]{%
\addcontentsline{dates}{section}{#1 -- #2}%
\dateformatter{#1}{#2}%
}
\newcommand{\listofdates}{%
\begingroup
\renewcommand{\contentsname}{List of Dates}
\let\old@starttoc\@starttoc
\def\@starttoc##1{%
\old@starttoc{dates}%
}
\tableofcontents%
\endgroup
}
\makeatother
\begin{document}
\listofdates
\blindtext
\dateevent{2019/01/01}{Upvote answers}
\blindtext
\dateevent{2019/01/02}{Accept answers}
\blindtext[2]
\dateevent{2019/01/03}{Upvote more answers}
\end{document}