Zitat von
mechanicus
Du solltest hier mit xparse arbeiten:
Der Empfehlung kann ich mich nur anschließen. Im konkreten Fall hätte ich allerdings fast geschrieben, dass als Alternativ auch das von KOMA-Script bereitgestellt \ifstr ausreichen könnte:
Code:
\documentclass{scrreprt}
\newcommand*\urls[2][]{%
\url{#2}%
\ifstr{#1}{}{}{\footnote{Abruf am: #1}}%
}
\usepackage{hyperref}
\begin{document}
Fehler: \urls[22.02.2013]{http://www.google.de}
funktioniert (ohne Datum): \urls{http://www.google.de}
funktioniert (mit Leerzeichen): \urls[ 22.05.2013]{http://www.google.de}
funktioniert: \urls[01.05.2013]{http://www.google.de}
Fehler: \urls[11.05.2013]{http://www.google.de}
Fehler: \urls[22.05.2013]{http://www.google.de}
Fehler: \urls[zz.ww]{http://www.google.de}
\end{document}
Ich sehe allerdings ein ganz anderes Problem bei dem Befehl. Da hier nicht mehr \url, sondern bereits \urls das Argument liest, funktioniert die Sonderbehandlung von Sonderzeichen nicht mehr:
Code:
\documentclass{scrreprt}
\usepackage{xparse}
\NewDocumentCommand\urls{ o m }%
{%
\url{ #2 }%
\IfNoValueF{#1}{\footnote{Abruf am: #1}}%
}
\usepackage{hyperref}
\begin{document}
Funktioniert: \url{http://projekte.dante.de/DTK/AutorInfo#Rechtschreibung}
Funktioniert nicht: \urls{http://projekte.dante.de/DTK/AutorInfo#Rechtschreibung}
\end{document}
Bei Verwendung von \ifstr ist das übrigens genau dasselbe Problem. Bei Verwendung von xparse gibt es aber wenigstens Ansatzweise eine Lösung:
Code:
\documentclass{scrreprt}
\usepackage{xparse}
\NewDocumentCommand\urls{ o v }%
{%
\url{ #2 }%
\IfNoValueF{#1}{\footnote{Abruf am: #1}}%
}
\usepackage{hyperref}
\begin{document}
Funktioniert: \url{http://projekte.dante.de/DTK/AutorInfo#Rechtschreibung}
Funktioniert auch (fast): \urls{http://projekte.dante.de/DTK/AutorInfo#Rechtschreibung}
\end{document}
Ich scheibe deshalb "ansatzweise", weil ich die xparse-Anleitung so deute, dass das nicht immer funktioniert und bei meinen Tests der zweite Link nicht geöffnet werden konnte, während der erste problemlos funktionierte. Also empfehle ich, auf diese Schreibfaulheitsanweisung eher zu verzichten.
Lesezeichen