投影機框架環境中 \href 連結中的井號 #

投影機框架環境中 \href 連結中的井號 #

雖然在連結中使用井號 # 通常沒有問題\href(請參閱帶有#(數字符號)的超鏈接frame),它在 的環境中不起作用beamer

\documentclass{beamer}

\usepackage{hyperref}

\begin{document}
\begin{frame}
\href{http://de.wikipedia.org/wiki/Hybridorbital#Beispiele}{Wiki}
\end{frame}
\end{document}

這會導致錯誤! Illegal parameter number in definition of \iterate.

不過,刪除frame環境後,它可以正常編譯。所以我的問題是,如何在 的環境\href中包含帶有符號 # 的連結?framebeamer


編輯:評論建議將該選項添加[fragile]frame環境中。雖然這可以解決上面的 MWE,但它並不能解決下面的 MWE 也會因為連結中的井號 # 而崩潰的事實\href

\documentclass{beamer}

\usepackage{hyperref}

\begin{document}
\begin{frame}[fragile]
\only<1>{\href{http://de.wikipedia.org/wiki/Hybridorbital#Beispiele}}{Wiki}
\end{frame}
\end{document}

這會產生錯誤,! Illegal parameter number in definition of \beamer@doifinframe.但是從連結中刪除井號#,並且編譯時不會出現錯誤。

答案1

beamer在實際排版任何內容之前掃描整個frame環境,這會導致逐字內容出現問題,因為在實際排版之前無法「看到」它,或者標記化會過早發生並且無法工作。

本質上,第一個範例中發生的情況是:

\def\iterate{Hybridorbital#Beispiele}

這會引發錯誤:

! Illegal parameter number in definition of \iterate.
<to be read again>
                   B
l.4 \def\iterate{Hybridorbital#B

beamer下一個範例顯示了相同的問題,只不過該問題在掃描時不會發生frame,但當它取得 的參數時會發生\only。根據經驗,不要使用逐字指令作為其他指令的參數。

要解決此問題,您可以逃避#.的文檔\href說:

在此輸入影像描述

所以這有效(因為\#不是“特殊”字元#):

\documentclass{beamer}
\usepackage{hyperref}
\begin{document}
\begin{frame}
\only<1>{\href{http://de.wikipedia.org/wiki/Hybridorbital\#Beispiele}{Wiki}}
\end{frame}
\end{document}

相關內容