biblatex:反向编号(即倒数)

biblatex:反向编号(即倒数)

我想知道是否有可能让引用数倒计时

[3] newest item
[2] item
[1] oldest item

biblatex?我正在使用以sorting=none相反顺序输入或使用进行排序sorting=ydnt,并且我希望最新(顶部)条目的编号最高并位于列表顶部。

这是简历中的出版物部分。

如果需要,可以在我的github 仓库在文件中,有我的简历main.tex

答案1

labelnumber可以通过打印当前参考部分中的总条目数减去实际标签数再加一来实现所需的编号方案。

下面的文档演示了这种方法。它依赖于来自的命令etoolbox并允许任意数量的参考部分。

\documentclass{article}
\usepackage[backend=bibtex,style=numeric,sorting=ydnt]{biblatex}

% Count total number of entries in each refsection
\AtDataInput{%
  \csnumgdef{entrycount:\therefsection}{%
    \csuse{entrycount:\therefsection}+1}}

% Print the labelnumber as the total number of entries in the
% current refsection, minus the actual labelnumber, plus one
\DeclareFieldFormat{labelnumber}{\mkbibdesc{#1}}    
\newrobustcmd*{\mkbibdesc}[1]{%
  \number\numexpr\csuse{entrycount:\therefsection}+1-#1\relax}

\addbibresource[label=biblatex]{biblatex-examples.bib}
\addbibresource[label=base]{xampl.bib}

\begin{document}
\begin{refsection}[biblatex]
  \nocite{markey,companion,ctan,knuth:ct}
  \printbibliography[title={biblatex examples}]
\end{refsection}
\begin{refsection}[base]
  \nocite{whole-set,inbook-minimal,book-minimal}
  \printbibliography[title={Base examples}]
\end{refsection}
\end{document}

在此处输入图片描述

如果文档保存为doc.tex,则使用以下命令进行编译:

latex doc
bibtex doc1-blx
bibtex doc2-blx
latex doc

使用backend=biber,无需biber在每个参考部分上运行。您还可以访问bib文件远程来自github。

一些注意事项:

  • 简写。 被字段labelnumber覆盖shorthand。因此,使用简写时,给定参考部分中的最大值labelnumber与引用条目的总数不对应。要处理此问题,您可以通过将以下源映射添加到序言来清除该shorthand字段:biber

    \DeclareSourcemap{
      \maps[datatype=bibtex]{
        \map{\step[fieldset=shorthand,null]}
      }
    }
    
  • 仅包含数据的条目。 中的代码\AtDataInput针对文件中的每个条目执行。这包括相关条目或通过或bbl在参考书目中隐藏的其他条目。要从条目总数中省略这些条目,您应该根据设置进行条件设置。skipbibdataonlyskipbib

    \makeatletter
    \def\ifskipbib{\iftoggle{blx@skipbib}}
    \makeatother
    
    \AtDataInput{\ifskipbib{}{%
      \csnumgdef{entrycount:\therefsection}{\csuse{entrycount:\therefsection}+1}}}
    
  • 多种排序方案。如果您的文档在参考部分使用多种排序方案,则文件bbl将包含重复条目 - 每个方案一个。为了避免计算重复项,您可以跟踪列表中已计算的条目。

    \AtDataInput{%
      \xifinlistcs{\thefield{entrykey}}{entrylist:\therefsection}{}{%
        \listcsxadd{entrylist:\therefsection}{\thefield{entrykey}}%
        \csnumgdef{entrycount:\therefsection}{%
          \csuse{entrycount:\therefsection}+1}}}
    
  • 多个文件与单个bib文件。每个参考部分使用单个bib文件很方便,但不是必须的 - 只要每个部分访问的条目与参考书目中印刷的条目相对应即可。有关使用单个参考部分和labelnumber前缀的替代方法,请参阅这个帖子

相关内容