\footnote コマンドの前の謎のスペース

\footnote コマンドの前の謎のスペース

名前 + 年 + タイトルの脚注のカスタム形式を定義しましたが、何らかの理由で上付き文字の前にスペースがあります。これはどこから来ているのでしょうか?

コマンドは次のようになります:

\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 つのコマンドは、ここでの例に示すように、ランニング ヘッドや脚注の前など、「きれいな」スペースが重要な位置で使用される文字列の先頭または末尾に、不注意な入力によってスペースが含まれている場合に効果を発揮します。

%でマークされた箇所には、 で削除された不要なスペースもありました<--

関連情報