使用自定义 bst 文件时出现“无法弹出空的文字堆栈进行输入”错误

使用自定义 bst 文件时出现“无法弹出空的文字堆栈进行输入”错误

我使用“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将会被夹在 年份 和 出版商/地址 之间。

相关内容