无作者的书目排序

无作者的书目排序

这是我的一个消息来源

@misc{Madlena11, 
Author={Chavala Madlena},
Publisher={Guardian},   
Title = {Telecomix: tech support for the Arab spring}, 
url = {http://www.guardian.co.uk/technology/2011/jul/07/telecomix-arab-spring}
}

但是,有时我有一个没有Author这样的来源:

@misc{RT12, 
%Author={},
Publisher={RT TV Network},   
Title = {Anti-ACTA day: Angry crowds take action}, 
url = {http://rt.com/news/acta-protests-rallies-europe-089/}
}

我的问题是,当Author没有列出时,它不会按发布者排序Publisher,甚至不会在参考资料中显示发布者,也不会显示 URL。我该如何解决这个问题?

答案1

使用key字段:

@misc{RT12, 
key={some string reflecting how you wish the entry alphabetized},
Publisher={RT TV Network},   
Title = {Anti-ACTA day: Angry crowds take action}, 
url = {http://rt.com/news/acta-protests-rallies-europe-089/}
}

假设您希望将条目排序为“RT TV Network”,则使用

key={RT TV Network}

仅当参考书目样式知道该字段时才使用该url字段。例如,

\usepackage[numeric]{natbib}
\bibliographystyle{plainnat}

然后显示 URL。并将key使用 的内容代替作者。

例子

\begin{filecontents*}{\jobname.bib}
@misc{Madlena11, 
Author={Chavala Madlena},
Publisher={Guardian},   
Title = {Telecomix: tech support for the {Arab} spring}, 
url = {http://www.guardian.co.uk/technology/2011/jul/07/telecomix-arab-spring}
}

@misc{RT12, 
key={aaaa},
Publisher={RT TV Network},   
Title = {{Anti}-{ACTA} day: {Angry} crowds take action}, 
url = {http://rt.com/news/acta-protests-rallies-europe-089/}
}

\end{filecontents*}

\documentclass{article}

\usepackage[numbers]{natbib}
\usepackage{url}

\begin{document}
\cite{Madlena11}, \cite{RT12}

\bibliographystyle{plainnat}
\bibliography{\jobname}
\end{document}

只是filecontents*为了将.bib文件放在源内。还请注意括号以强制大写。

在此处输入图片描述

答案2

另一个选择(特别是如果你不喜欢key在条目开头显示该字段(或者根本不喜欢)或者必须自定义每个书目条目以使用key而不是publisher)是自定义 BST 文件。由于你提供的代码已经natbib使用plainnat,你可以在你的 TeX 存储库中找到plainnat.bst并将具有不同名称(如plainnat-copy.bst)的本地副本放入你的工作目录中。修改 的本地副本有四个步骤plainnat-copy.bst:首先,更新misc函数以考虑你使用publisher而不是howpublished。其次,更新函数以在没有作者时presort按 排序。第三,编写如何按 排序的规则。第四,让你的 TeX 文件使用你新定制的 BST 文件。publisherpublisher

注意:我使用的是 2007 版本plainnat.bst,这是截至 2022 年发布时的最新版本。

  1. 在 的本地副本中plainnat-copy.bst,搜索该misc函数并将 的所有实例替换howpublishedpublisher。我在此处展示新版本:
FUNCTION {misc}
{ output.bibitem
  format.authors output
  author format.key output
  title publisher new.block.checkb
  format.title output
  publisher new.block.checka
  publisher output
  format.date output
  format.issn output
  format.url output
  new.block
  note output
  fin.entry
  empty.misc.check
}
  1. 搜索presort函数(以 开头FUNCTION {presort})。在这里工作时,请注意 BST 文件中的语言实现了后缀表示法。我们将只关注函数中间的这一部分:
        { type$ "manual" =
            'author.organization.sort
            'author.sort
          if$
        }

也许你会意识到,这是一组嵌套的如果语句将不同的排序规则应用于不同的书目条目类型,并且尚未有该misc类型的分支。默认情况下,当算法到达最内层时如果,测试type$ "manual" =返回 false(因为您的输入是misc而不是manual),因此算法会跳过下一个(第一个)选项并将author.sort规则应用于所有misc条目。我们将修改第二个选项,以在这些嵌套的如果语句来建立特定于条目的分支misc

        { type$ "manual" =
            'author.organization.sort
            { type$ "misc" =
              author empty$
              and
                'publisher.sort
                'author.sort
                if$
            }
          if$
        }

对于锚定,请注意,原始版本和此修改版本中的前两行和后两行是相同的;我只用类型的新代码替换了中间一行misc。新逻辑如下:如果条目不是类型manual,则算法继续执行第二行,这是嵌套的下一个更深层如果语句。然后,它测试类型是否是misc且没有作者;如果这两个条件都是真,那么它将应用规则publisher.sort(我们将在下面的步骤 3 中编写);否则它将应用规则author.sort,以便所有其他条目不受此更改的影响。

  1. 对于publisher.sort函数,将以下代码粘贴到您刚刚修改的函数的plainnat-copy.bst上方,presort以便该publisher.sort函数位于editor.organization.sortpresort函数之间:
FUNCTION {publisher.sort}
{ publisher empty$
    { key empty$
        { "to sort, need author, publisher, or key in " cite$ * warning$
          ""
        }
        { key sortify }
      if$
    }
    { "The " #4 publisher chop.word sortify }
  if$
}
  1. 在您的 TeX 文件中,您需要更改此行以说明您新定制的文件: \bibliographystyle{plainnat-copy}。这是 MWE:
\begin{filecontents*}{\jobname.bib}
@misc{Madlena11, 
Author={Chavala Madlena},
Publisher={Guardian},   
Title = {Telecomix: tech support for the {Arab} spring}, 
url = {http://www.guardian.co.uk/technology/2011/jul/07/telecomix-arab-spring}
}

@misc{RT12, 
Publisher={RT TV Network},   
Title = {{Anti}-{ACTA} day: {Angry} crowds take action}, 
url = {http://rt.com/news/acta-protests-rallies-europe-089/}
}

\end{filecontents*}

\documentclass{article}

\usepackage[numbers]{natbib}
\usepackage{url}

\begin{document}
\cite{Madlena11}, \cite{RT12}

\bibliographystyle{plainnat-copy}
\bibliography{\jobname}
\end{document}

输出如下: 排版 MWE 的屏幕截图

相关内容