BibTeX:skip$ 与 'skip$

BibTeX:skip$ 与 'skip$

通过查看几个 bst 文件(BibTeX 样式),我注意到skip$内置函数有时被称为'skip$(即按名称),有时被称为skip$(即按值)。我想我理解这样的结构

"string value" 'foo :=

这意味着函数foo获取值“字符串值”,但我不明白'skip$和之间有什么区别skip$?有人能解释一下这个问题吗? 和 有何'pop$不同pop$

例如plainnat.bst来自 natbib 包中有以下代码块:

FUNCTION {output}
{ duplicate$ empty$
    'pop$
    'output.nonnull
  if$
}

FUNCTION {output.check}
{ 't :=
  duplicate$ empty$
    { pop$ "empty " t * " in " * cite$ * warning$ }
    'output.nonnull
  if$
}

第二对示例借用自 aipauth4-1.bst(revtex 包):

FUNCTION {date.block}
{
  new.block.comma
  skip$
}

FUNCTION {field.or.null}
{ duplicate$ empty$
    { pop$ "" }
    'skip$
  if$
}

答案1

我可以解释你需要做什么:原因是不同的!

你需要留意这里的括号。例如

FUNCTION {output}
{ duplicate$ empty$
    'pop$
    'output.nonnull
  if$
}

也可以写成

FUNCTION {output}
{ duplicate$ empty$
    { pop$ }
    { output.nonnull }
  if$
}

这里要注意的关键是if$语句。这要求它前面有一个整数和两个“函数”。如果你使用类似

FUNCTION {output}
{ duplicate$ empty$
    pop$
    output.nonnull
  if$
}

BibTeX 将尝试错误地执行函数,并会出现错误。因此,对于条件的两个分支,您需要

  • 括号中的分支或
  • 单个非括号语句,使用 引用其名称'

相关内容