我定義了自訂名稱+年份+標題腳註格式,但由於某種原因,上標之前有一個前導空格。它從哪裡來?
該指令如下圖所示:
\DeclareNameFormat{lastnameonly}{\namepartfamily}
\DeclareCiteCommand{\myfootcite}{}{%
\footnote{%
\printnames[lastnameonly]{author} (\printfield{year}), \printfield{title}
}
}{}{}
輸出:
微量元素:
\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
,正如它所說,它將忽略緊跟在末尾包含它的命令後面的任何空格。
當粗心的輸入在某些字串的開頭或結尾包含空格時,這兩個命令就會發揮作用,而該字串要在“乾淨”間距很重要的位置使用,例如行頭或腳註之前,如此處的範例所示。
還有一些假空格,%
在標示 的地方用 刪除<--
。