Изменение bst-файла - изменение разделителя

Изменение bst-файла - изменение разделителя

В настоящее время я изменяю файл bst. Проблема, с которой я сейчас столкнулся, заключается в том, как изменить разделитель стиля.

На данный момент я получаю следующий вывод:

Бади, Дина (2010) «Групповое мышление, Ирак и война с террором: объяснение изменений в политике США в отношении Ирака» Анализ внешней политики 6(4):277–296.

Однако мне нужен следующий вывод:

Бади, Дина (2010) «Групповое мышление, Ирак и война с террором: объяснение изменений в политике США в отношении Ирака», Foreign Policy Analysis 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
}

Результат выглядит так:

Берк, Джон П. (2005a) «Кондолиза Райс в качестве советника Совета национальной безопасности: случай роли честного посредника», Президентские исследования, ежеквартальный вестник, 35(3): 554–575.

Однако я хочу, чтобы запятая находилась за пределами кавычек, как показано ниже:

Берк, Джон П. (2005a) «Кондолиза Райс в качестве советника Совета национальной безопасности: случай честной роли посредника», Президентские исследования Quarterly 35(3): 554–575.

Как я могу решить эту проблему? Может быть, изменив функцию кавычек?

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

Связанный контент