我正在使用该hyperref
包,我想创建一个命令,用于\href
删除其协议后写入 s 一次。例如,
https://google.com
变得相关google.com
http://google.com
变得相关google.com
通常为了做到这一点我可以写
\documentclass{article}
\usepackage{hyperref}
\begin{document}
\href{https://google.com}{google.com}
\end{document}
然而,如果我能创建一个像这样工作的命令,那就太理想了
\newcommand{\uri}[1]{
\href{#1}{
% somehow remove http[s]?:\/\/ from #1
}
}
答案1
由于 URL 中没有特殊字符,因此非常简单:
\documentclass{article}
\usepackage{hyperref}
\newcommand{\rhref}[1]{%
\href{#1}{\stripprotocol#1\stripprotocol}%
}
\def\stripprotocol#1//#2\stripprotocol{#2}
\begin{document}
\rhref{http://google.com}
\rhref{https://tex.stackexchange.com}
\end{document}
如果您坚持使用l3regex
:
\documentclass{article}
\usepackage{xparse}
\usepackage{hyperref}
\ExplSyntaxOn
\NewDocumentCommand{\rhref}{m}
{
\tl_set:Nn \l_tmpa_tl { #1 }
\regex_replace_once:nnN { \A .*? // } { } \l_tmpa_tl
\href{#1}{\l_tmpa_tl}
}
\ExplSyntaxOff
\begin{document}
\rhref{http://google.com}
\rhref{https://tex.stackexchange.com}
\end{document}