在 DeclareCiteCommand 中添加 prenote 参数

在 DeclareCiteCommand 中添加 prenote 参数

我想编辑自定义引用命令来检查是否指定了预注。

目前它看起来是这样的:

\DeclareCiteCommand{\MyCommand}
{
    \usebibmacro{prenote} %
}
{
    some stuff %
}
{}
{
    \usebibmacro{postnote} %
    \adddot %
}

是否可以检查参数的存在并相应地更改预编码?例如,A如果没有参数,则打印,B如果指定了参数,则打印。

我还有第二个与此相关的问题:当我使用 \MyCommand[argument]{resource} 时,参数会作为后注打印在命令末尾的点之前。有没有办法强制 LaTeX 认为单个参数应被视为前注,因此打印在开头?

答案1

\DeclareCiteCommand和 朋友中,可以像访问.bib文件中的字段一样访问 prenote 和 postnote 参数。因此,您可以使用 来测试 的存在prenote与否\iffieldundef

\documentclass[british]{article}
\usepackage[T1]{fontenc}
\usepackage{babel}
\usepackage{csquotes}

\usepackage[backend=biber, style=authoryear]{biblatex}

\usepackage{xcolor}
\DeclareFieldFormat{red}{\textcolor{red}{#1}}
\DeclareCiteCommand{\MyCommand}
  {\iffieldundef{prenote}
     {\printtext[red]{replacement for prenote}%
      \setunit{\prenotedelim}}
     {\usebibmacro{prenote}}}
  {\printtext{something here}}
  {\multicitedelim}
  {\usebibmacro{postnote}}

\addbibresource{biblatex-examples.bib}

\begin{document}
\MyCommand{sigfridsson}

\MyCommand[post]{sigfridsson}

\MyCommand[pre][post]{sigfridsson}

\MyCommand[pre][]{sigfridsson}

\printbibliography
\end{document}

替换此处的预注内容 替换此处的预注内容,在此处发布预注内容,在此处发布预注内容

相关内容