答案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
) 更改为emph
或textsc
或任何您需要的内容。
完整的代码如下
\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}
你将得到以下结果: