Ich habe ein benutzerdefiniertes Fußnotenformat mit Name, Jahr und Titel definiert, aber aus irgendeinem Grund steht vor der hochgestellten Zahl ein Leerzeichen. Woher kommt das?
Der Befehl sieht folgendermaßen aus:
\DeclareNameFormat{lastnameonly}{\namepartfamily}
\DeclareCiteCommand{\myfootcite}{}{%
\footnote{%
\printnames[lastnameonly]{author} (\printfield{year}), \printfield{title}
}
}{}{}
Ausgabe:
MWE:
\documentclass{article}
\usepackage[backend=biber]{biblatex}
\bibliography{references.bib}
\begin{filecontents}{references.bib}
@article{smith01,
author = {Smith, John},
year = {2001},
title = {Article title}
}
\end{filecontents}
%% Custom command giving a mysterious space
\DeclareNameFormat{lastnameonly}{\namepartfamily}
\DeclareCiteCommand{\myfootcite}{}{%
\footnote{%
\printnames[lastnameonly]{author} (\printfield{year}), \printfield{title}
}
}{}{}
\begin{document}
There is a space \myfootcite{smith01}
\end{document}
Antwort1
Am einfachsten ist es, \unskip
am Anfang der \myfootcite
Definition hinzuzufügen:
%% Custom command giving a mysterious space
\DeclareNameFormat{lastnameonly}{\namepartfamily}
\DeclareCiteCommand{\myfootcite}{}{%
\unskip
\footnote{%
\printnames[lastnameonly]{author} (\printfield{year}), \printfield{title}% <--
}% <--
}{}{}
Dies hat zur Folge, dass das Leerzeichen entfernt wird, das der Einfügung des Befehls unmittelbar vorangeht, wenn dieser angewendet wird.
Das Gegenteil davon ist \ignorespaces
, das, wie der Name schon sagt, alle Leerzeichen ignoriert, die unmittelbar auf einen Befehl folgen, der es am Ende enthält.
Diese beiden Befehle sind sinnvoll, wenn eine unachtsame Eingabe Leerzeichen am Anfang oder Ende einer Zeichenfolge enthält, die an einer Position verwendet werden soll, wo es auf „saubere“ Abstände ankommt, z. B. in einer Kopfzeile oder vor einer Fußnote, wie das Beispiel hier zeigt.
%
An den mit markierten Stellen gab es auch ungehörige Leerzeichen, die mit einem entfernt wurden <--
.