我在使用 newcommand 时遇到了问题\href
我想要一个这样的新命令:
\newcommand\link[2]{\href{#1}{\underline{#2}}}
此命令非常有效,例如:
\link{htt://www.impa.br}{IMPA}
但是当 URL 名称包含类似 #1 的代码时,它不起作用。例如,在这个例子中它不起作用:
\link{http://matematica.obmep.org.br/index.php/modulo/index#1}{modules}
它不起作用,因为 URL 名称中的 #1 与新命令中的 #1 一起使用。
我该如何解决这个问题?
答案1
这确实是自定义 \href 命令中使用“#”的问题。但为了清楚地说明如何在您的案例中使用它,这里有一个完整的示例:
\documentclass{article}
\usepackage{hyperref}
\makeatletter
\newcommand*{\link}{\begingroup\@makeother\#\@mylink}
\newcommand*{\@mylink}[2]{\href{#1}{\underline{#2}}\endgroup}
\makeatother
\begin{document}
\link{htt://www.impa.br}{IMPA}
\link{http://matematica.obmep.org.br/index.php/modulo/index#1}{modules}
\end{document}
与另一个问题一样,人们定义了一个辅助命令,该命令通过#
给定适当的类别代码来调用,因此它不再被解释为命令参数。