我正在尝试以相反的时间顺序显示我的出版物列表。我可以使用\bibliographystyle{unsrt}
一种解决方法,只需手动对条目进行排序,但我自然更希望 BibTeX 能帮我做到这一点。
我可以采用哪些工具或方法按时间倒序对参考书目进行排序?
答案1
你可以试试https://github.com/plessl/latex-goodies/tree/master/bibstyles/plainyr-rev
我自己还没有测试过。祝你好运。
答案2
这是一个使用的解决方案biblatex
:
\documentclass{article}
\usepackage[sorting=ydnt]{biblatex}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@misc{a01,
author = {Author, A.},
year = {2001},
title = {Alpha},
}
@misc{b03,
author = {Buthor, B.},
year = {2003},
title = {Bravo},
}
@misc{c02,
author = {Cuthor, C.},
year = {2002},
title = {Charlie},
}
\end{filecontents}
\addbibresource{\jobname.bib}
\nocite{*}
\begin{document}
\printbibliography
\end{document}
有关详细信息,请参阅文档的第 3.1.2.1 和 3.5 节biblatex
。
答案3
书目风格平原如果你不想(或不能)使用 biblatex,这是一个很好的起点。这种风格类似于清楚的,但按年份对参考文献进行排序。要按时间顺序倒序排列,请复制plainyr.bst
到另一个文件(例如plainrevyr.bst
)。编辑新文件,并按照上一个答案中的说明,ITERATE
用替换每个出现的 。REVERSE
plainyr.bst
是最好的起点,因为它是唯一使用日期作为主要排序字段的默认样式,如http://www.ee.ic.ac.uk/hp/staff/dmb/perl/b4w_using.html#Sort
ITERATE
如果您尝试以任何其他格式替换,REVERSE
您将更改排序顺序,但不会更改主要排序字段。例如,以 ieeetr 开头会生成参考书目大多按时间倒序排列...并且大多数都不足以满足您的简历要求!
答案4
我使用宏文件完成了此操作makebst.tex
,它会带您浏览问答选项列表,其中之一是排序顺序。
然后,我将宏生成的新 .bst 中的相关代码块复制到我实际想要使用的样式文件中。复制的代码如下:
FUNCTION {negate.year}
{ year empty$
{ "99999" }
{ year #1 #1 substring$ chr.to.int$ #105 swap$ - int.to.chr$
year #2 #1 substring$ chr.to.int$ #105 swap$ - int.to.chr$ *
year #3 #1 substring$ chr.to.int$ #105 swap$ - int.to.chr$ *
year #4 #1 substring$ chr.to.int$ #105 swap$ - int.to.chr$ *
}
if$
}
我现在添加了基于月份的排序(这有点丑陋,因为月份的三个字母的缩写需要解析为#):
FUNCTION {sort.format.month}
{ 't :=
t #1 #3 substring$ "l" change.case$ "jan" =
{ "01" }
{ t #1 #3 substring$ "l" change.case$ "feb" =
{ "02" }
{ t #1 #3 substring$ "l" change.case$ "mar" =
{ "03" }
{ t #1 #3 substring$ "l" change.case$ "apr" =
{ "04" }
{ t #1 #3 substring$ "l" change.case$ "may" =
{ "05" }
{ t #1 #3 substring$ "l" change.case$ "jun" =
{ "06" }
{ t #1 #3 substring$ "l" change.case$ "jul" =
{ "07" }
{ t #1 #3 substring$ "l" change.case$ "aug" =
{ "08" }
{ t #1 #3 substring$ "l" change.case$ "sep" =
{ "09" }
{ t #1 #3 substring$ "l" change.case$ "oct" =
{ "10" }
{ t #1 #3 substring$ "l" change.case$ "nov" =
{ "11" }
{ t #1 #3 substring$ "l" change.case$ "dec" =
{ "12" }
{ "00" } % No match
if$
}
if$
}
if$
}
if$
}
if$
}
if$
}
if$
}
if$
}
if$
}
if$
}
if$
}
if$
}
FUNCTION {negate.month}
{ month empty$
{ "999" }
{
month sort.format.month #1 #1 substring$ chr.to.int$ #105 swap$ - int.to.chr$
month sort.format.month #2 #1 substring$ chr.to.int$ #105 swap$ - int.to.chr$ *
}
if$
}
并bib.sort.order
替换为:
FUNCTION {bib.sort.order}
{ sort.label
" "
*
negate.month field.or.null sortify
swap$
*
negate.year field.or.null sortify
swap$
*
" "
*
title field.or.null
sort.format.title
*
#1 entry.max$ substring$
'sort.key$ :=
}
编辑:现在按年份和月份排序。我现在也真正理解了所有代码的作用,这是一个进步。