是否可以使用\url
hyperref 包中的命令和“简写” URL,例如
\url{ipython.org}
代替
\url{http://ipython.org} ?
前者似乎只能链接到我电脑上的本地文件,而不是检索网址。(我想我可以使用\href
,但\url
它更短,我想保留它的格式功能。)
编辑回应 karlkoeller 的回答:
抱歉,我写得不够准确。我不介意输入“http”部分,但我宁愿不看到它打印。
egreg 的回答满足了我的要求——非常感谢!
答案1
最好使用不同的命令,以便其用法更清楚:
\documentclass{article}
\usepackage{xcolor}
\usepackage[
colorlinks,
linkcolor=magenta
]{hyperref}
\newcommand\rurl[1]{%
\href{http://#1}{\nolinkurl{#1}}%
}
\begin{document}
This is a link \rurl{ipython.org} written in abbreviated form.
\end{document}
当然,您会失去技巧\url
并且\href
能够使用复杂的 URI 来处理特殊字符,但是像这样的短 URI 不应该有这个问题。
图像中的颜色表明它确实是一个网页的链接。
如果您的 URL 很长,请加载xurl
。
\documentclass{article}
\usepackage{xcolor}
\usepackage{xurl}
\usepackage[
colorlinks,
linkcolor=magenta
]{hyperref}
\newcommand\rurl[1]{%
\href{http://#1}{\nolinkurl{#1}}%
}
\begin{document}
This is a link \rurl{ipython.org} written in abbreviated form.
This is a very long link \rurl{tex.stackexchange.com/questions/139921/how-to-avoid-the-http-part-in-hyperrefs-url/139934?noredirect=1\#comment1699916_139934}
\end{document}
答案2
您可以加载包url
并重新定义命令\url
,如下所示:
\DeclareUrlCommand\url{\color{magenta}\def\UrlLeft{http://}\urlstyle{tt}}
xcolor
请注意,如果您想为链接添加颜色,也需要该包。
现在你可以简单地写
\url{ipython.org}
并http://
自动添加。
完整示例
\documentclass{article}
\usepackage{hyperref}
\usepackage{xcolor,url}
\DeclareUrlCommand\url{\color{magenta}\def\UrlLeft{http://}\urlstyle{tt}}
\begin{document}
\url{ipython.org}
\end{document}
输出:
当然,你可以保留原\url
命令,然后定义一个新命令,\shorturl
以便
\documentclass{article}
\usepackage[colorlinks]{hyperref}
\usepackage{xcolor,url}
\DeclareUrlCommand\shorturl{\color{magenta}\def\UrlLeft{http://}\urlstyle{tt}}
\begin{document}
\url{local-link}
\shorturl{ipython.org}
\end{document}
输出:
答案3
我使用以下补丁向 添加了可选参数,\url
该参数包含在链接地址中但不打印。您可以在 url 的两个部分中使用“特殊”字符,例如 、_
和(与原始 一样),但那里$
&
%
\url
一定不参数中、参数之间或宏与参数之间的任何换行符。(这可以解决 - 原始宏就是这样做的 - 但必须非常小心地完成,对我来说这不值得付出努力,因为我不认为这是一个相关的限制。)
\documentclass{article}
\usepackage{etoolbox}
\usepackage{xparse}
\usepackage[colorlinks]{hyperref}
\makeatletter
% \url[no-print-prefix]{url}
\begingroup
\endlinechar=-1 %
\catcode`\^^A=14 %
\catcode`\^^M\active
\catcode`\%\active
\catcode`\#\active
\catcode`\_\active
\catcode`\$\active
\catcode`\&\active
\let\my@url\hyper@normalise
\patchcmd\my@url{\hyper@n@rmalise}{\my@url@}{}{}^^A
\global\let\my@url\my@url
\endgroup
\DeclareRobustCommand*\my@url@[2][]{\endgroup\href{#1#2}{\nolinkurl{#2}}}
\DeclareRobustCommand*\url{\my@url}
\makeatother
\begin{document}
This is a link written in abbreviated form: \url[https://]{tex.stackexchange.com}
Special characters work, too: \url[https://]{en.wikipedia.org/w/index.php?search=LaTeX&title=Special%3ASearch}
\end{document}