使用 BibTeX 在新行中写入 url 引用

使用 BibTeX 在新行中写入 url 引用

我如何使用unsrt样式将所有 URL 引用写在新行中。但我不想\par*.bib文件中使用(如test1bibdata)。

梅威瑟:

\begin{filecontents}{myRef.bib}
@misc{test,
title = {This is a test},
author = {Mirzakhani, Bahman},
howpublished = {\url{https://tex.stackexchange.com/}},
}
@misc{test1,
title = {This is a test},
author = {Mirzakhani, Bahman},
howpublished = {\par\url{https://tex.stackexchange.com/}},
}
\end{filecontents}

\documentclass[12pt]{article}
\usepackage{hyperref}
\begin{document}

\cite{test}
\cite{test1}

\bibliographystyle{unsrt}
\bibliography{myRef}

\end{document}

输出:

在此处输入图片描述

答案1

在我看来,问题的核心在于你使用了一种古老的书目风格 -- unsrt-- 这种风格早于万维网的诞生,因此不知道如何处理名为 的字段url。你似乎选择使用 --滥用在我看来,这是用于显示合适 URL 信息howpublished的用于类型条目的字段@misc。想必您已经想出了用于类型条目的进一步解决方法@article@book等等。

正是因为该howpublished字段可能包含除 URL 字符串之外的信息,所以不建议编辑unsrt.bst样式文件以强制在字段开始时自动换行howpublished

真正的解决方案在于切换到更现代的 bib 样式 - 比如unsrtnat- 该样式已被编程为知道如何处理url字段的内容,并编辑 bib 条目,以便 URL 相关的信息包含在字段中url(而不是其他地方)。

修改unsrtnat样式以指示它在字段开头插入换行符很简单url。我建议您按以下步骤操作:

  • 在您的 TeX 发行版中找到该文件unsrtnat.bst。复制该文件并将副本命名为 。unsrtnat-urlbreak.bst(不要直接编辑 TeX 发行版的原始文件。

  • 在文本编辑器中打开该文件unsrtnat-urlbreak.bst(你用来编辑 .tex 文件的程序就可以了),然后找到函数format.url。(在我的文件副本中,该函数从第 285 行开始,占据了全部 6 行。

  • 在该函数中,找到以下行:

        { new.block "URL \url{" url * "}" * }
    

    将其更改为

        { new.block "\par \url{" url * "}" * }
    

    即替换URL\par

  • 将文件保存在包含主 tex 文件的目录中。

  • 在主 tex 文件中,更改

    \bibliographystyle{unsrt}
    

    \bibliographystyle{unsrtnat-urlbreak}
    
  • 运行完整的重新编译循环 - LaTeX、BibTeX、LaTeX 和再次 LaTeX - 以完全传播所有更改。

MWE 及其输出:

在此处输入图片描述

还要注意,如果year字段非空,那么howpublished字段中包含的信息将会year如果使用了unsrtnat和bib 样式,则不要在字段之后unsrt。这是不使用该howpublished字段存储 URL 字符串的另一个原因;当然,如果字段信息与格式化的书目条目的其余部分分离,那么在 URL 字符串之前生成换行符是不好的year

\documentclass{article}

\begin{filecontents}[overwrite]{myRef.bib}
@misc{test1,
title   = {This is a test},
author  = {Mirzakhani, Bahman},
year    = 3001,
howpublished = {\url{https://tex.stackexchange.com/}},
}
@misc{test2,
title   = {This is another test},
author  = {Mirzakhani, Bahman},
year    = 3002,
url     = {https://tex.stackexchange.com/},
}
\end{filecontents}

\usepackage[numbers]{natbib}
\bibliographystyle{unsrtnat-urlbreak}
\usepackage{xurl} % for '\url' macro
\usepackage[colorlinks,allcolors=blue]{hyperref}

\begin{document}
\noindent
\cite{test1}, \cite{test2}

\raggedright
\bibliography{myRef}
\end{document}

相关内容