是否可以重新定義 \url 使其在沒有或有 http 的情況下都可以工作

是否可以重新定義 \url 使其在沒有或有 http 的情況下都可以工作

這個問題與這個問題有關如何避免 hyperref 的 \url 中的「http:」部分?以及解決方案https://tex.stackexchange.com/a/139934/39306https://tex.stackexchange.com/a/139925/39306

我想重新定義 \url ,以便以下產生相同的結果。

\url{ipython.org}

或者

\url{http://ipython.org}

(使用\rurl{http://ipython.org}上面的解決方案中給出的似乎不起作用,實際上在通過pdflatex編譯後,單擊http://ipython.org在 pdf 檔案上,導致不存在的頁面http://www.http.com//ipython.org)根據解決方案請參閱下面的範例https://tex.stackexchange.com/a/139934/39306:

\documentclass{article}
\usepackage{hyperref}
\newcommand\rurl[1]{%
  \href{http://#1}{\nolinkurl{#1}}%
}


\begin{document}
\rurl{ipython.org}\\
\rurl{http://ipython.org}
\end{document}

答案1

\documentclass{article}
\usepackage{hyperref}
\newcommand\rurl[1]{\xurl#1\empty\empty\empty\empty\empty\xurl}
\def\xurl#1#2#3#4#5#6\xurl{%
  \def\tmp{#1#2#3#4#5}%
  \href{\ifx\tmp\xurlhttp \else http://\fi#1#2#3#4#5#6}%
       {\nolinkurl{#1#2#3#4#5#6}}%
}
\def\xurlhttp{http:}

\begin{document}
\rurl{ipython.org}\\
\rurl{http://ipython.org}
\end{document}

相關內容