我正在用 LyX 写一份文档,我会随着时间的推移不断添加内容,每次编辑都会添加一个新部分。我在 pdf 属性中启用了超链接,并且有一个目录,可以正确链接到每个部分。但是,为了方便起见,我想在目录之前有一个链接,可以直接跳转到最近(即最后一个)部分的开头。
是否可以访问用于生成目录的变量?或者,我是否可以在文档的最末尾放置一个标签(这将是对子节的引用)并进行一些数学运算以找到该节本身?如果可以,那么我该如何链接到它?
答案1
我不会太认真对待这一点,但它确实有效,即使\section*
使用了 。当然,你永远不应该\label{lastsection}
在文档中使用 ,而只能使用\ref{lastsection}
或\pageref{lastsection}
。
\documentclass{article}
\usepackage{atenddvi}
\usepackage{hyperref}
\makeatletter
\let\latex@@section\section
\renewcommand{\section}{\@ifstar{\new@@ssection}{\@dblarg\new@@section}}
\def\new@@section[#1]#2{%
\latex@@section[#1]{#2}%
\xdef\perhaps@last{perhaps@last@\thesection}%
\label{\perhaps@last}%
}
\newcounter{ssection}
\def\new@@ssection#1{%
\latex@@section*{#1}%
\refstepcounter{ssection}%
\xdef\perhaps@last{perhaps@last@star@\thessection}%
\label{\perhaps@last}%
}
\AtEndDvi{
\write\@mainaux{%
\unexpanded{\global\expandafter\let\expandafter\r@lastsection\csname} r@\perhaps@last\endcsname}
}
\makeatother
\begin{document}
Last section is at page \pageref{lastsection}
\tableofcontents
\section{Abc}
abc
\newpage
\section{Def}
def
\newpage
\section{Ghi}
ghi
\end{document}
答案2
下面的 MWE 实现了我希望实现的功能,但理想情况下,我希望做一些事情,这样我就不必手动添加\newpage
或\label{sec:lastmeeting}
位。我想我需要做一个\renewcommand
,但据我所知,这一切都变得有点混乱,因为\section
它需要参数。
\documentclass{report}
\usepackage{hyperref}
\usepackage{nameref}
\usepackage{lipsum}
\begin{document}
Last meeting: \nameref{sec:lastmeeting}
\tableofcontents
\newpage\section{Meeting 1}\label{sec:lastmeeting}\lipsum[1-6]
\newpage\section{Meeting 2}\label{sec:lastmeeting}\lipsum[1-6]
\end{document}