biblatex:测试命令是否在 cite 命令内

biblatex:测试命令是否在 cite 命令内

思路如下:通常,\fullcite只需通过调用 即可打印完整的参考书目条目\usedriver。在我的风格中,我添加了隐藏和 biblatex-fiwi之类的选项。目前,此选项适用于 参考书目条目 和 的结果。forewordafterword\fullcite

我希望能够区分 和 的结果\printbibliography\fullcite但由于\fullcite依赖于 相同的机制\printbibliography,这很棘手。我需要一个测试来告诉我我们当前是否在命令内\cite。这样我就可以添加\fullcite-only 选项。

据我所知,不存在此类测试。

答案1

有什么问题吗\ifbibliography(详情请参阅手册第 4.6.2 节)?

\documentclass{article}

\usepackage{biblatex}

\renewbibmacro{begentry}{\ifbibliography{}{\clearname{foreword}}}

\usepackage{filecontents}

\begin{filecontents}{\jobname.bib}
@misc{A01,
  author = {Author, A.},
  year = {2001},
  title = {Alpha},
  foreword = {Buthor, B.},
}
\end{filecontents}

\addbibresource{\jobname.bib}

\begin{document}

\fullcite{A01}

\printbibliography

\end{document}

在此处输入图片描述

答案2

我不思考有一个内置的方法可以做到这一点[更新:错误]:至少,如果有的话,我不知道[不幸的是,这一部分不是:请参阅 Lockstep 的答案以了解正确的方法]。

我认为最简单的方法是\AtBeginBibliography。选项包括:设置某种可在驱动程序中测试的切换开关,并指示它是在参考书目环境中调用的 [这是不必要的,因为已经提供了一个],或者设置一个驱动程序别名来触发该点,这样你就可以有效地替换该驱动程序\fullcite“看到”的驱动程序替换为另一个仅在参考书目中生效的驱动程序[我认为这仍是一种可行的选择,如果有很多事情需要改变,这可能是明智的]。

相关内容