用星号突出显示选定的参考文献

用星号突出显示选定的参考文献

我使用 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}}}
    {*}%
    {}%
}

相关内容