我正在 overleaf 中制作一个 beamer 演示文稿。我想用某些东西(比如关键字)标记/标记框架,并生成一些文本,告诉我这个标记/标记/关键字/索引出现在哪些框架(而不是页面)上。这些文本应该放在同一个 pdf 中,或者最好放在单独的文件中。
我有章节 tex 文件
\documentclass{beamer}
\usepackage{pgfpages}
\usepackage{makeidx}
\makeindex
\newenvironment{theindex}
{\let\item\par
%definitions for subitem etc
}{}
\newcommand\indexspace{}
\setbeameroption{show notes on second screen}
\begin{document}
\title{ChapterName}
\begin{frame}
\huge{\inserttitle}
\end{frame}
\input{Subchapter1.tex}
\input{Subchapter2.tex}
\end{document}
和子章节文件
\section{Subchapter name}
\begin{frame}{\insertsection}
\end{frame}
\begin{frame}{Frame 3}
\begin{itemize}
\item
\end{itemize}
\note<1>{Notes on first page of frame 3.}\note<2>{Notes on second page of
frame 3.}
\index{index1}\index{index2}
\end{frame}
\begin{frame}{Frame 4}
\note<1>{Notes for frame 4.}
\index{index1}
\end{frame}
\begin{frame}{Index}
\printindex
\end{frame}
我尝试过 makeidx 和 imakeidx 包(顺便问一下有什么区别),但在 overleaf 中没有成功。也许这与我的自定义 beamer 主题有关,因为上面的代码返回一个索引,其中包含页码而不是我想要的帧号,但仍然有些问题。
是否可以使用带有 beamer 类的 overleaf 中的索引? \makeindex 可以返回帧号而不是页码吗?除了使用索引之外,也许还有其他解决方案?
答案1
利用该imakeidx
软件包,你可以使用以下技巧:
\documentclass{beamer}
\usepackage{pgfpages}
\newenvironment{theindex}{}{}
%\newcommand\indexspace{}
\usepackage{imakeidx}
\setbeameroption{show notes on second screen}
\makeatletter
\def\@idxitem{\par}
\def\imki@wrindexsplit#1#2{%
\imki@wrindexentrysplit{#1}{#2}{\the\c@framenumber}%
\endgroup\imki@showidxentry{#1}{#2}%
\@esphack%
}
\def\imki@wrindexunique#1#2{%
\imki@wrindexentryunique{#1}{#2}{\the\c@framenumber}%
\endgroup\imki@showidxentry{#1}{#2}%
\@esphack%
}
\let\imki@startidx\imki@startidxsplit
\let\@wrindex\imki@wrindexsplit
\let\imki@putindex\imki@putindexsplit
\let\imki@wrindexentry\imki@wrindexentrysplit
\let\imki@startidxunique\@undefined
\let\imki@wrindexunique\@undefined
\let\imki@putindexunique\@undefined
\def\imki@firstpagestyle{empty}
\makeatother
\makeindex
\begin{document}
\title{ChapterName}
\begin{frame}
{\huge \inserttitle}
\end{frame}
\section{Subchapter name}
\begin{frame}{\insertsection}
\end{frame}
\begin{frame}{Frame 3}
\begin{itemize}
\item
\end{itemize}
\note<1>{Notes on first page of frame 3.}\note<2>{Notes on second page of
frame 3.}
index1\index{index1}
\end{frame}
\begin{frame}{Frame 4}
\begin{itemize}
\item
\end{itemize}
\note<1>{Notes on first page of frame 4.}\note<2>{Notes on second page of
frame 4.}
index1\index{index1}
index2\index{index2}
\end{frame}
\begin{frame}{Index}
\printindex
\end{frame}
\end{document}