我如何使用unsrt
样式将所有 URL 引用写在新行中。但我不想\par
在*.bib
文件中使用(如test1
bibdata)。
梅威瑟:
\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}