用破折号代替重复的作者姓名

用破折号代替重复的作者姓名

我正在使用natbib与 非常相似的参考书目样式的包humannat。我想在作者相同的多个参考文献中使用长破折号代替完整的作者姓名。我将不胜感激任何建议。

答案1

书目样式文件humannat.bst至少已经存在了二十年,几乎没有变化。因此,我首先建议你不是不必费心修改文件。相反,选择一个更现代的参考书目样式文件,最好是已经了解诸如 和 之类“新奇” [!] 字段的文件urldoi文件中的标题信息humannat.bst表明它基于(现在同样过时的)参考书目样式。因此,您可能希望从和apalike开始搜索更新的参考书目样式。只是一个想法。apa.bstapa6.bst

但是,如果您坚持使用humannat参考书目样式,则可以按以下步骤指示 BibTeX 用长破折号替换重复作者(和编辑者)的实例:

  • 复制一份humannat.bst并将其命名为myhumannat.bst。请执行不是编辑/覆盖此类现有文件。

  • 在您最喜欢的文本编辑器中打开该文件myhumannat.bst并搜索名为的函数article。(它从该文件的本地副本中的第 586 行开始。)

  • 在此函数前面插入以下代码行:

    STRINGS {oldname}
    
    FUNCTION {name.or.dash}
    { 's :=
        oldname empty$
         { s 'oldname := s }
         { s oldname =
             { "---{}---{}---" }
             { s 'oldname := s }
           if$
         }
        if$
    }
    

    您在问题中没有指定“破折号”的长度。我在上面的函数中选择了“三个破折号”的长度。如果您希望破折号的长度只有一两个破折号,您可以随意以显而易见的方式修改该函数。

  • 接下来,在中应该有 11 个以下两行代码的实例humannat.bst(分别在函数article、、、、、、、和 中booklet):incollectioninproceedingsmanualmastersthesismiscphdthesisproceedingstechreportunpublished

    author format.key output    % special for
    output.year.check       % apalike
    

    在所有这些情况下,插入行

    name.or.dash
    

    之间这两行代码。

  • 需要进一步特别注意的函数是针对类型@book和条目的函数@inbook,因为它们必须处理重复的作者和重复的编辑者。要修改该book函数,请搜索以下代码行:

    FUNCTION {book}
    { output.bibitem
      author empty$
        { format.editors "author and editor" output.check
          editor format.key output
        }
        { format.authors output.nonnull
          crossref missing$
        { "author and editor" editor either.or.check }
        'skip$
          if$
        }
    

    并将整个块替换为

    FUNCTION {book}
    { output.bibitem
      author empty$
        { format.editors "author and editor" output.check
          editor format.key output
          name.or.dash
        }
        { format.authors output.nonnull
          name.or.dash
          crossref missing$
        { "author and editor" editor either.or.check }
        'skip$
          if$
        }
    

    注意两条新线调用该name.or.dash函数。

  • 对函数的前几行进行相同的搜索和替换处理。当然,如果您确定bib 文件中inbook永远不会有此类条目,则可以跳过此步骤。@inbook

  • 保存文件myhumannat.bst并以适合您的 TeX 发行版的方式更新 TeX 文件名数据库,以便当 LaTeX 遇到指令时,BibTeX 可以找到它

    \bibliographystyle{myhumannat}
    

祝 (Bib)TeXing 快乐!

相关内容