有没有办法在agsm
参考书目样式中包含 doi?我知道我可以使用创建自己的文件,latex makebst
但我希望有办法修改文件agsm.bst
以在参考文献中包含 doi。有办法吗?
答案1
您可以按照下列步骤进行:
在您的 TeX 发行版中找到该文件
agsm.bst
。复制此文件并将副本命名为 。agsmdoi.bst
(不要agsm.bst
直接编辑该文件。)在文本编辑器中打开文件
agsmdoi.bst
。你用来编辑.tex
文件的编辑器就可以了。首先需要添加一个名为 的字段类型
doi
。为此,请找到ENTRY
列表(它从文件的第 20 行开始)。找到以下行chapter edition
并插入行
doi
在这两条线之间。
找到函数
write.url
。(它应该从第 162 行左右开始。)后此函数中,在文件中插入以下代码来定义一个名为的新函数
write.doi
:FUNCTION {write.doi} { doi empty$ { "" } { new.block "doi: " doi * "" * } if$ }
如果您想使用除 之外的前缀
doi:
,请将字符串更改为适合您需要的任何内容。接下来,在约 14 个函数中,找到以下四行代码(以 开头
FUNCTION {article}
,以 结尾FUNCTION {unpublished}
),用于格式化和排版这些条目类型的内容:new.block note output fin.entry write.url
假设您希望条目字段的内容在 之后但在 之前
doi
排版,则应插入以下行note
url
write.doi output
在字里行间
note output
说fin.entry
; 最多重复 13 次。我想如果你确定你的参考书目将绝不mastersthesis
包含类型为或 的条目phdthesis
,那么您可以跳过编辑相应的函数。同样,如果您知道某些条目类型绝不有一个doi
字段,则不需要编辑相应的功能。将文件保存
agsmdoi.bst
在与主 tex 文件相同的目录中,或保存在 BibTeX 搜索的目录中。如果选择后一种方法,请务必更新 TeX 发行版的文件名数据库。通过发出命令来使用修改后的参考书目样式
\bibliographystyle{agsmdoi}
。再运行 LaTeX、BibTeX 和 LaTeX 两次以传播所有更改。
这是一个独立的 MWE(最小工作示例),使用agsmdoi
书目样式。请注意,我没有加载哈佛包,而是纳特比布和哈2纳特包;这样做可以完全兼容hyperref
包(如果需要的话)。请注意,字段\url{...}
内容周围使用了包装器doi
。提供此包装器允许换行,并提供一种机制,doi
如果包也已加载,则可以使字符串可点击hyperref
。请注意,这种处理在某种程度上特定于使用harvard
包的参考书目样式。如果您使用了这样的样式,plainnat
您应该不是\url
为字段提供包装器doi
。
\documentclass{article}
\usepackage{filecontents}
\begin{filecontents*}{\jobname.bib}
@incollection{abcd:2013,
author = "Torben G. Andersen and Tim Bollerslev and Peter F. Christoffersen and Francis X. Diebold",
title = "Chapter 17 --- {Financial Risk Measurement for Financial Risk Management}",
editor = "George M. Constantinides and Milton Harris and Ren{\'e} M. Stulz",
publisher = "Elsevier",
year = "2013",
volume = "2, Part B",
pages = "1127-1220",
series = "Handbook of the Economics of Finance",
issn = "1574-0102",
doi = "\url{http://dx.doi.org/10.1016/B978-0-44-459406-8.00017-2}",
url = "http://www.sciencedirect.com/science/article/pii/B9780444594068000172",
}
\end{filecontents*}
\usepackage[margin=1.5in]{geometry}
\usepackage{natbib,har2nat,url}
\urlstyle{same}
\bibliographystyle{agsmdoi}
\begin{document}
\noindent
\citet{abcd:2013}
\bibliography{\jobname}
\end{document}