通过 .tex 文件中的列表控制 BibTeX 中多个作者姓名的加粗

通过 .tex 文件中的列表控制 BibTeX 中多个作者姓名的加粗

我想在 BibTeX 参考文献部分中加粗某些作者姓名。突出显示的作者列表应由 .tex 源文件控制。

此解决方案展示如何针对单个作者执行此操作,其姓名在宏中定义\myname

此解决方案展示了如何对多位作者执行此操作,但突出显示的作者列表包含在 .bib 文件中。

答案1

您没有向我们展示 MWE 或 bib 文件,所以我只能猜测。

据我了解,您希望突出显示一个或多个作者的姓氏,例如以粗体打印。姓名应在 tex 代码中定义,然后使用程序 BibTeX 创建参考书目。

因为你没有给出我使用的风格plain

在这里搜索一下你就能找到@egreg 对这个问题的回答与您想要的类似。

我只做了一些小改动。列出要突出显示的作者的命令是

\highlightauthors{Studenta, Studentb, Studentc, Goossens, Mittelbach, Adams}

排队

  \regex_replace_all:NnN \g_hl_students_regex { \c{textbf}\cB\{ \1 \cE\} } \l_hl_data_tl
 %                                                 ^^^^^^

您可以将粗体打印 ( textbf) 更改为emphtextsc或任何您需要的内容。

完整的代码如下

\RequirePackage{filecontents}
\begin{filecontents*}{\jobname.bib}
@article{a,
  author={Studenta A. and Foo B.},
  title={Title},
  journal={Journal},
  year={2012},
}
@article{b,
  author={Studentb A. and Studentc B.},
  title={Title},
  journal={Journal},
  year={2012},
}
@article{c,
  author={Foo B. and Baz  B.},
  title={Title},
  journal={Journal},
  year={2012},
}
@Book{Goossens,
  author    = {Goossens, Michel and Mittelbach, Frank and
               Samarin, Alexander},
  title     = {The LaTeX Companion},
  edition   = {1},
  publisher = {Addison-Wesley},
  location  = {Reading, Mass.},
  year      = {1994},
}
@Book{adams,
  title     = {The Restaurant at the End of the Universe},
  author    = {Douglas Adams},
  series    = {The Hitchhiker's Guide to the Galaxy},
  publisher = {Pan Macmillan},
  year      = {1980},
}
\end{filecontents*}


\documentclass{article}

\usepackage{xparse,l3regex}
\ExplSyntaxOn
\regex_new:N \g_hl_students_regex
\seq_new:N \l_hl_students_seq
\tl_new:N \l_hl_data_tl
\NewDocumentCommand{\highlightauthors}{m}
 {
  \seq_set_split:Nnn \l_hl_students_seq { , } { #1 }
  \regex_gset:Nx \g_hl_students_regex
   { ( \seq_use:Nnnn \l_hl_students_seq { | } { | } { | } ) }
 }
\cs_generate_variant:Nn \regex_gset:Nn { Nx }

\cs_set_eq:NN \hl_bibitem:w \bibitem
\cs_set:Npn \bibitem #1#2\par
 {
  \hl_bibitem:w { #1 }
  \tl_set:Nn \l_hl_data_tl { #2 }
  \regex_replace_all:NnN \g_hl_students_regex { \c{textbf}\cB\{ \1 \cE\} } \l_hl_data_tl
  \tl_use:N \l_hl_data_tl \par
 }
\ExplSyntaxOff

\highlightauthors{Studenta, Studentb, Studentc, Goossens, Mittelbach, Adams}

\begin{document}
abc \cite{a} \cite{adams}
\nocite{*} 

\bibliographystyle{plain}
\bibliography{\jobname}
\end{document}

你将得到以下结果:

在此处输入图片描述

相关内容