带有 \href 的新命令

带有 \href 的新命令

我在使用 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}

与另一个问题一样,人们定义了一个辅助命令,该命令通过#给定适当的类别代码来调用,因此它不再被解释为命令参数。

相关内容