![Sinal de cerquilha # no link \href no ambiente de quadro do beamer](https://rvso.com/image/400347/Sinal%20de%20cerquilha%20%23%20no%20link%20%5Chref%20no%20ambiente%20de%20quadro%20do%20beamer%20.png)
Embora normalmente não haja problema em ter o sinal de cerquilha # em um \href
link (vejaHiperlink com # (sinal numérico)), ele não funciona em um frame
ambiente no beamer
.
\documentclass{beamer}
\usepackage{hyperref}
\begin{document}
\begin{frame}
\href{http://de.wikipedia.org/wiki/Hybridorbital#Beispiele}{Wiki}
\end{frame}
\end{document}
Isso resulta no erro! Illegal parameter number in definition of \iterate.
Remova o frame
ambiente, porém, e ele compilará bem. Então minha dúvida é: como posso incluir um \href
link com o símbolo # em um frame
ambiente em beamer
?
EDIT: Um comentário sugere adicionar a opção [fragile]
ao frame
ambiente. Embora isso resolva o MWE acima, não corrigirá o fato de o MWE abaixo também travar por causa do sinal de cerquilha # no \href
link:
\documentclass{beamer}
\usepackage{hyperref}
\begin{document}
\begin{frame}[fragile]
\only<1>{\href{http://de.wikipedia.org/wiki/Hybridorbital#Beispiele}}{Wiki}
\end{frame}
\end{document}
Isso gera o erro ! Illegal parameter number in definition of \beamer@doifinframe.
Remova o sinal de cerquilha # do link e ele compila sem erros.
Responder1
beamer
verifica todo o frame
ambiente antes de realmente compor qualquer coisa, e isso leva a problemas com o conteúdo literal, porque ele não pode ser "visto" antes de ser realmente composto, ou a tokenização acontecerá muito cedo e não funcionará.
Essencialmente, o que acontece no seu primeiro exemplo é:
\def\iterate{Hybridorbital#Beispiele}
que gera o erro:
! Illegal parameter number in definition of \iterate.
<to be read again>
B
l.4 \def\iterate{Hybridorbital#B
O próximo exemplo mostra o mesmo problema, exceto que o problema não acontece durante beamer
a varredura do frame
, mas quando ele captura o argumento do \only
. Como regra geral, não use comandos literais como argumento para outros comandos.
Para contornar o problema, você pode escapar do arquivo #
. A documentação de \href
diz:
Então isso funciona (porque \#
não é o caractere "especial" #
):
\documentclass{beamer}
\usepackage{hyperref}
\begin{document}
\begin{frame}
\only<1>{\href{http://de.wikipedia.org/wiki/Hybridorbital\#Beispiele}{Wiki}}
\end{frame}
\end{document}