请考虑参考书目文件中的以下特定参考资料:
@misc{SchwaberSutherland-DerScrumGuide,
author = {Ken Schwaber and Jeff Sutherland},
title = {Der Scrum Guide™},
year=2017,
month=nov,
language={ngerman},
url={http://www.scrum.org/resources/scrum-guide}
}
或者
@inproceedings{Scott_Strachey_71,
Author = {Dana Stewart Scott and Christopher S. Strachey},
Booktitle = {Symposium on Computers and Automata},
Editor = {J. Fox},
Language = {USenglish},
Mon = aug,
Organization = {Polytechnic Institute of Brooklyn},
Pages = {19--46},
Publisher = wil,
Series = {Microwave Institute Symposia Series},
Title = {Towards a Mathematical Semantics for Computer Languages},
Volume = 21,
Year = 1971}
带有\RequirePackage{natbib}
、\usepackage{babelbib}
和\bibliographystyle{babalpha-fl}
(但没有jurabib
或cite
)的这些条目的引用缩写为 [SS17] 和 [SS71]。假设您希望避免使用诸如 SS 之类的缩写(因为它们可能会让一些读者想起党卫军)。你如何告诉 LaTeX+Bibtex 生成 [ScSu17] 和 [ScSt71](或其他内容)?
答案1
通过一点工作babalpha-fl.bst
就可以教会检测标签中历史上有问题的缩写并尝试解决它。
我假设只有某些两个字母的缩写是有问题的(示例中硬编码了“SS”和“SA”,但你可以添加“HH”、“HJ”、“NSDAP”,随便你,我没有添加任何内容来禁止 1988 年和 2018 年的条目),并且使用每个作者姓名的两个字母可以缓解该问题。
如上所述,您必须修改该.bst
文件。为此,请按以下步骤操作
babalpha-fl.bst
例如通过键入 来在您的机器上定位kpsewhich babalpha-fl.bst
。- 将文件复制到 LaTeX 可以找到它的地方(https://texfaq.org/FAQ-inst-wlcf)您的文档的目录就可以了,并且改名比如说,将它改为
babalpha-fl-gs.bst
。请注意, 的许可证babalpha-fl.bst
要求您在修改文件时更改其名称。 - 打开
babalpha-fl-gs.bst
并插入带有新文件名和当前日期的标题 查找
FUNCTION {format.lab.names}
并插入% new function, essentially a copy of format.lab.names % that produces two-letter labels from each name FUNCTION {format.lab.names.safe} { 's := s num.names$ 'numnames := numnames #1 > { numnames #4 > { #3 'namesleft := } { numnames 'namesleft := } if$ #1 'nameptr := "" { namesleft #0 > } { nameptr numnames = { s nameptr "{ff }{vv }{ll}{ jj}" format.name$ "others" = { "{\etalchar{+}}" * #1 'et.al.char.used := } { s nameptr "{v{}}{l{}}" format.name$ duplicate$ text.length$ #2 < { pop$ s nameptr "{ll}" format.name$ #2 text.prefix$ } 'skip$ if$ * } if$ } { s nameptr "{v{}}{l{}}" format.name$ duplicate$ text.length$ #2 < { pop$ s nameptr "{ll}" format.name$ #2 text.prefix$ } 'skip$ if$ * } if$ nameptr #1 + 'nameptr := namesleft #1 - 'namesleft := } while$ numnames #4 > { "{\etalchar{+}}" * #1 'et.al.char.used := } 'skip$ if$ } { s #1 "{v{}}{l{}}" format.name$ duplicate$ text.length$ #2 < { pop$ s #1 "{ll}" format.name$ #3 text.prefix$ } 'skip$ if$ } if$ }
前它。
FUNCTION {format.lab.names}
用。。。来代替% slightly modified from original to detect problematic abbreviations FUNCTION {format.lab.names} { 's := s num.names$ 'numnames := numnames #1 > { numnames #4 > { #3 'namesleft := } { numnames 'namesleft := } if$ #1 'nameptr := "" { namesleft #0 > } { nameptr numnames = { s nameptr "{ff }{vv }{ll}{ jj}" format.name$ "others" = { "{\etalchar{+}}" * #1 'et.al.char.used := } { s nameptr "{v{}}{l{}}" format.name$ * } if$ } { s nameptr "{v{}}{l{}}" format.name$ * } if$ nameptr #1 + 'nameptr := namesleft #1 - 'namesleft := } while$ numnames #4 > { "{\etalchar{+}}" * #1 'et.al.char.used := } 'skip$ if$ % this block is new duplicate$ "SS" = { pop$ s format.lab.names.safe } { duplicate$ "SA" = { pop$ s format.lab.names.safe } 'skip$ if$ } if$ } { s #1 "{v{}}{l{}}" format.name$ duplicate$ text.length$ #2 < { pop$ s #1 "{ll}" format.name$ #3 text.prefix$ } 'skip$ if$ } if$ }
在文档中使用
\bibliographystyle{babalpha-fl-gs}
而不是\bibliographystyle{babalpha-fl}
或者你可以babalpha-fl-gs.bst
从https://gist.github.com/moewew/158481168f4a2135764f96fc608a1998
\documentclass[ngerman]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{babel}
\usepackage{csquotes}
\usepackage{babelbib}
\usepackage{hyperref}
\bibliographystyle{babalpha-fl-gs}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@misc{SchwaberSutherland-DerScrumGuide,
author = {Ken Schwaber and Jeff Sutherland},
title = {Der Scrum Guide™},
year=2017,
month=nov,
language={ngerman},
url={http://www.scrum.org/resources/scrum-guide},
}
\end{filecontents}
\begin{document}
\cite{SchwaberSutherland-DerScrumGuide}
\bibliography{\jobname}
\end{document}
答案2
最简单的方法是不使用“alpha”书目样式。以前当你不知道打字稿中的书目顺序时,这种样式很方便。
但有办法。我还添加了两个假条目,以显示排序顺序是正确的。
\begin{filecontents*}{\jobname.bib}
@article{a,
author={Sa, X.},
title={Title},
journal={Journal},
year=2017,
}
@article{b,
author={St, X.},
title={Title},
journal={Journal},
year=2017,
}
@misc{SchwaberSutherland-DerScrumGuide,
author = {Ken Schwaber and Jeff Sutherland},
title = {Der Scrum Guide™},
year=2017,
month=nov,
language={ngerman},
url={http://www.scrum.org/resources/scrum-guide}
}
@misc{SchwaberSutherland-DerScrumGuide-bis,
author = {Ken {\relax Sc}hwaber and Jeff {\relax Su}therland},
title = {Der Scrum Guide™},
year=2017,
month=nov,
language={ngerman},
url={http://www.scrum.org/resources/scrum-guide}
}
\end{filecontents*}
\documentclass{article}
\usepackage[ngerman,english]{babel}
\usepackage{url}
\usepackage{babelbib}
\bibliographystyle{babalpha-fl}
\begin{document}
\cite{SchwaberSutherland-DerScrumGuide}
\cite{SchwaberSutherland-DerScrumGuide-bis}
\cite{a,b}
\bibliography{\jobname}
\end{document}
环境filecontents*
只是为了使示例自成一体。我怀疑natbib
同时加载babelbib
是否有意义。