我想编辑自定义引用命令来检查是否指定了预注。
目前它看起来是这样的:
\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}