格式化包含同一作者的多个参考文献

格式化包含同一作者的多个参考文献

我正在使用 natbib 自定义参考书目样式,因此如果可以的话,我宁愿不改变 natbib。我有一个作者和两个引文,我只希望参考文献部分在一个作者下正确列出两个引文。我不知道该怎么做,因为目前输出将每个引文视为属于不同的作者(作为不同的条目)。我没有提供 MWE,因为在这种情况下它似乎没有必要,但如果需要的话我可以提供。

\documentclass{article}
\usepackage{natbib}
\bibliographystyle{plainnat} 
\begin{document}
Here is text \citep[p.1]{authorA}.  And then more from same author \citep[p.1]{authorB}
\clearpage
\bibliography{bib}{}
\end{document}

bib 文件如下:

@book{authorA,
author={Smith, John},
title={Book},
}
@book{authorB,
author={Smith, John},
title={Other Book},
}

我希望文章末尾的“参考文献”部分看起来像这样:

Smith, John. Book
------Other Book

而不是像这样:

Smith, John. Book

Smith, John. Other Book

答案1

请注意,参考文献部分中的书目条目的格式实际上不受natbib;的控制natbib,它主要是一个引文管理系统,可以处理各种数字和作者年份引文样式。书目条目的格式(包括用长破折号替换重复的作者(或作者))由您指定的书目样式决定。

您在问题的第一段中提到您使用自定义书目样式。但是,在 MWE 中,您声明您使用书目样式plainnat。以下代码假设您正在使用plainnat并显示如何修改文件plainnat.bst以实现您的排版目标。希望您实际使用的书目样式与没有太大区别plainnat

  1. 首先创建 的副本plainnat.bst;将副本另存为myplainnat.bst。(切勿编辑原始文件。)

  2. myplainnat.bst使用您最喜欢的文本编辑器打开该文件。

  3. 找到函数article。(该函数在我的副本中从 lin 699 开始plainnat。)之前在此函数中插入以下几行代码:

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

    你没有指定多久替换作者姓名(或多个作者姓名)的破折号应该是。在上面的代码中,我使用了三个连续的破折号。您可以随意更改此设置以满足您的排版需求和偏好。

  4. 接下来,在 中找到以下代码行的十个 [10!] 个实例myplainnat.bst

      author format.key output
    

    并插入指令

      name.or.dash
    

    独自在一条线上紧接着每条author format.key output线。

  5. book在函数和中找到以下五行代码的两个实例inbook

    { format.editors "author and editor" output.check
       editor format.key output
    }
    { format.authors output.nonnull
      crossref missing$
    

    并将其替换为

    { format.editors "author and editor" output.check
      editor format.key output
      name.or.dash
     }
    { format.authors output.nonnull
      name.or.dash
      crossref missing$
    

    name.or.dash即,按照两个实例中分别指示的方式插入指令。

  6. 在函数中proceedings,找到以下行

    editor format.key output
    

    并插入行

    name.or.dash
    

    紧接着那条线。

    如果您完成了所有这些编辑,则文件中应该有十六 [16] 个字符串“name.or.dash”的实例.bst

  7. 将文件保存myplainnat.bst在包含主文件的目录中.tex,或者保存在 TeX 发行版的搜索路径中的目录中。

  8. \bibliographystyle{myplainnat}从现在起请务必使用该说明。

TeXing 快乐!

答案2

尝试在最后一位(或任何一位)作者的第二个名字后添加 $~$。对我来说,这确实有效。我使用了 IEEE 格式。

相关内容