\url を http の有無にかかわらず動作するように再定義することは可能ですか?

\url を http の有無にかかわらず動作するように再定義することは可能ですか?

この質問は次の質問に関連していますhyperref の \url 内の「http:」部分を回避するにはどうすればよいですか?そして解決策https://tex.stackexchange.com/a/139934/39306そしてhttps://tex.stackexchange.com/a/139925/39306

次のように同じ結果が生成されるように \url を再定義したいと思います。

\url{ipython.org}

または

\url{http://ipython.org}

\rurl{http://ipython.org}上記の解決策で示されている方法を使うとうまくいかないようです。実際、pdflatexでコンパイルした後、http://ipython.orgPDFファイルでは存在しないページにつながる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}

関連情報