Rautezeichen # im \href-Link in der Frame-Umgebung von Beamer

Rautezeichen # im \href-Link in der Frame-Umgebung von Beamer

Normalerweise ist es kein Problem, das Rautezeichen # in einem \hrefLink zu haben (sieheHyperlink mit # (Nummernzeichen)), funktioniert es nicht in einer frameUmgebung 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 frameUmgebung entfernen, wird die Kompilierung problemlos durchgeführt. Meine Frage ist also, wie kann ich einen \hrefLink mit dem Symbol # in eine frameUmgebung 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 \hrefLink 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

beamerscannt die gesamte frameUmgebung, 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 beamerScannen 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 \hrefheißt es:

Bildbeschreibung hier eingeben

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}

verwandte Informationen