Signo de almohadilla # en el enlace \href en el entorno del marco del proyector

Signo de almohadilla # en el enlace \href en el entorno del marco del proyector

Si bien normalmente no hay ningún problema con tener el signo de almohadilla # en un \hrefenlace (consulteHipervínculo con # (signo numérico)), no funciona dentro de un frameentorno en beamer.

\documentclass{beamer}

\usepackage{hyperref}

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

Esto da como resultado el error! Illegal parameter number in definition of \iterate.

Sin embargo, elimine el frameentorno y se compilará bien. Entonces mi pregunta es, ¿cómo puedo incluir un \hrefenlace con el símbolo # en un frameentorno en beamer?


EDITAR: Un comentario sugiere agregar la opción [fragile]al frameentorno. Si bien esto soluciona el MWE anterior, no solucionará el hecho de que el MWE siguiente también falla debido al signo de almohadilla # en el \hrefenlace:

\documentclass{beamer}

\usepackage{hyperref}

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

Esto da el error ! Illegal parameter number in definition of \beamer@doifinframe.Sin embargo, elimine el signo de almohadilla # del enlace y se compila sin errores.

Respuesta1

beamerescanea todo el frameentorno antes de escribir algo, y esto genera problemas con el contenido textual, porque no se puede "ver" antes de que se esté escribiendo, o la tokenización ocurrirá demasiado pronto y no funcionará.

Básicamente, lo que sucede en su primer ejemplo es:

\def\iterate{Hybridorbital#Beispiele}

que arroja el error:

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

El siguiente ejemplo muestra el mismo problema, excepto que el problema no ocurre mientras beamerse escanea el archivo frame, sino cuando toma el argumento de \only. Como regla general, no utilice comandos textuales como argumento para otros comandos.

Para solucionar el problema, puede escapar del archivo #. La documentación de \hrefdice:

ingrese la descripción de la imagen aquí

Entonces esto funciona (porque \#no es el carácter "especial" #):

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

información relacionada