检测当前幻灯片中是否覆盖了某些材料

检测当前幻灯片中是否覆盖了某些材料

问题是:

如何编写宏投影机 \coveredIfTF{true code}{false code}测试文档的“当前执行”部分是否将显示。

实际上,投影仪框架可能会执行多次;每次都必须制作不同的幻灯片。在 的情况下,例如,\uncover<3->{content}命令,content在每次迭代时执行(包括具有副作用的内部命令),但仅从第三张幻灯片开始显示。如果发生在 中content,将对前两张幻灯片\coveredIfTF{true code}{false code}执行,并从第三张幻灯片开始执行 。false codetrue code

背景是知识包。我们希望能够写入以下内容(此代码不完整):

\documentclass{beamer}
\newcommand\intro[1]{---suitable code---}
\newcommand\kl[1]{---suitable code---}

\begin{document}
\begin{frame}
\begin{itemize}[<+->]
\item A \intro{duck} is a \dots
\item A \intro{cat} is a \dots
\end{itemize}
\end{frame}

\begin{frame} 
Take a \kl{duck}, \dots{}
Consider now a \kl{cat}, \dots
\end{frame} 
\end{document}

预期结果将是以下代码编译的结果:

\documentclass{beamer}

\begin{document}
\begin{frame}
\begin{itemize}[<+->]
\item A \hypertarget<.>{duck}{duck} is a \dots
\item A \hypertarget<.>{cat}{cat} is a \dots
\end{itemize}
\end{frame}

\begin{frame} 
Take a \hyperlink{duck}{duck}, \dots{}
Consider now a \hyperlink{cat}{cat}, \dots
\end{frame} 
\end{document}

的效果\intro是将目标添加到幻灯片中第一次\intro将是显示(因此问题有一个宏\coveredIfTF可以完全隔离这个问题),并\kl隐藏到这个目标的链接。

但是,简单的解决方案例如:

\newcommand\intro[1]{\hypertarget<.>{#1}{#1}}

由于多种原因,它并不令人满意。

  • 它在其他情况下不起作用投影机,例如 \begin{itemize} \item<1-> A \intro{duck} is a \dots \item<2-> A \intro{cat} is a \dots \end{itemize} 这似乎是因为 te<.>符号是为使用 而定制的<+->
  • 我需要对宏进行细粒度的控制,以便将其与知识包的现在和将来的功能相结合。
  • 因为这是针对软件包开发,而不是针对单个文档,所以解决方案必须强大,并且兼容所有方式投影机必须处理隐藏和显示材料。
  • 出于同样的原因,由用户明确提供幻灯片编号的解决方案是不可接受的。

因此,对我来说,解决这个问题的最好方法是使用宏\coveredIfTF{true code}{false code}。我愿意相信这样的宏在内部已经存在投影机

答案1

我猜你的问题可以简化为将超目标设置为当前幻灯片。这样链接就会跳转到正确的覆盖层。

不幸的是,您分享的代码片段你的评论没有产生任何链接(添加后\usepackage{knowledge}),因此这里有一个使用普通 hyperref 命令的简短示例:

\documentclass{beamer}

\begin{document} 
\begin{frame} 
\hypertarget<.->{duck}{duck} 

\begin{itemize}[<+->]
\item \hypertarget<.->{rabbit}{rabbit} 
\item \hypertarget<.->{dog}{dog} 
\item \hypertarget<.->{cat}{cat} 
\end{itemize} 

\end{frame} 

\begin{frame} 
\hyperlink{duck}{duck}  

\hyperlink{rabbit}{rabbit}  

\hyperlink{dog}{dog} 

\hyperlink{cat}{cat} 
\end{frame} 

\end{document}

相关内容