![根据文档后面的内容在文档开头包含信息](https://linux22.com/image/250612/%E6%A0%B9%E6%8D%AE%E6%96%87%E6%A1%A3%E5%90%8E%E9%9D%A2%E7%9A%84%E5%86%85%E5%AE%B9%E5%9C%A8%E6%96%87%E6%A1%A3%E5%BC%80%E5%A4%B4%E5%8C%85%E5%90%AB%E4%BF%A1%E6%81%AF.png)
我需要在文档开头显示整个文档中使用的项目/关键字/截止日期列表,并将它们设为超链接。为了能够在文档开头使用此信息,我(滥用)使用了类似 ToC 的结构:
\documentclass{article}
\usepackage{hyperref}
\makeatletter
\newcommand\listofduereviews{\textbf{Due Dates:}~\@starttoc{due}}
\makeatother
\newcommand{\duedate}[1]{%
\hypertarget{link.#1}{#1}%
\addtocontents{due}{\protect\hyperlink{link.#1}{(#1)}\quad}%
}
\begin{document}
\listofduereviews
\bigskip
The first due date is \duedate{01-May-2012}, and the second due date is \duedate{02-May-2012}.
\end{document}
这就是我想要的:
但我觉得我在滥用 ToC,而它们并不适合于此(或者也许不是,我只是没有足够的 LaTeX 知识来判断自己)。有什么更优雅的方法可以实现这一点?也许直接写入(非 listof)文件?
答案1
我认为使用 ; 没有什么不雅之处\@starttoc
,毕竟这个 LaTeX 命令在内部将信息写入外部文件(这似乎是您在最后一条评论中所要求的)。
当然,\@starttoc
您也可以不使用,而是自己设置这些东西(使用\@input
,,\newwrite
... \openout
),但\@starttoc
内部会为您完成这项工作,所以我认为您的方法是完全有效的。