避免在德语书目中使用

避免在德语书目中使用

请考虑参考书目文件中的以下特定参考资料:

@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}(但没有jurabibcite)的这些条目的引用缩写为 [SS17] 和 [SS71]。假设您希望避免使用诸如 SS 之类的缩写(因为它们可能会让一些读者想起党卫军)。你如何告诉 LaTeX+Bibtex 生成 [ScSu17] 和 [ScSt71](或其他内容)?

答案1

通过一点工作babalpha-fl.bst就可以教会检测标签中历史上有问题的缩写并尝试解决它。

我假设只有某些两个字母的缩写是有问题的(示例中硬编码了“SS”和“SA”,但你可以添加“HH”、“HJ”、“NSDAP”,随便你,我没有添加任何内容来禁止 1988 年和 2018 年的条目),并且使用每个作者姓名的两个字母可以缓解该问题。

如上所述,您必须修改该.bst文件。为此,请按以下步骤操作

  1. babalpha-fl.bst例如通过键入 来在您的机器上定位kpsewhich babalpha-fl.bst
  2. 将文件复制到 LaTeX 可以找到它的地方(https://texfaq.org/FAQ-inst-wlcf)您的文档的目录就可以了,并且改名比如说,将它改为babalpha-fl-gs.bst。请注意, 的许可证babalpha-fl.bst要求您在修改文件时更改其名称。
  3. 打开babalpha-fl-gs.bst并插入带有新文件名和当前日期的标题
  4. 查找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$
    }
    

    它。

  5. 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$
    }
    
  6. 在文档中使用\bibliographystyle{babalpha-fl-gs}而不是\bibliographystyle{babalpha-fl}

或者你可以babalpha-fl-gs.bsthttps://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是否有意义。

在此处输入图片描述

相关内容