![beamer hyperref url 带有 %20 失控参数](https://linux22.com/image/332478/beamer%20hyperref%20url%20%E5%B8%A6%E6%9C%89%20%2520%20%E5%A4%B1%E6%8E%A7%E5%8F%82%E6%95%B0.png)
我想在 beamer notes 中使用 URL。如果 URL 包含,%20
它似乎会导致 xelatex 出现问题。
\documentclass{beamer}
\usepackage{hyperref}
\begin{document}
\begin{frame}
\note{\href{http://www.example.com/A%20B%20C.pdf}{some text}}
\end{frame}
\end{document}
出现以下错误:
Runaway argument?
\note {\href {http://www.example.com/A\end {frame} \par \end {documen\ETC.
! File ended while scanning use of \frame.
<inserted text>
\par
<*> test
?
查看此网站上的其他问题似乎表明在链接中使用%20
是可以的,所以我不确定该怎么做。我想要%20
而不是 空格。
答案1
一般情况下,
\href{http://www.example.com/A%20B%20C.pdf}{some text}
单独出现,也就是说,不在宏的参数中,因为\href
在吸收 URL 时会暂停 TeX 的常规读取规则。然而,类似
\mbox{\href{http://www.example.com/A%20B%20C.pdf}{some text}}
会带来麻烦(\mbox
用于代表任何带有参数的命令),因为 TeX 的读取规则是不是\mbox
当吸收其论点时被暂停。
在这种情况下,您可以转义百分比字符:
\mbox{\href{http://www.example.com/A\%20B\%20C.pdf}{some text}}
因为知道在制作内部 URL 时\href
如何转换为真正的百分比字符。\%
另一方面,beamer
你不能使用“裸”形式,因为frame
环境的内容被吸收,就好像它是宏的参数一样,所以它与情况相同\mbox
。然而,输入
\begin{frame}
\note{\href{http://www.example.com/A\%20B\%20C.pdf}{some text}}
\end{frame}
应该管用。
顺便说一句,请养成\end{frame}
在同一行中输入时前面不加空格的习惯,因为如果您将选项添加fragile
到\begin{frame}
,前面的空格\end{frame}
会产生奇怪的错误。