每次在参考书目中出现作者姓名时,将其设为粗体(续)

每次在参考书目中出现作者姓名时,将其设为粗体(续)

这里提供的解决方案

每次在参考书目中出现作者姓名时,将其设为粗体

不幸的是,一旦作者姓名包含特殊字符,例如,则不起作用Hans M{\"u}ller?如何解决这个问题?

答案1

以下修改这个答案如果您使用 bib 样式,似乎可以工作plain

\let\originalbibitem\bibitem
\def\bibitem#1#2\par{%
  \noexpandarg
  \originalbibitem{#1}
  \StrSubstitute{#2}{Hans M{\"u}ller}{\textbf{Hans M{\"u}ller}}\par}

例子

\begin{filecontents*}{\jobname.bib}
@article{a,
author={M{\"u}ller, Gerd},
title={Scoring goals},
journal={J. Applied Soccer},
year={1974},
}
@article{b,
author={M{\"u}ller, Hans},
title={Splitting hairs},
journal={J. Abstract Tetrapiloctomy},
year={1255},
}
\end{filecontents*}

\documentclass{article}

\usepackage{xstring}

\let\originalbibitem\bibitem
\def\bibitem#1#2\par{%
  \noexpandarg
  \originalbibitem{#1}
  \StrSubstitute{#2}{Hans M{\"u}ller}{\textbf{Hans M{\"u}ller}}\par}

\begin{document}
\cite{a}

\cite{b}

\bibliographystyle{plain}
\bibliography{\jobname}

\end{document}

在此处输入图片描述

答案2

我终于找到了一个简单的解决方案,即通过修改.bbl文件sed

bibtex mydoc

mv my.bbl my.bbl.ori 

cat my.bbl.ori | tr '\n' '\t' | sed 's/\(M{\\\"u}ller, *\t* *H.\)/\\textbf{\1}/g'  | tr '\t' '\n' > my.bbl

诀窍是将换行符转换为制表符,以便 sed 能够将名称包装到中\texbf{...},即使中间有一个换行符。

相关内容