使用 finentry 后,如何删除 biblatex 参考列表中不需要的句号?

使用 finentry 后,如何删除 biblatex 参考列表中不需要的句号?

我正在撰写一篇出版物,需要我突出显示特定参考文献以供特别关注。在参考文献列表中,引用需要带有星号,如下所示:“[3] * 作者等”。

根据互联网上的一些其他答案(抱歉,几周前就写了,现在找不到帖子了),我写了下面的代码。该命令\bibnote允许我执行: \bibnote{citationkey}{Note about this particular article.}

\makeatletter
\newcommand{\bibnote}[2]{\csdef{cbx@#1@bibnote}{#2}}
\renewbibmacro*{begentry}{%
  \ifcsdef{cbx@\thefield{entrykey}@bibnote}{%
    *%
}{}}
\renewbibmacro*{finentry}{%
  \ifcsdef{cbx@\thefield{entrykey}@bibnote}{%
    \\\textit{\csuse{cbx@\thefield{entrykey}@bibnote}}%
}{}}
\makeatother

代码可以运行,但有一个令人讨厌的警告:列表中的每个引用现在都以换行符和句点结尾,后跟下一个条目:

[1] 作者,标题,...。
[2] 作者,标题,...。
[3] * 作者,标题,...

我尝试深入研究 biblatex 的代码,但无法删除句号。\renewcommand*{\finentrypunct}{\nopunct}没有任何效果。有谁对 biblatex 有足够的了解,可以帮我解决这个问题吗?

另一个问题是,在文本中,感兴趣的引用需要带有星号,例如:“[3*]”。我现在在引用时使用后注​​来解决这个问题,但这很容易出错。有没有办法根据引用关键字自动为每个引用添加后注?

答案1

如果在字段格式中添加星号labelnumber,则可以同时在引文和参考书目中获得它。

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

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

\newcommand{\bibnote}[2]{\csdef{cbx@#1@bibnote}{#2}}

\renewbibmacro*{finentry}{%
  \ifcsundef{cbx@\thefield{entrykey}@bibnote}
    {}
    {\\\textit{\csuse{cbx@\thefield{entrykey}@bibnote}}}%
  \finentry
}

\DeclareFieldFormat{labelnumber}{%
  #1%
  \ifcsundef{cbx@\thefield{entrykey}@bibnote}
    {}
    {*}}

\bibnote{sigfridsson}{Note about this particular article.}


\addbibresource{biblatex-examples.bib}

\begin{document}
Lorem \autocite{sigfridsson}
dolor \autocite{worman}
sit \autocite{nussbaum}

\printbibliography
\end{document}

Lorem [2*] 忧伤 [3] 坐 [1]

答案2

我自己以适当的方式弄清楚了哪里出了问题。我会把帖子发布出来让其他人看到。

bibmacro 的更新finentry缺少调用\finentry。该命令\finentry与 bibmacrofinentry和调用是分开的\blx@initunit,后者启动下一个条目(我认为)。

我当前的解决方案是:

\renewbibmacro*{finentry}{%
  \ifcsdef{cbx@\thefield{entrykey}@bibnote}{%
    \\\textit{\csuse{cbx@\thefield{entrykey}@bibnote}}%
  }{}%
  \finentry%
}

我的第二个问题还没有解决。

相关内容