我正在撰写一篇出版物,需要我突出显示特定参考文献以供特别关注。在参考文献列表中,引用需要带有星号,如下所示:“[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}
答案2
我自己以适当的方式弄清楚了哪里出了问题。我会把帖子发布出来让其他人看到。
bibmacro 的更新finentry
缺少调用\finentry
。该命令\finentry
与 bibmacrofinentry
和调用是分开的\blx@initunit
,后者启动下一个条目(我认为)。
我当前的解决方案是:
\renewbibmacro*{finentry}{%
\ifcsdef{cbx@\thefield{entrykey}@bibnote}{%
\\\textit{\csuse{cbx@\thefield{entrykey}@bibnote}}%
}{}%
\finentry%
}
我的第二个问题还没有解决。