slowfox
10-11-2010, 15:45
Ich habe mir für mein Dokument eine Reihe von Abkürzungen über ein Makro definiert. Um nur nötigenfalls ein nachfolgendes Leerzeichen anzugeben verwende ich xspace. Um den Abkürzungspunkt von Latex nicht als Satzendzeichen mit nachfolgendem vergrößerten Leerzeichen interpretieren zu lassen packe ich die Abkürzungen samt Punkt in eine mbox. (Alternativ könnte ich dies auch durch \@ nach dem Punkt lösen, da ich aber auch mehrteilige Abkürzungen habe, wie bspw. "z.B." verhindert mbox auch den Zeilenumbruch zwischen den einzelnen Teilen.) Das funktioniert soweit zufriedenstellend.
Nun verwende ich die Abkürzungen auch in den optionalen Parametern des cite-Befehls (ich verwende BibLatex), und dort verursacht mein Makro ein größeres Leerzeichen. Zur Kontrolle habe ich die im Makro verwendete Formulierung direkt als optionales Argument eingegeben und dabei festgestellt, das xspace das Problem ist.
Wie kann ich mein Abkürzungsmakro anpassen, um dieses Problem zu beseitigen?
\begin{filecontents}{\jobname.bib}
@BOOK{beispiel,
title = {Buchtitel},
publisher = {Verlag},
year = {2010},
author = {Autor, Vorname},
}
\end{filecontents}
\documentclass[ngerman]{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{babel}
\usepackage[style=authoryear-comp]{biblatex}
\bibliography{\jobname}
\usepackage{xspace}
\makeatletter
\newcommand\abk@vgl{\mbox{vgl.}\xspace}
%oder: \newcommand\abk@vgl{vgl.\@\xspace}
\makeatother
\newcommand\abk[1]{\csname abk@#1\endcsname}
\begin{document}
\noindent (\abk{vgl} Autor 2010).
\noindent (\abk{vgl} \cite{beispiel}).
\noindent \parencite[\abk{vgl}][]{beispiel}.
\noindent \parencite[\mbox{vgl.}\xspace][]{beispiel}.
\noindent \parencite[\mbox{vgl.}][]{beispiel}.
\end{document}
Nun verwende ich die Abkürzungen auch in den optionalen Parametern des cite-Befehls (ich verwende BibLatex), und dort verursacht mein Makro ein größeres Leerzeichen. Zur Kontrolle habe ich die im Makro verwendete Formulierung direkt als optionales Argument eingegeben und dabei festgestellt, das xspace das Problem ist.
Wie kann ich mein Abkürzungsmakro anpassen, um dieses Problem zu beseitigen?
\begin{filecontents}{\jobname.bib}
@BOOK{beispiel,
title = {Buchtitel},
publisher = {Verlag},
year = {2010},
author = {Autor, Vorname},
}
\end{filecontents}
\documentclass[ngerman]{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{babel}
\usepackage[style=authoryear-comp]{biblatex}
\bibliography{\jobname}
\usepackage{xspace}
\makeatletter
\newcommand\abk@vgl{\mbox{vgl.}\xspace}
%oder: \newcommand\abk@vgl{vgl.\@\xspace}
\makeatother
\newcommand\abk[1]{\csname abk@#1\endcsname}
\begin{document}
\noindent (\abk{vgl} Autor 2010).
\noindent (\abk{vgl} \cite{beispiel}).
\noindent \parencite[\abk{vgl}][]{beispiel}.
\noindent \parencite[\mbox{vgl.}\xspace][]{beispiel}.
\noindent \parencite[\mbox{vgl.}][]{beispiel}.
\end{document}