我使用 Biblatex/Biber 的样式phys
。我想用星号突出显示文本中选定的参考文献,即应标记数字。\cite{key1,highlightedkey,key2}
文本中的结果应类似于 [13,78*,99]。
我找到了针对类似问题的解决方案:是否可以用星号标记参考书目中的指定条目?但是,该条目在参考书目中突出显示。有没有什么方法可以实现我想要的效果?
答案1
对我来说非常有效的解决方案:
添加到序言中:
\renewcommand{\postnotedelim}{}
\DeclareFieldFormat{postnote}{#1}
然后使用:
\cites{key1}[][$^\ast$]{highlightedkey}{key3}
给了我我想要的输出。
请注意,此解决方案可能不适用于任何人,因为整个文档的后记行为都会改变。(就我而言没有问题。)
答案2
如果我们使用类别方法,我们可以自动化这种行为。
\DeclareBibliographyCategory{asterisk}
我们使用宏来避免输入太多内容
\newcommand*{\addcat}{%
\ifcategory{asterisk}%
{*}%
{}%
}
然后我们在参考书目中添加星号
\renewbibmacro*{begentry}{\addcat}
最后,我们修补相关的numeric-comp
宏,以便在需要时也包含星号(您将需要xpatch
包中)。我们需要修改哪些宏在很大程度上取决于样式,phys
是基于的numeric-comp
。经验法则是每个都\printfield{labelnumber}
需要一个额外的\addcat
。
\xpatchbibmacro{cite:comp:comp}
{\printfield{labelnumber}}{\printfield{labelnumber}\addcat}
{}{\typeout{failed to patch cite:comp:comp macro}}
\xpatchbibmacro{cite:comp:end}
{\printfield{labelnumber}}{\printfield{labelnumber}\addcat}
{}{\typeout{failed to patch cite:comp:comp macro}}
\xpatchbibmacro{cite:comp:inset}
{\printfield{labelnumber}}{\printfield{labelnumber}\addcat}
{}{\typeout{failed to patch cite:comp:comp macro}}
\addtocategory{asterisk}{<citekey>}
标有星号的作品被移交给
\addtocategory{asterisk}{geer,knuth:ct:b}
平均能量损失
\documentclass[12pt,a4paper]{article}
\usepackage[style=numeric-comp]{biblatex}
\usepackage{xpatch}
\usepackage{hyperref}
\addbibresource{biblatex-examples.bib}
\DeclareBibliographyCategory{asterisk}
\newcommand*{\addcat}{%
\ifcategory{asterisk}%
{*}%
{}%
}
\renewbibmacro*{begentry}{\addcat}
\xpatchbibmacro{cite:comp:comp}
{\printfield{labelnumber}}{\printfield{labelnumber}\addcat}
{}{\typeout{failed to patch cite:comp:comp macro}}
\xpatchbibmacro{cite:comp:end}
{\printfield{labelnumber}}{\printfield{labelnumber}\addcat}
{}{\typeout{failed to patch cite:comp:comp macro}}
\xpatchbibmacro{cite:comp:inset}
{\printfield{labelnumber}}{\printfield{labelnumber}\addcat}
{}{\typeout{failed to patch cite:comp:comp macro}}
\addtocategory{asterisk}{geer,knuth:ct:b}
\begin{document}
This is just filler text \cite{geer}. This is just filler
text \cite{worman}. This is just filler
text \cite{geer}.
Text \cite{knuth:ct:a} an \cite{knuth:ct:b} again \cite{knuth:ct:a,geer,worman}.
\printbibliography
\end{document}
您还可以让星号仅出现在第一个引用处,如果您启用citetracker=true
并更改\addcat
为
\newcommand*{\addcat}{%
\ifboolexpr{(not test {\ifciteseen} or test {\ifbibliography})
and test {\ifcategory{asterisk}}}
{*}%
{}%
}