我经常在教学材料中使用二维码来提供视频或 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}
最后一行导致了很多错误。我该如何使用\BehindSubstring
in的返回值\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}