我正在尝试将参考文献列表中的年份以粗体显示。对于作者等其他字段,我可以通过添加\textbf{mytext}
到.bib
文件来实现。但对于年份字段,这不起作用。
我发现了这个问题:使用 natbib 时,如何以粗体显示参考文献中的年份?但它不包含除“编辑这.bst
“。
我认为我找到了相关的函数定义,但我不知道如何改变它,它似乎不包含我可能在代码中放置的任何字符串模板\textfb{}
:
FUNCTION {format.date}
{ year duplicate$ empty$
{ "empty year in " cite$ * warning$
pop$ "" }
'skip$
if$
month empty$
'skip$
{ month
" " * swap$ *
}
if$
extra.label *
}
答案1
BibTeX 有堆栈的概念,文件中的字段.bib
根据.bst
文件的定义被推送到堆栈上。堆栈的顶部元素可用于测试和条件,通常在处理完此元素后,它会从堆栈中弹出到输出中。堆栈顶部的元素也可以交换以将另一个元素放在顶部,以便更改输出的弹出顺序,或者在进一步处理之前先对另一个元素进行某些操作。
在format.date
函数中,日期字符串位于堆栈顶部。要使年份加粗,可以将其放在\textbf{
堆栈顶部,将其交换到堆栈中的第二位(日期再次位于顶部)并添加结尾}
。这是在函数末尾完成的,其中日期字符串已完全格式化。
你没有指定natbib
使用哪种风格,因此在下面的 MWE 中我进行了调整abbrvnat
。
.bst
:
FUNCTION {format.date}
{ year duplicate$ empty$
{ "empty year in " cite$ * warning$
pop$ "" }
'skip$
if$
month empty$
'skip$
{ month
" " * swap$ *
}
if$
extra.label *
"\textbf{" swap$ * "}" *
}
.tex
:
\documentclass{article}
\begin{filecontents}{\jobname.bib}
@article{myarticle,
author = {Mary Jones},
title = {First Things},
journal = {Journal of Things},
year = {2017}
}
@inproceedings{myproceedings,
author = {Joe Peterson},
title = {Briefly Explained},
booktitle = {Conference of Briefness},
year = {2017}
}
\end{filecontents}
\begin{document}
See \cite{myarticle,myproceedings}.
\bibliographystyle{xabbrvnat}
\bibliography{\jobname}
\end{document}
结果: