例子:
\documentclass{beamer}
\begin{document}
\lecture{lecture 1}{week 1}
\begin{frame}
\end{frame}
\begin{frame}
see Lecture \ref{week 1}
\end{frame}
\end{document}
这得出
然而,如果有像“参见讲座‘讲座 1’”这样的东西就好了,这样就可以打印带有标签“第 1 周”的讲座标题。
有什么想法可以实现这一点吗?理想情况下,这应该与交叉引用兼容,并包含仅讲座,如引用课堂上其他讲座中的方程式
蛋糕上的结冰将是以下内容:具有一个宏 \lectureref{label},其中标签是 \lecture{}-lecture 范围内的框架上的 \label{}-标签。
答案1
这其实相当容易做到。您已经可以手动\label
为 a 设置 a\lecture
并将其用于交叉引用。我们可以轻松地在每个\lecture
使用 处插入一个\AtBeginLecture
。为了允许引用名称,我们必须\@currentlabelname
先设置。(我选择使用简短的讲座标题,但如果您愿意,也可以使用长格式。)然后,我们可以使用常用的命令\ref
和\nameref
。
通常建议使用表示其类型的前缀来命名所有标签。我lec:
在这里选择了前缀。因此,您必须week-1
在beamer
的本机命令中使用标签,但lec:week-1
在交叉引用时。
\documentclass{beamer}
\usepackage{csquotes}
\makeatletter
\AtBeginLecture{%
\edef\@currentlabelname{\beamer@shortlecturename}%
\label{lec:\beamer@currentlecturelabel}%
}
\makeatother
\includeonlylecture{week-2}
\begin{document}
\lecture[short week~1 title]{very long and clumsy week~1 title}{week-1}
\begin{frame}
a frame
\end{frame}
\lecture{week~2 title}{week-2}
\begin{frame}
see lecture~\ref{lec:week-1}, which is called~\enquote{\nameref{lec:week-1}}
\end{frame}
\end{document}