Wie ändere ich Bibtex-URL-Tags in Latex?

Wie ändere ich Bibtex-URL-Tags in Latex?

Ich möchte die in einer Bibtex-Datei definierten URL-Tags ausschneiden. Beispielsweise möchte ich das Präfix „mailto:“ abschneiden, damit es nicht angezeigt wird. Der Hyperlink muss es aber trotzdem enthalten. Der folgende Befehl funktioniert zwar in der Dokumentumgebung, schlägt aber bei Bibliographieeinträgen fehl. Ist hier besondere Sorgfalt erforderlich?

MWE:

\documentclass{scrreprt}

\usepackage{hyperref}
\usepackage{xstring}

\let\oldUrl\url

\renewcommand{\url}[1]{
    \StrBehind{#1}{:}[\tempa]
    \StrBefore{#1}{:}[\tempb]
    \IfBeginWith{\tempb}{mailto}
        {\href{#1}{\nolinkurl{\tempa}}}
        {\oldUrl{#1}}
}

\usepackage[
    backend=biber,
    style=alphabetic
]{biblatex}

\addbibresource{test.bib}

\begin{document}
\url{mailto:[email protected]}
\nocite{*}
\printbibliography
\end{document}

Bibtex-Datei:

@MANUAL{ABC,
    title = {Test Title},
    author = {ABC},
    url = {mailto:[email protected]}
}

Ausgabe:

MWE

Dies funktioniert für den Notiz-Tag, jedoch nicht für den URL-Tag, da im Notiz-Tag das URL-Makro verwendet wird (entdeckt durch Verwendung der Bibtex-Engine anstelle der Biber-Engine, da Bibtex keinen URL-Tag bereitstellt):

@MANUAL{ABC,
    title = {Test Title},
    author = {ABC},
    url = {mailto:[email protected]}
    note = {\url{mailto:[email protected]}}
}

MWE2

Meine erste Schlussfolgerung: Biber verwendet das URL-Makro nicht zum Erstellen von Hyperrefs, aber warum funktioniert dann der Else-Zweig des \IfBeginWith-Makros bei der Neudefinition des URL-Makros?

Antwort1

Siehe xstringHandbuch, 3.4 Catcode and starred macros.

Sie müssen die mit einem Sternchen versehene Version des Testmakros verwenden, wenn Sie darin Makros verwenden möchten.

\renewcommand{\url}[1]{
    \StrBehind{#1}{:}[\tempa]
    \StrBefore{#1}{:}[\tempb]
    \IfBeginWith*{\tempb}{mailto}
        {\href{#1}{\nolinkurl{\tempa}}}
        {\oldUrl{#1}}
}

verwandte Informationen