为什么将参考书目样式更改为“agsm”会随机将期刊卷号加粗?

为什么将参考书目样式更改为“agsm”会随机将期刊卷号加粗?

我正在使用该natbib软件包来编写参考书目,最初使用的是这种plainnat样式,但后来被告知只能使用哈佛参考文献。因此,我尝试将参考书目样式更改为我在在线参考表上找到的样式 - 例如agsm.bst,但我发现只有那些可行且按所需顺序排列参考书目参考文献的样式(“作者;年份;标题;期刊;卷;页码”)会将卷号加粗,如下所示:

JR Krebs,1980 年,最佳觅食、捕食风险和领土防御。阿尔代亚68:83-90

它看起来很奇怪,我想删除它,但我不知道如何做——我需要更改代码吗,或者是否有我应该使用的样式包?

这是我设置的代码:

\documentclass[12pt]{article}

\usepackage{fontspec}
\setmainfont{Arial}

\usepackage{natbib}
\usepackage{graphicx}

\usepackage{listings}
\lstset{frame=single,breaklines=true}
\setcounter{secnumdepth}{4}
\sloppy

\usepackage{geometry}
\geometry{margin=1in}


\title{PAPER TITLE}
\date{}

\begin{document}
TEXT HERE
\bibliographystyle{plainnat}
\bibliography{bibliography.bib}

并且参考书目条目输入如下:

@article{krebs1980optimal,
  title={Optimal foraging, predation risk and territory defence},
  author={Krebs, JR},
  journal={Ardea},
  volume={68},
  pages={83--90},
  year={1980},
  publisher={BioOne}
}

答案1

它确实发生了变化,因为这只是特定样式在 BibTeX 层中的作用。如果你查看派生的,你很容易就能看到发生了什么.bbl

\begin{thebibliography}{xx}
\harvarditem{Krebs}{1980}{krebs1980optimal}
Krebs, J.  \harvardyearleft 1980\harvardyearright , `Optimal foraging,
  predation risk and territory defence', {\em Ardea} {\bf 68},~83--90.
\end{thebibliography}

'68' 位于一个组中,在该组中\bf发出了(过时的)字体命令,该命令将组内容格式化为粗体。您可以尝试

% arara: xelatex
% arara: bibtex
% arara: xelatex
% arara: xelatex
\RequirePackage{filecontents}
\begin{filecontents*}{\jobname.bib}
  @article{krebs1980optimal,
    title={Optimal foraging, predation risk and territory defence},
    author={Krebs, JR},
    journal={Ardea},
    volume={68},
    pages={83--90},
    year={1980},
    publisher={BioOne}
  }
\end{filecontents*}

\documentclass[12pt]{article}
\usepackage{fontspec}
  \setmainfont{Arial}
\usepackage{natbib}

\let\oldthebibliography\thebibliography
\renewcommand\thebibliography{\let\bf\relax\oldthebibliography}

\begin{document}
\nocite{*}
\bibliographystyle{agsm}
\bibliography{\jobname}
\end{document}

示例_渲染

值得注意的是,这将\bf禁用所有的参考书目。

答案2

您可以非常轻松地修改该bst文件。

  1. agsm.bst在 TeX 系统中查找文件

  2. 将其复制到与文档相同的文件夹中.tex,名称为agsm-nobf.bst

  3. 使用任意文本编辑器打开新文件

  4. 在其中找到唯一包含字符串的行\bf

  5. 编辑,使其变成

    FUNCTION {embolden}
    { duplicate$ empty$
        { pop$ "" }
    %    { "{\bf " swap$ * "}" * }
        { "{" swap$ * "}" * }
      if$
    }
    

    (我保留了原来的,但注释掉了,以便将来记忆)

现在你的文件可以变成

\begin{filecontents*}{\jobname.bib}
@article{krebs1980optimal,
  title={Optimal foraging, predation risk and territory defence},
  author={Krebs, JR},
  journal={Ardea},
  volume={68},
  pages={83--90},
  year={1980},
  publisher={BioOne}
}
\end{filecontents*}

\documentclass[12pt]{article}

\usepackage{fontspec}
\setmainfont{Arial}

\usepackage{natbib}
\usepackage{graphicx}

\usepackage{listings}
\lstset{frame=single,breaklines=true}
\setcounter{secnumdepth}{4}

\usepackage{geometry}
\geometry{margin=1in}


\title{PAPER TITLE}
\date{}

\begin{document}
TEXT HERE \nocite{*}

\bibliographystyle{agsm-nobf}
\bibliography{\jobname}

\end{document}

需要注意的几点。我删除了\sloppy,你也应该这样做。filecontents*这里的环境只是为了方便,为了让示例自成一体;你将使用你的bibliography.bib文件,但调用应该是

\bibliography{bibliography}

没有 .bib

编译、运行 BibTeX 并再次编译。

在此处输入图片描述

答案3

你写了:

我正在使用该natbib软件包来编写参考书目,最初使用的是这种plainnat样式,但后来被告知只能使用哈佛参考文献。因此,我尝试将参考书目样式更改为我在在线参考资料表上找到的样式 - 例如agsm.bst,...

这是不是如果您需要做的只是将引文标注的样式从数字样式更改为“哈佛”样式(也称为作者年份样式),则无需更改书目样式。虽然确实是该软件包agsm提供的样式文件之一harvard,但您不必切换到agsm(或该软件包提供的其他六种书目样式之一harvard)即可生成作者年份样式的引文标注。

有很多书目样式能够生成作者年份样式的引文标注。事实上,如果您对书目样式生成的格式感到满意,您只需在加载时plainnat说明该选项即可。(默认情况下,将使用方括号;如果您更喜欢圆括号,请同时说明该选项。)用于生成“文本”引文标注和生成“括号”引文标注。authoryearnatbibround\citet\citep

当然,如果你更喜欢样式生成的格式agsm,请务必切换到agsm样式。但请注意,它不是必要的如果您需要做的只是更改引用标注的样式,则可以这样做。


在此处输入图片描述

\RequirePackage{filecontents}
\begin{filecontents}{bibliography.bib}
@article{krebs1980optimal,
  title={Optimal foraging, predation risk and territory defence},
  author ={Krebs, J. R.},
  journal={Ardea},
  volume={68},
  pages={83--90},
  year={1980},
  publisher={BioOne}
}
\end{filecontents}

\documentclass[12pt]{article}
\usepackage{fontspec}
\setmainfont{Arial}
\usepackage[authoryear,round]{natbib}
\bibliographystyle{plainnat}
\usepackage{geometry}
\geometry{margin=1in}

\begin{document}
\citet{krebs1980optimal}; \citep{krebs1980optimal}
\bibliography{bibliography}
\end{document}

相关内容