我在文档类中使用 LaTeX article
。我使用的 Bibtex 书目样式是agsm
,属于哈佛书目样式系列。
我有两个问题:
(1)如果我引用类型的条目@book
,那么在参考文献列表中我会得到出版社,地址。我想重新安排这个订单地址: 出版社。我应该修改哪一部分agsm.bst
?
(2)我想将 类型的条目标题前的单引号 ' ' 改为双引号 " " 。我应该重点关注@article
的哪一部分?agsm.bst
答案1
我建议您按如下方式进行。
在您的 TeX 发行版中找到该文件
agsm.bst
。复制此文件并将副本命名为 。agsm-mod.bst
(不要直接编辑 TeX 发行版的原始文件。)在文本编辑器中打开文件
agsm-mod.bst
。你用来编辑 .tex 文件的编辑器就可以了。让我们先解决比较简单的任务:将引用样式从单引号更改为双引号。在 中
agsm-mod.bst
,找到名为 的函数quote
。(在我的此文件副本中,该quote
函数从第 155 行开始。)在此函数中,找到以下行:{ "`" swap$ * "'" * }
将其更改为
{ "``" swap$ * "''" * }
此更改不仅会影响 类型的条目标题的
@article
排版方式;还会影响@misc
和类型的条目标题@booklet
。我假设您同意这一点。事实上,更艰巨的任务是改变出版社,地址到地址: 出版社对于类型的条目
@book
。事实证明,为了完成这项任务,需要提供几个新的 BibTeX 函数。这是因为库存agsm
样式被编程为在字段之间使用逗号到处address
;在两个特定字段(此处:和)之间使用冒号publisher
并不是此 bib 样式能轻易做到的事情。首先在函数
multi.page.check
和之间插入以下代码块format.pages
。FUNCTION {bibinfo.warn} { swap$ duplicate$ missing$ { swap$ "missing " swap$ * " in " * cite$ * warning$ pop$ "" } { duplicate$ empty$ { swap$ "empty " swap$ * " in " * cite$ * warning$ } { swap$ pop$ } if$ } if$ } FUNCTION {bibinfo.check} { swap$ duplicate$ missing$ { pop$ pop$ "" } { duplicate$ empty$ { swap$ pop$ } { swap$ pop$ } if$ } if$ } FUNCTION {format.org.or.pub} { 't := "" address empty$ t empty$ and 'skip$ { address "address" bibinfo.check * t empty$ 'skip$ { address empty$ 'skip$ { ": " * } if$ t * } if$ } if$ } FUNCTION {format.publisher.address} { publisher "publisher" bibinfo.warn format.org.or.pub }
接下来,
book
在文件中找到该函数agsm-mod.bst
。在此函数中,找到以下两行publisher "publisher" output.check address output
用(我想你已经猜到了……)替换这两行
format.publisher.address output
inbook
并且,在执行此操作的同时,您还应该替换函数和中的相同行。(只需在 bst 文件中incollection
搜索剩下的两个实例即可。)publisher "publisher" output.check
将 bst 文件保存在主 tex 文件所在的目录中,或保存在 BibTeX 搜索的目录中。如果选择第二个选项,请确保也适当更新 TeX 发行版的文件名数据库。
最后,在主 tex 文件中,更改指令
\bibliographystyle{agsm}
到
\bibliographystyle{agsm-mod}
并执行完整的重新编译循环:LaTeX、BibTeX,然后再执行两次 LaTeX。
为了确保万无一失,这里有一个 MWE(最小工作示例),用来演示使用参考书目样式的结果agsm-mod
。
\RequirePackage{filecontents}
\begin{filecontents}{mybib.bib}
@article{a,
author = "Anne Author",
title = "Thoughts",
year = 3001,
journal = "Circularity Today",
volume = 1,
number = 2,
pages = "3-4",
}
@book{b,
author = "Brenda Buthor",
title = "Further Thoughts",
year = 4001,
publisher= "Publisher",
address = "Some Place, XY",
}
\end{filecontents}
\documentclass{article}
\usepackage{harvard}
\bibliographystyle{agsm-mod}%
\begin{document}
\cite{a}, \cite{b}
\bibliography{mybib}
\end{document}