名前 + 年 + タイトルの脚注のカスタム形式を定義しましたが、何らかの理由で上付き文字の前にスペースがあります。これはどこから来ているのでしょうか?
コマンドは次のようになります:
\DeclareNameFormat{lastnameonly}{\namepartfamily}
\DeclareCiteCommand{\myfootcite}{}{%
\footnote{%
\printnames[lastnameonly]{author} (\printfield{year}), \printfield{title}
}
}{}{}
出力:
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}
答え1
最も簡単な方法は、定義\unskip
の先頭に以下を追加することです\myfootcite
。
%% Custom command giving a mysterious space
\DeclareNameFormat{lastnameonly}{\namepartfamily}
\DeclareCiteCommand{\myfootcite}{}{%
\unskip
\footnote{%
\printnames[lastnameonly]{author} (\printfield{year}), \printfield{title}% <--
}% <--
}{}{}
これには、コマンドが適用されたときに、コマンドの挿入の直前のスペースを削除する効果があります。
これの逆は で\ignorespaces
、これは、その名のとおり、末尾にスペースを含むコマンドの直後のスペースを無視します。
これらの 2 つのコマンドは、ここでの例に示すように、ランニング ヘッドや脚注の前など、「きれいな」スペースが重要な位置で使用される文字列の先頭または末尾に、不注意な入力によってスペースが含まれている場合に効果を発揮します。
%
でマークされた箇所には、 で削除された不要なスペースもありました<--
。