biblatex 中 numeric-comp 样式的定制

biblatex 中 numeric-comp 样式的定制

正如解释的那样我之前的问题,我想在正文中引用某些参考文献时突出显示它们,例如,[A2] 而不是 [2]。正如我从 Alan Munn 对我上一个问题的回答中了解到的那样,我必须修改cite:print样式使用的宏phys。以下最小示例显示我并不总是能获得所需的突出显示:

\documentclass{scrartcl}
\usepackage{filecontents}
\usepackage[backend = biber,style = phys]{biblatex}

\begin{filecontents*}{references.bib}
@article{art1,
      author = {A. Nobody},title={Title A},
}
@article{art2,
      author = {B. Nobody},title={Title B},
}
@article{art3,
      author = {C. Nobody},title={Title C}
}
@article{art4,
      author = {D. Nobody},title={Title D}
}
@article{art5,
      author = {E. Nobody},title={Title E}
}
@article{art6,
      author = {F. Nobody},title={Title F}
}
@article{art7,
      author = {G. Nobody},title={Title G}
      }
\end{filecontents*}

\addbibresource{references.bib}
\DeclareBibliographyCategory{catA}
\addtocategory{catA}{art2}
\addtocategory{catA}{art4}
\addtocategory{catA}{art6}

\renewbibmacro*{cite:print:labelnumber}{%
  \printtext[bibhyperref]{%
    \printfield{labelprefix}%
    \ifcategory{catA}{A}{}%
    \printfield{labelnumber}}}
    
\makeatletter 
\renewbibmacro*{cite:print:last:labelnumber}{%
  \printtext[bibhyperref:lastkey]{%
    \ifdef\cbx@lastprefix
      {\printtext[labelprefix]{\cbx@lastprefix}}
      {}%
    \ifcategory{catA}{A}{}%
    \printtext[labelnumber]{\cbx@lastnumber}}}

\renewbibmacro*{cite:print:last:subentry:comp}{%
  \printtext[bibhyperref:lastkey]{%
    \printtext[entrysetcount]{\cbx@lastentrysetcount}}}

\renewbibmacro*{cite:print:last:labelnumber}{%
  \printtext[bibhyperref:lastkey]{%
    \ifdef\cbx@lastprefix
      {\printtext[labelprefix]{\cbx@lastprefix}}
      {}%
      \ifcategory{catA}{A}{}%
    \printtext[labelnumber]{\cbx@lastnumber}}}
\makeatother

\begin{document}
    \cite{art1},\cite{art2},\cite{art3},\cite{art4},\cite{art5},\cite{art6},\cite{art7}.
    This works fine: \cite{art1,art2,art3,art4}, \cite{art1,art2,art3}, \cite{art2,art3,art4}  \\
    
    What I get: \cite{art1,art2,art3,art4,art7}  \cite{art1,art2,art3,art6} \\
    What I want to get [1-A4, 7], [1-3, A6].
    
    \printbibliography[heading = none]
\end{document}

正如我们所见,每当压缩引文之一后面有一个附加数字时,例如 [1-4, 7],最后一个数字会以某种方式导致倒数第二个数字以相同的样式打印:在第二个例子中,我得到的是 4 而不是 A4,或者 A3 而不是 3:

在此处输入图片描述

一开始我以为我忘记重新定义一些comp宏了,但是看了文件之后numeric-comp.cbx我觉得我应该能够用上面例子中出现的宏来得到我想要的。

为什么压缩引用后的数字会将其样式继承到压缩引用的第二个数字上?

(尽管标题相似,但我的问题与如何修改 biblatex 中的 numeric-comp 样式

相关内容