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.

enter image description here


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

  1. Locate babalpha-fl.bst on your machine for example by typing kpsewhich babalpha-fl.bst.
  2. 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 of babalpha-fl.bst requires you to change the name of the file if you modify it.
  3. Open babalpha-fl-gs.bst and insert a header with the new file name and the current date
  4. 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.

  5. 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$
    }
    
  6. 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}

enter image description here

Tags:

Bibtex