nolinkurl 中 BehindSubString 的用法 (hyperref)

nolinkurl 中 BehindSubString 的用法 (hyperref)

我经常在教学材料中使用二维码来提供视频或 GeoGebra 资料的链接。为了让非智能手机(非平板电脑)用户更轻松地访问这些资源,我想在代码下方打印 URL。

由于代码是作为边注打印的,因此没有太多可用空间。因此我想删除该http://部分。但是\BehindSubString\nolinkurl彼此不喜欢:

\documentclass{minimal} 

\usepackage{substr}
\usepackage{hyperref}

\begin{document}

\def\URL{http://tex.stackexchange.com}

\nolinkurl{\URL}

\nolinkurl{\BehindSubString{http://}{\URL}}

\end{document}

最后一行导致了很多错误。我该如何使用\BehindSubstringin的返回值\nolinkurl?或者还有其他简单的方法来删除协议前缀?

答案1

\BehindSubString不可扩展。如果你的 URL 宏总是有协议(并且不包含特殊字符),你可以通过以下方式实现

\documentclass{article}

\usepackage{hyperref}

\makeatletter
\newcommand\stripprot[1]{\expandafter\strip@prot#1\strip@prot}
\def\strip@prot #1://#2\strip@prot{#2}
\makeatother

\begin{document}

\def\URL{http://tex.stackexchange.com}

\nolinkurl{\URL}

\nolinkurl{\stripprot{\URL}}

\end{document}

相关内容