我想知道是否有可能让引用数倒计时
[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
在参考书目中隐藏的其他条目。要从条目总数中省略这些条目,您应该根据设置进行条件设置。skipbib
dataonly
skipbib
\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
前缀的替代方法,请参阅这个帖子。