我在 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 output
format.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
所以这对我来说很好 :) 如果有人遇到同样的问题:希望这对你有帮助!干杯