Beamer 讲座:课程中讲座的参考标题

Beamer 讲座:课程中讲座的参考标题

例子:

\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-1beamer的本机命令中使用标签,但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}

MWE 输出

相关内容