Multibib 反向标签或排序顺序

Multibib 反向标签或排序顺序

我在用着multibib。我手动设置了参考书目的顺序。我希望编号项目的顺序被反转。例如,我的文档有:

\nociteX{Foo}
\nociteX{Bar}

然后文件显示:

[1] Foo
[2] Bar

我希望文件能够显示:

[2] Foo
[1] Bar

有人能解释一下我的文件中需要更改什么吗,或者我缺少一个可以实现这一点的.bst标志吗?multibib

答案1

biblatex软件包提供的功能与 相当。可以使用 的各种选项细分multibib单个文件中的引用。示例包括、和。有关详细信息,请参阅手册。 的前缀使用选项指定。bib\printbibliographytypekeywordcategorybiblatexlabelnumberprefixnumbers

假设每个子书目都有一个唯一的前缀,可以通过改变labelnumber字段格式来获得降序的标签号,以便它打印由前缀特定条目总数减去实际值labelnumber再加一给出的值。

\documentclass{article}
\usepackage[style=numeric-comp,sorting=ydnt,defernumbers]{biblatex}

\AtDataInput{%
  \csnumgdef{entrycount:\strfield{prefixnumber}}{%
    \csuse{entrycount:\strfield{prefixnumber}}+1}}

\DeclareFieldFormat{labelnumber}{\mkbibdesc{#1}}    
\newrobustcmd*{\mkbibdesc}[1]{%
  \number\numexpr\csuse{entrycount:\strfield{prefixnumber}}+1-#1\relax}

\addbibresource{biblatex-examples.bib}

\begin{document}
Filler text \cite{aksin,bertram,angenendt}.
Filler text \cite{chiu,padhye,moraux}.
\printbibheading
\printbibliography[prefixnumbers={A},type=article,title={Articles},heading=subbibliography]
\printbibliography[prefixnumbers={R},type=report,title={Reports},heading=subbibliography]
\printbibliography[prefixnumbers={P},type=inproceedings,title={Presentations},
                   heading=subbibliography]
\end{document}

在此处输入图片描述

此解决方案适用于任一后端,但biber日志中的“重新运行 LaTeX”消息可能不稳定。无论如何,请注意警告;重新编译后第一次消息消失时应该会给出正确的文档。

答案2

我有一个可能的答案(可能是因为我的安装在我测试所有功能之前就崩溃了)。正如所提到的,它依赖于biblatex作为biber后端。

在序言中,您提到您想要使用 biber 作为后端(用于调整排序),您想要使用您设计的新排序方案,并且您将使用参考书目中的前缀。

\usepackage[defernumbers=true,sorting=reverse,backend=biber]{biblatex}

\addbibresource{Yourbibresource}

\DeclareSortingScheme{reverse}{
\sort[direction=descending]{\citeorder}
}

在文档的末尾,您可以借助关键字打印不同的参考书目来区分它们。

\printbibliography[keyword=original,prefixnumbers=F,title=Original sources]

\printbibliography[keyword=known,prefixnumbers=B,title=Other sources]

我成功实现了 [F1]、[F2] 以及 [B1] 和 [B2] 行为,但由于崩溃而无法测试 biber 调整。不过,根据之前的实验,我确信这是可行的方法。

我知道这个答案并不完整,因为它没有经过全面测试,但我想将它推出,以便人们可以玩它,直到我设法修复我的设置(在工作中,我遇到了巨大的网络问题,因此可能需要很长时间才能修复)。

相关内容