我希望通过将 @misc 条目移到末尾(学术会议出版物之后)来减少参考书目中 @misc 条目的权重。我喜欢 abbrvnat 呈现参考书目项目的方式。我还使用 natbib 来获取数字引用和压缩。
默认情况下,它按作者姓名对引用进行排序(这很好),当没有作者姓名时,它似乎使用其他内容(标题?)作为参考书目中的排序字段。
将所有 @misc 引用发送到文档末尾并保持其相对顺序的最简单方法是什么?
示例文档:
\documentclass[11pt]{article}
\usepackage[hyphens]{url}
\usepackage[numbers,sort&compress]{natbib}
\begin{document}
Articles: \cite{bogus, greenwade93}
Website: \cite{example}
\bibliographystyle{abbrvnat}
\bibliography{biblio}
\end{document}
\bibliographystyle{myabbrvnat}
\bibliography{biblio}
参考书目示例:
@misc{example,
title = {{Example.org Home Page}},
howpublished = {\url{http://example.org/}},
note = {Accessed: June 2017.}
}
@article{bogus,
aurhor = {Bogus Redwade},
title = {A Bogus Article},
year = {1993},
}
@article{greenwade93,
author = {George D. Greenwade},
title = {The {C}omprehensive {T}ex {A}rchive {N}etwork ({CTAN})},
year = {1993},
journal = {TUGBoat},
volume = {14},
number = {3},
pages = {342--351}
}
在这个例子中,我希望网站移至列表末尾。如果有多个网站,则应保持它们的相对顺序。
答案1
假设您愿意修改参考书目文件,您可以使用众所周知的\noopsort
解决方法(请参阅https://tex.stackexchange.com/search?q=noopsort) 将 misc 条目排在其余条目之后。由于排序是按作者进行的,因此您还应将 misc 条目的 title 字段更改为 author。对于此解决方案,您无需更改 -file .bst
。
例子:
@PREAMBLE{ {\providecommand{\noopsort}[1]{}} }
@misc{example,
author = {{\noopsort{zzz-example}}{Example.org Home Page}},
howpublished = {\url{http://example.org/}},
note = {Accessed: June 2017.}
}
结果:
或者,使用biblatex
也可以在不更改参考书目文件的情况下使用它,方法是根据类型打印单独的参考部分。改编自https://tex.stackexchange.com/a/6966:
\printbibliography[nottype=misc,title={References}]
\vspace{-6mm}
\printbibliography[heading=none,type=misc]
这里的小问题是,即使没有标题,第二个参考书目部分仍然会引入一些需要删除的额外空间(例如使用负数vspace
)。
答案2
我找到了一种方法,但它需要编辑 BST 文件。这感觉有点过头了。不过,bst 文件似乎确实负责排序。
我首先尝试改变我认为的条目的关键,例如改变,@misc{foo,...}
但这@misc{z-foo,...}
根本没有效果,所以我深入挖掘。
步骤 1. 编辑 bst 文件
- 将 abbrvnat.bst 复制到项目目录中(
$ cp /usr/share/texlive/texmf-dist/bibtex/bst/natbib/abbrvnat.bst ./myabbrtnat.bst
) 在文件顶部,请注意上面写着:“具有相同作者和年份的作品进一步按引用键排序,以保持自然顺序” Abbrvnat 首先按作者排序。这可能意味着它使用元组进行排序:
(author(s), year, key)
。编辑复制的文件:
- 在
ENTRY
部分中,在 之后key
,添加一个名为 的新字段,sortkey
占据其自己的行。 - 有一个 author.sort 函数。我修改了它来处理 'sortkey' 字段以覆盖 author 字段:
- 在
(某些引用类型不使用作者排序(例如按编辑者排序),因此可能需要根据您的参考书目在其他地方复制)
FUNCTION {author.sort}
{ sortkey empty$
{ author empty$
{ key empty$
{ "to sort, need author or key in " cite$ * warning$
""
}
{ key sortify }
if$
}
{ author sort.format.names }
if$
}
{ sortkey sortify }
if$
}
步骤 2. 使用修改后的 BST
在主 latex 文件中:更改为
\bibliographystyle{myabbrvnat}
对于每个需要改变顺序的书目项目,添加一个
sortkey
具有新值的字段,该字段用于确定其顺序。如果我想最后发送它,我会在条目名称前面加上“zz-”。
原文中:
...
Website: F~\cite{example-f}, E~\cite{example-e}, A~\cite{example-a}
...
和书目:
@misc{example-a,
sortkey = {axample}, % will go before others - starts with 'a'
title = {{Axample.org Home Page}},
howpublished = {\url{http://example.org/}},
}
@misc{example-e,
sortkey = {zzz-example}, % send to the back. prefix with 'zzz-'
title = {{Example.org Home Page}},
howpublished = {\url{http://example.org/}},
}
@misc{example-f,
sortkey = {zzz-fxample}, % send to the back. prefix with 'zzz-'
title = {{Fxample.org Home Page}},
howpublished = {\url{http://example.org/}},
}
生成: