使用 bibtex 和 natbib 将参考文献列表中的年份加粗

使用 bibtex 和 natbib 将参考文献列表中的年份加粗

我正在尝试将参考文献列表中的年份以粗体显示。对于作者等其他字段,我可以通过添加\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}

结果:

在此处输入图片描述

相关内容