\footnote 命令前的神秘空格

\footnote 命令前的神秘空格

我定义了自定义名称 + 年份 + 标题脚注格式,但不知为何上标前有一个前导空格。这是怎么回事?

该命令如下所示:

\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,正如它所说,它将忽略在末尾包含该命令的命令后紧接着的任何空格。

当不小心输入的某些字符串的开头或结尾包含空格时,这两个命令就会发挥作用,而这些字符串将用在需要“干净”间距的位置,比如运行头或脚注前面,如此处的示例所示。

%在标有 的位置还存在虚假空格,用 删除<--

相关内容