![Rautezeichen # im \href-Link in der Frame-Umgebung von Beamer](https://rvso.com/image/400347/Rautezeichen%20%23%20im%20%5Chref-Link%20in%20der%20Frame-Umgebung%20von%20Beamer%20.png)
Normalerweise ist es kein Problem, das Rautezeichen # in einem \href
Link zu haben (sieheHyperlink mit # (Nummernzeichen)), funktioniert es nicht in einer frame
Umgebung in beamer
.
\documentclass{beamer}
\usepackage{hyperref}
\begin{document}
\begin{frame}
\href{http://de.wikipedia.org/wiki/Hybridorbital#Beispiele}{Wiki}
\end{frame}
\end{document}
Dies führt zu dem Fehler! Illegal parameter number in definition of \iterate.
Wenn Sie jedoch die frame
Umgebung entfernen, wird die Kompilierung problemlos durchgeführt. Meine Frage ist also, wie kann ich einen \href
Link mit dem Symbol # in eine frame
Umgebung in einfügen beamer
?
[fragile]
EDIT: Ein Kommentar schlägt vor, die Option zur Umgebung hinzuzufügen frame
. Dadurch wird zwar das obige MWE behoben, aber es behebt nicht die Tatsache, dass das folgende MWE auch wegen des Rautezeichens # im \href
Link abstürzt:
\documentclass{beamer}
\usepackage{hyperref}
\begin{document}
\begin{frame}[fragile]
\only<1>{\href{http://de.wikipedia.org/wiki/Hybridorbital#Beispiele}}{Wiki}
\end{frame}
\end{document}
Dies führt zu dem Fehler. ! Illegal parameter number in definition of \beamer@doifinframe.
Entfernen Sie jedoch das Rautezeichen # aus dem Link, und die Kompilierung erfolgt ohne Fehler.
Antwort1
beamer
scannt die gesamte frame
Umgebung, bevor tatsächlich etwas gesetzt wird, und dies führt zu Problemen mit wörtlichem Inhalt, da dieser nicht „gesehen“ werden kann, bevor er tatsächlich gesetzt wird, oder die Tokenisierung erfolgt zu früh und funktioniert nicht.
Im Wesentlichen passiert in Ihrem ersten Beispiel Folgendes:
\def\iterate{Hybridorbital#Beispiele}
was den Fehler auslöst:
! Illegal parameter number in definition of \iterate.
<to be read again>
B
l.4 \def\iterate{Hybridorbital#B
Das nächste Beispiel zeigt das gleiche Problem, mit der Ausnahme, dass es nicht beim beamer
Scannen von auftritt frame
, sondern wenn das Argument von erfasst wird \only
. Als Faustregel gilt: Verwenden Sie keine wörtlichen Befehle als Argument für andere Befehle.
Um das Problem zu umgehen, können Sie escapen #
. In der Dokumentation von \href
heißt es:
So funktioniert es (weil \#
es sich nicht um das „besondere“ Zeichen handelt #
):
\documentclass{beamer}
\usepackage{hyperref}
\begin{document}
\begin{frame}
\only<1>{\href{http://de.wikipedia.org/wiki/Hybridorbital\#Beispiele}{Wiki}}
\end{frame}
\end{document}