修改 bst 文件-更改分隔符

修改 bst 文件-更改分隔符

我目前正在修改一个bst文件,现在面临的问题是如何改变样式的分隔符。

目前,我得到以下输出:

Badie, Dina (2010)《群体思维、伊拉克和反恐战争:解释美国对伊拉克的政策转变》外交政策分析6(4):277-296。

但是,我需要以下输出:

Badie, Dina (2010)《群体思维、伊拉克和反恐战争:解释美国对伊拉克的政策转变》,外交政策分析6(4):277-296。

年份后没有逗号,但标题后有逗号(编辑卷的章节中编辑后有逗号)。

以下是bst文件的代码:

FUNCTION {output.nonnull}
{ 's :=
  output.state mid.sentence =
    { ", " * write$ }
    { output.state after.block =
        %{ add.period$ write$
        { " " * write$
          newline$
          "\newblock " write$
        }
        { output.state before.all =
            'write$
            { add.period$ " " * write$ }
          if$
        }
      if$
      mid.sentence 'output.state :=
    }
  if$
  s
}

FUNCTION {article}
{ output.bibitem
  format.authors "author" output.check
  author format.key output
  format.date "year" output.check
  date.block
  format.title quote "title" output.check
  new.block
  crossref missing$
    {
      journal
      "journal" bibinfo.check

      "journal" output.check
      add.blank
      format.vol.num.pages output
    }
    { format.article.crossref output.nonnull
      format.pages output
    }
  if$
  new.block
  format.note output
  fin.entry
}

FUNCTION {format.title}
{ title
  duplicate$ empty$ 'skip$
    { "t" change.case$ }
  if$
  "title" bibinfo.check
}

答案1

我尝试自己解决这个问题。因此我修改了 @article 函数,将其改为

format.title quote "title" output.check

format.title ", " * quote "title" output.check

这是完整的函数

FUNCTION {article}
{ output.bibitem
  format.authors "author" output.check
  author format.key output
  format.date "year" output.check
  date.block
  format.title ", " * quote "title" output.check
  new.block
  crossref missing$
    {
      journal
      "journal" bibinfo.check
      emphasize
      "journal" output.check
      add.blank
      format.vol.num.pages output
    }
    { format.article.crossref output.nonnull
      format.pages output
    }
  if$
  new.block
  format.note output
  fin.entry
}

结果如下:

Burke, John P. (2005a)。《康多莉扎·赖斯担任国家安全委员会顾问:诚实经纪人角色的案例》,《总统研究季刊》35(3): 554–575。

但是,我希望逗号位于引号之外,如下所示:

Burke, John P. (2005a)。《康多莉扎·赖斯担任国家安全委员会顾问:诚实经纪人角色的案例》,总统研究季刊 35(3): 554–575。

我该如何解决这个问题?也许可以通过更改报价功能来解决?

FUNCTION {quote}
{ duplicate$ empty$
    { pop$ "" }
    { "`" swap$ * "'" * }
  if$
}

相关内容