如何防止哈佛风格(agsm)引用导致参考书目 URL 跨越两列?

如何防止哈佛风格(agsm)引用导致参考书目 URL 跨越两列?

我希望我的引用风格是哈佛风格。

我正在使用以下内容:

\documentclass[conference]{IEEEtran}
\usepackage[comma]{natbib}
\usepackage{url}
\begin{document}

foo \citep{vitz_history_2016}

\bibliographystyle{IEEEtran}
\bibliography{references}
\end{document}

文件中示例的引用.bib

@online{vitz_history_2016,
    year = {2016},
    title = {History of the Periodic Table},
    url = {https://chem.libretexts.org/Bookshelves/Ancillary_Materials/Exemplars_and_Case_Studies/Exemplars/Culture/History_of_the_Periodic_Table},
    titleaddon = {Chemistry {LibreTexts}},
    author = {Vitz, Ed and Moore, John and Shorb, Justin and Prat-Resina, Xavier and Wendorff, Tim and Hahn, Adam},
    urldate = {2019-11-25},
    date = {2016-05-26},
    langid = {english},
    file = {fname}
}

在两列布局中,这将产生: 艾格森

我通常使用\cite{author}和创建文档\bibliographystyle{IEEEtran},因此通过包含\usepackage{url}URL 可以正确显示: 乙炔基

我希望出现与第二个例子相同的参考文献,但使用与第一个例子相同的哈佛风格引用。

任何帮助将非常感激!

答案1

似乎存在几个问题。

  • 由于您正在使用IEEEtran文档类,因此使用IEEEtran参考书目样式以及包应该专门与和命令natbib结合使用;两者都将生成数字样式的引用标注。与参考书目样式实际上不可用。\cite\citep\citetIEEEtran

  • 如果您希望将natbib包与IEEEtran文档类一起使用,则可能应该使用IEEEtranN书目样式。(NinIEEEtranN代表natbib...)使用此设置,\cite\citep仍将产生数字样式的标注,但\citet现在也可以“工作”,因为它会创建作者-数字样式引用标注。尽管你尽力尝试,但你不会得到这种设置来产生作者-风格,又名“哈佛风格”和“agsm 风格”,引用标注。

    话虽如此,我会回应@moewe 的评论:大多数(所有?!)需要使用IEEEtran文档类的期刊都采用数字样式引用标注;他们可能会拒绝采用作者编号或作者年份样式引用标注的提交。

  • 万一这不是打字错误:正确的语法是\citep{<some_key>},而不是\citep(<some_key>)

在此处输入图片描述

\documentclass[conference]{IEEEtran}

\begin{filecontents}[overwrite]{mybib.bib}
@online{vitz_history_2016,
    year = {2016},
    title = {History of the Periodic Table},
    url = {https://chem.libretexts.org/Bookshelves/Ancillary_Materials/Exemplars_and_Case_Studies/Exemplars/Culture/History_of_the_Periodic_Table},
    titleaddon = {Chemistry {LibreTexts}},
    author = {Vitz, Ed and Moore, John and Shorb, Justin and Prat-Resina, Xavier and Wendorff, Tim and Hahn, Adam},
    urldate = {2019-11-25},
    date = {2016-05-26},
    langid = {english},
    file = {fname}
}
\end{filecontents}

\usepackage[numbers,comma]{natbib}
\bibliographystyle{IEEEtranN} % not 'IEEEtran'
\usepackage{xurl}
\usepackage[colorlinks,allcolors=blue]{hyperref} % just for this example

\begin{document}
foo \citep{vitz_history_2016} % not "\citep(author)"

bar \citet{vitz_history_2016}
\bibliography{mybib}
\end{document}

附录\bibliographystyle{IEEEtranN}:如果我用替换,我实际上可以重现第一个屏幕截图中显示的糟糕的非换行 URL 字符串,其中下标代替了下划线\bibliographystyle{agsm}。这种agsm风格相当古老,并使用了一个名为 的宏\harvardurl,它确实不是采取与排版 URL 字符串时相同的预防措施\url;这些预防措施适用于可能出现在 URL 字符串中的 TeX 特殊字符,例如_%。(非常感谢 @moewe 向我指出这一点!)

如果你必须使用agsm书目格式,那么有两种方法可以进行:首先,你可以提供说明

\renewcommand\harvardurl{\textbf{URL:} \url}

之后\bibliographystyle{agsm}。其次,你可以改变

url = {https://chem.libretexts.org/Bookshelves/Ancillary_Materials/Exemplars_and_Case_Studies/Exemplars/Culture/History_of_the_Periodic_Table},

url = {\url{https://chem.libretexts.org/Bookshelves/Ancillary_Materials/Exemplars_and_Case_Studies/Exemplars/Culture/History_of_the_Periodic_Table}}, 

当然,这两种方法都假设您已经加载了一个合适的包——url并且xurl想到了——它定义了一个“真正的”\url宏。

顺便说一句,如果你想使用agsm书目风格,你应该加载har2nat包,而不是natbib直接加载包。为什么?agsm书目风格是哈佛引文管理包,附带一些专门的命令。该har2nat包 (a) 加载natbib包,(b) 将 - 特定的宏“翻译”harvardnatbib包识别的宏。如果您希望hyperref在文档中使用该包,这将特别有用:hyperref与包完全兼容natbib,但与包的兼容性较差harvard

在此处输入图片描述

\documentclass[conference]{IEEEtran}

\begin{filecontents}[overwrite]{mybib.bib}
@online{vitz_history_2016,
    year = {2016},
    title = {History of the Periodic Table},
    url = {\url{https://chem.libretexts.org/Bookshelves/Ancillary_Materials/Exemplars_and_Case_Studies/Exemplars/Culture/History_of_the_Periodic_Table}},
    titleaddon = {Chemistry {LibreTexts}},
    author = {Vitz, Ed and Moore, John and Shorb, Justin and Prat-Resina, Xavier and Wendorff, Tim and Hahn, Adam},
    urldate = {2019-11-25},
    date = {2016-05-26},
    langid = {english},
    file = {fname}
}
\end{filecontents}

\usepackage{har2nat} % not 'natbib' directly
\bibliographystyle{agsm}
\usepackage{xurl}
\usepackage[colorlinks,allcolors=blue]{hyperref} 

\begin{document}
foo \citep{vitz_history_2016} % not "\citep(author)"

bar \citet{vitz_history_2016}
\bibliography{mybib}
\end{document}

相关内容