我正在使用一种显然经过大量编辑的apalike
bst 样式,出于某种原因我必须使用它。
不幸的是,这种样式会在期刊名称和卷号之间输出一个逗号,这是我需要避免的。
以下是据称相关的代码片段:
FUNCTION {article}
{ output.bibitem
format.authors "author" output.check
author format.key output % special for
output.year.check % apalike
new.block
format.title "title" output.check
new.block
crossref missing$
{ journal emphasize "journal" output.check
format.vol.num.pages output
}
{ format.article.crossref output.nonnull
format.pages output
}
if$
new.block
note output
fin.entry
}
FUNCTION {format.vol.num.pages}
{ volume field.or.null
number empty$
'skip$
{ " (" number * ")" * *
volume empty$
{ "there's a number but no volume in " cite$ *
warning$ }
'skip$
if$
}
if$
pages empty$
'skip$
{ duplicate$ empty$
% { pop$ format.pages }
{ ": " * pages n.dashify * }
% { ", " * pages n.dashify * } % changed from ":" for vol,pgs -- BJR 10/5/89
{ ": " * pages n.dashify * } % changed from ":" for vol,pgs -- BJR 10/5/89
if$
}
if$
}
我怎样才能以最少的更改删除此代码?再次总结一下,我希望
作者姓名(年份) 文章标题 期刊名称 卷(期号): 页数
代替
作者姓名(年份)文章标题。期刊名称,卷(号):页数
编辑:完整文件可以在这里找到:https://pastebin.com/RZmmiqyh
编辑 2:我特别想寻找一种解决方案,它也可以处理“正在印刷”的条目,即尚未分配卷数、编号和页码。相反,在期刊名称后应该出现一个冒号,在冒号后应该打印一条注释,例如“正在印刷”。
例子:
作者姓名(年份)文章标题。期刊名称:正在出版
Bibtex 条目示例:
@Article{Author2018,
Title = {How to make Bibtex do what I want},
Author = {Adrian A. Author},
Journal = {Journal of Bibtexing},
Year = {2018},
Note = {in press},
}
答案1
我建议您按如下方式进行:
在文本编辑器中打开修改后的副本
apalike.bst
。(您用来编辑 tex 文件的程序就可以了。)紧接着该函数
output.check
,添加以下3行代码:FUNCTION {add.blank} { " " * before.all 'output.state := }
在
article
函数中,找到以下行{ journal emphasize "journal" output.check
紧接着这一行之后(也就是紧接着这一行之前
format.vol.num.pages output
),插入一个包含以下文本的新行:add.blank
保存 bst 文件
再次运行 LaTeX、BibTeX 和 LaTeX 以重新创建格式化的参考书目
祝您 BibTeX 愉快!
附录回答 OP 的后续问题,关于如何处理“印刷中”的条目,即尚未发布且volume
、number
和pages
字段尚不可用的条目。
我认为你应该把“正在印刷”的信息放在这个year
字段里,不是字段note
。如果文章尚未发表,最好在年份字段中写上“正在出版”;不知不觉中,出版年份可能会从 2018 年滑落到 2019 年甚至 2020 年……可选:使用指令\noopsort
帮助 BibTeX 确定如何对条目进行排序。并且,\unskip
在条目的volume
字段中放置一个指令以撤消指令的输出add.blank
。
\RequirePackage{filecontents}
\begin{filecontents}{mybib.bib}
@preamble { "\providecommand\noopsort[1]{}" }
@Article{Author:InPress,
Title = {Thoughts},
Author = {Adrian A. Author},
Journal = {Journal of Bib\TeX{}ing},
Year = {\noopsort{2019}In Press},
volume = {\unskip},
}
\end{filecontents}
\documentclass{article}
\usepackage[round]{natbib}
\bibliographystyle{apalike-nocomma} % modified form of 'apalike.bst'
\begin{document}
\nocite{*}
\bibliography{mybib}
\end{document}