Ist es möglich, \url so neu zu definieren, dass es ohne oder mit http funktioniert?

Ist es möglich, \url so neu zu definieren, dass es ohne oder mit http funktioniert?

Diese Frage hängt mit der Frage zusammenWie vermeidet man den Teil „http:“ in der \URL von Hyperref?und die Lösungenhttps://tex.stackexchange.com/a/139934/39306Undhttps://tex.stackexchange.com/a/139925/39306.

Ich möchte \url so neu definieren, dass das Folgende das gleiche Ergebnis liefert.

\url{ipython.org}

oder

\url{http://ipython.org}

(Die Verwendung der \rurl{http://ipython.org}in der obigen Lösung angegebenen scheint nicht zu funktionieren. Tatsächlich wird nach der Kompilierung mit pdflatex und einem Klick aufhttp://ipython.orgauf PDF-Datei, führt zu der nicht vorhandenen Seitehttp://www.http.com//ipython.org) siehe das Beispiel unten basierend auf der Lösunghttps://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}

Antwort1

\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}

verwandte Informationen