IEEEtrans.bst 文件将年份改为粗体,但出版商也以粗体显示

IEEEtrans.bst 文件将年份改为粗体,但出版商也以粗体显示

我在 Lyx 中使用了 BibTeX 样式IEETrans.bst。效果很好,我做了一些更改,例如没有 URL,并且使用以下附加功能将年份显示为粗体:

%bolden Function
FUNCTION {highlight.bolden}
{ duplicate$ empty$
     { pop$ "" }
     { "\textbf{" swap$ * "}" * }
   if$
}

我在文章等不同类型的函数中调用该函数

FUNCTION {article}
{ std.status.using.comma
  start.entry
  if.url.alt.interword.spacing
  format.authors "author" output.warn
  name.or.dash
  format.article.title "title" output.warn
  format.journal "journal" bibinfo.check "journal" output.warn
  format.volume output
  format.number.if.use.for.article output
  format.pages output
  format.date "year" output.warn
  highlight.bolden %bolden year
  format.note output
%  format.url output
  fin.entry
  if.url.std.interword.spacing
}

所以到目前为止,这完全没问题。但对于书籍条目,我需要粗体显示年份,但不需要出版商!而且我必须提到出版商,所以我很难调用 bolden 函数来仅将年份加粗。对于书籍:

FUNCTION {book}
{ std.status.using.comma
  start.entry
  if.url.alt.interword.spacing
  author empty$
    { format.editors "author and editor" output.warn }
    { format.authors output.nonnull }
  if$
  name.or.dash
  format.book.title.edition output
  format.series output
  author empty$
    { skip$ }
    { format.editors output }
  if$
  format.address.publisher.date output
  highlight.bolden %bolden year
  format.volume output
  format.number output
  format.note output
%  format.url output
  fin.entry
  if.url.std.interword.spacing
}

当我这样使用它时,生成的输出是粗体出版商和粗体年份,这是有道理的,但我希望只有年份以粗体显示。有什么建议吗?

呼叫 ....format.address.publisher.date outputformat.address.org.or.pub.date

FUNCTION {format.address.publisher.date}
{ publisher "publisher" bibinfo.warn format.address.org.or.pub.date }

...所以,我也尝试过将函数FUNCTION {format.address.org.or.pub.date}粘贴highlight.bolden到某个地方来更改该函数...但问题出在某个地方。无论我将其粘贴到哪里,年份都会消失,或者年份和出版商会变成粗体或没有...由于我对此只有基本了解,因此很难找到正确的位置。

FUNCTION {format.address.org.or.pub.date}
{ 't :=
  ""
  year empty$
    { "empty year in " cite$ * warning$ }
    { skip$ }
  if$
  address empty$ t empty$ and
  year empty$ and month empty$ and
    { skip$ }
    { this.to.prev.status
      this.status.std
      cap.status.std
      address "address" bibinfo.check *
      t empty$
        { skip$ }
        { punct.period 'prev.status.punct :=
          space.large 'prev.status.space :=
          address empty$
            { skip$ }
            { ": " * }
          if$
          t *
        }
      if$
      year empty$ month empty$ and
        { skip$ }
        { t empty$ address empty$ and
            { skip$ }
            { ", " * }
          if$
          month empty$
            { year empty$
                { skip$ }
                { year "year" bibinfo.check * }
              if$
            }
            { month "month" bibinfo.check *
              year empty$
                 { skip$ }
                 { " " * year "year" bibinfo.check * }
              if$
            }
          if$
        }
      if$
    }
  if$
}

有人知道该highlight.bolden把函数放在哪里吗?任何提示都会很有帮助。我仍然不知道该把它放在哪里才能找到可行的解决方案……谢谢

答案1

因此,我设法找到了解决方案!

对于FUNCTION {book},我单独添加了年份:format.date "year" output.warn并添加了我的highlight.bolden功能。

FUNCTION {book}
{ std.status.using.comma
  start.entry
  if.url.alt.interword.spacing
  author empty$
    { format.editors "author and editor" output.warn }
    { format.authors output.nonnull }
  if$
  name.or.dash
  format.book.title.edition output
  format.series output
  author empty$
    { skip$ }
    { format.editors output }
  if$
  format.address.publisher.date output
  format.date "year" output.warn   %added this line
  highlight.bolden                 %bolden year
  format.volume output
  format.number output
  format.note output
%  format.url output               %No URL Output
  fin.entry
  if.url.std.interword.spacing
}

为了不获得双年份条目,我删除了以下部分format.address.publisher.date

FUNCTION {format.address.publisher.date}
{ publisher "publisher" bibinfo.warn } %format.address.org.or.pub.date -> deleted

所以这对我来说很好 :) 如果有人遇到同样的问题:希望这对你有帮助!干杯

相关内容