Avoiding [SS...] in German bibliographies
The easiest way is not using an “alpha” bib style. They used to be handy in the olden times when you didn't know the order of bibliographic items in typewritten manuscripts.
But there's a way. I added also two fake entries in order to show the collation order is correct.
\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}
The filecontents*
environment is just to make the example self-contained. I doubt that loading natbib
along with babelbib
makes sense.
With a bit of work babalpha-fl.bst
can be taught to detect historically problematic abbreviations in labels and try to work around it.
I'm working under the assumption that only certain two letter abbreviations are problematic (the example has "SS" and "SA" hard-coded, but you can add "HH", "HJ", "NSDAP", you name it, I have not added anything to ban entries from 1988 and 2018, though) and that using two letters of each author name instead can mitigate the problem.
As mentioned above, you will have to modify the .bst
file. To do that proceed as follows
- Locate
babalpha-fl.bst
on your machine for example by typingkpsewhich babalpha-fl.bst
. - Copy the file to a place where LaTeX can find it (https://texfaq.org/FAQ-inst-wlcf), the directory of your document will do just fine, and rename it to
babalpha-fl-gs.bst
, say. Note that the license ofbabalpha-fl.bst
requires you to change the name of the file if you modify it. - Open
babalpha-fl-gs.bst
and insert a header with the new file name and the current date Find
FUNCTION {format.lab.names}
and insert% 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$ }
before it.
Replace
FUNCTION {format.lab.names}
with% 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$ }
Use
\bibliographystyle{babalpha-fl-gs}
instead of\bibliographystyle{babalpha-fl}
in your document
Alternatively you can get babalpha-fl-gs.bst
from 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}