我正在进行一个演示beamer
,我想使用该包建立(带有\hyperlink
)到某些部分(带有)的链接。\label
hyperref
出于实际原因,我将演示文稿拆分为几个文本文件,分别命名为\input
。当我构建pdf
没有特定部分的文件时,指向该部分中缺少的标签的链接指向演示文稿的第一页(这是不正确的)。
是否可以禁用 LaTeX 文档中的断开的链接(不指向任何内容)?
是否有命令可以测试\label
文档中是否存在?
这是一个基本的例子:
\documentclass[xcolor=dvipsnames,utf8]{beamer}
\begin{document}
\begin{frame}
\frametitle{Frame 1}
\end{frame}
\begin{frame}
\frametitle{Frame 2}
\label{label1}
\end{frame}
\begin{frame}
\frametitle{Frame 3}
\hyperlink{label1}{link to label1}\par % This link is OK.
\hyperlink{label2}{link to missing label2}\par % This link should be disabled
\ref{label1}\par % This ref is OK
\ref{label2} % This ref should be disabled
\end{frame}
\end{document}
答案1
可以\IfRefUndefinedExpandable
从refcount
包中进行利用(通过hyperref
loaded 加载,因此不需要额外加载)。
请参阅包装器命令\hyperrefcheck
和\checkref
相关内容。
警告:您还会错过其他不存在的参考资料。
\documentclass[xcolor=dvipsnames,utf8]{beamer}
\newcommand{\hyperlinkcheck}[2]{%
\IfRefUndefinedExpandable{#1}{%
% Do nothing
}{%
\hyperlink{#1}{#2}%
}%
}
\newcommand{\checkref}[1]{%
\IfRefUndefinedExpandable{#1}{%
% Do Nothing
}{%
\ref{#1}%
}%
}
\begin{document}
\begin{frame}
\frametitle{Frame 1}
\end{frame}
\begin{frame}
\frametitle{Frame 2}
\label{label1}
\end{frame}
\begin{frame}
\frametitle{Frame 3}
\hyperlinkcheck{label1}{link to label1}
% This link is OK.
\hyperlinkcheck{label2}{link to missing label2} % This link should be disabled
\checkref{label1} % This ref is OK
\checkref{label2} % This ref should be disabled
\end{frame}
\end{document}