我使用“latex makebst.tex”[2003/09/08 4.1 (PWD, AO)] 生成了一个自定义 bst 文件,没有明显的错误,但 bibtex 为我的 bib 文件中的每个 @BOOK、@INBOOK 和 @INCOLLECTION 条目提供了“您无法弹出一个空的文字堆栈进行输入”错误。我在网上读到了几种针对此错误消息的补救措施,但似乎没有一种适用于这里。有什么方法可以让 dbj 和 bst 文件可供某人使用,让他们知道我在 makebst 中做错了什么,或者如何修补 bst 文件?30000 个字符的限制不允许在这里发布它们。
答案1
这看起来像是一个问题FUNCTION {format.org.or.pub}
。
以下版本适合我
FUNCTION {format.org.or.pub}
{ 't :=
""
year empty$
{ "empty year in " cite$ * warning$ }
'skip$
if$
address empty$ t empty$ and
year empty$ and
'skip$
{
t empty$
{ address "address" bibinfo.check *
}
{ t *
address empty$
'skip$
{ ", " * address "address" bibinfo.check * }
if$
}
if$
year empty$
'skip$
{ t empty$ address empty$ and
'skip$
{ ", " * }
if$
year "year" bibinfo.check
*
}
if$
}
if$
}
唯一的变化是{ ", " swap$ * * }
从
{ ", " * }
在条件<false>
的分支中t empty$ address empty$ and
。
这就是说,组合
pub-date,pub-xpar
之中
%<<PUBLISHER IN PARENTHESES:
% %: (def) Publisher as normal block without parentheses
% pub-par,%: Publisher in parentheses
% pub-date,%: Publisher and date in parentheses (Oxford, 1994)
% pub-date,pub-xc,%: Publisher and date in parentheses, no comma (Oxford 1994)
pub-date,pub-xpar,%: Publisher and date without parentheses Oxford, 1994
% pub-date,pub-xpar,pub-xc,%: Publisher and date, no parentheses, no comma Oxford 1994
%------\ans=f(==pub-date,pub-xpar)-------
%>>PUBLISHER IN PARENTHESES:
乍一看很奇怪。
如果未选择任何选项,则会得到一个看起来更合理的.bst
版本FUNCTION {format.org.or.pub}
。 和 之间唯一的区别pub-date,pub-xpar
在于年份相对于版本的位置。 如果有选项,年份位于 之前edition
,如果没有选项,edition
将会被夹在 年份 和 出版商/地址 之间。