这与我还有另一个问题,但当我尝试将参考书目中的整个条目加粗时,它会改变作者列表的格式。我希望能够仅将参考书目中的某些条目加粗,而其余条目保留正常格式。这是我的 MWE:
\documentclass[notitlepage,groupedaddress]{IEEEtran}
\usepackage{filecontents}
\usepackage{cite}
\begin{filecontents}{\jobname.bib}
@article{BCS,
title = {Theory of Superconductivity},
volume = {108},
number = {5},
journal = {Physical Review},
author = {Bardeen, J. and Cooper, L. N. and Schrieffer, J. R.},
month = dec,
year = {1957},
pages = {1175--1204}
}
@article{EPR,
title = {Can {Quantum-Mechanical} Description of Physical Reality Be Considered Complete?},
volume = {47},
number = {10},
journal = {Physical Review},
author = {Einstein, A. and Podolsky, B. and Rosen, N.},
month = may,
year = {1935},
pages = {777--780}
}
\end{filecontents}
\begin{document}
Hello world\cite{BCS}\cite{EPR}
\bibliographystyle{IEEEtran}
\bibliography{\jobname}
\end{document}
无需任何格式化命令,此文件便可为我提供 BCS 论文的以下输出:
J. Bardeen, L. N. Cooper, and J. R. Schrieffer, “Theory of superconduc- tivity,” Physical Review, vol. 108, no. 5, pp. 1175–1204, Dec. 1957.
现在,如果我将 BCS 论文的作者部分更改为大胆的:
author = {\textbf{Bardeen, J. and Cooper, L. N. and Schrieffer, J. R.}},
我得到不同的输出:
Bardeen, J. and Cooper, L. N. and Schrieffer, J. R., “Theory of superconductivity,” Physical Review, vol. 108, no. 5, pp. 1175–1204, Dec. 1957.
如果我尝试\bf
或\bfseries
,粗体会消失并包含 BCS 和 EPR 引文。有没有办法可以突出显示 BCS 论文的作者列表而不改变首字母和姓名的样式?我实际上正在研究的论文规模要大得多,我想避免以我想要的格式对作者进行硬编码。请注意,我正在使用IEEEtran
,所以我相信biblatex
这不是一个选项,因为biblatex
IEEE 样式不会产生与出版相同的格式。
答案1
您之所以看到这种行为,是因为在bib
文件中添加文本格式化命令后,您就无法正确解析名称字段。但IEEEtran.bst
参考书目样式非常复杂,并提供了一个钩子来执行您想要的操作。
正如IEEEtran.bst 文档,有一种特殊的方法可以将某些类型的自定义应用到文件IEEEtran.bst
。您需要向您的 bib 文件添加一个特殊的“控制记录”(实际上它可以是它自己的 bib 文件,就像我在本例中所做的那样。)控制 bib 文件包含一条记录,其中包含许多包含自定义的不同字段。在您的例子中,您想要指定作者姓名的格式。因此,控制 bib 文件将如下所示:
@IEEEtranBSTCTL{IEEE:BSTcontrol,CTLname_latex_cmd = "\textbf"}
在哪里
CTLname_latex_cmd = "\textbf"
是文件知道的控制序列,.bst
它采用一个需要参数的 latex 命令(因此它应该是\textbf
(或类似的)而不是开关。)
除了加载这个bib文件之外,您还需要一个特殊的引用命令来调用它:
\bstctlcite{IEEE:BSTcontrol}
其中IEEE:BSTcontrol
是与控制 bib 文件中的控制记录的键相对应的任意引用键。
如果要使个别项目加粗,您可以在文档中使用多个控制键。在下面的完整示例中,我创建了两个控制键:IEEE:bold
和IEEE:plain
。后面的所有引文\bstctlcite{IEEE:bold}
都将加粗,而 和 后面的所有引文\bstctlcite{IEEE:plain}
都将为纯文本。
以下是完整的示例:
\documentclass[notitlepage,groupedaddress]{IEEEtran}
\usepackage{filecontents}
\usepackage{cite}
\begin{filecontents}{\jobname.bib}
@article{BCS,
title = {Theory of Superconductivity},
volume = {108},
number = {5},
journal = {Physical Review},
author = {Bardeen, J. and Cooper, L. N. and Schrieffer, J. R.},
month = dec,
year = {1957},
pages = {1175--1204}
}
@article{EPR,
title = {Can {Quantum-Mechanical} Description of Physical Reality Be Considered Complete?},
volume = {47},
number = {10},
journal = {Physical Review},
author = {Einstein, A. and Podolsky, B. and Rosen, N.},
month = may,
year = {1935},
pages = {777--780}
}
\end{filecontents}
\begin{filecontents}{IEEEcontrol.bib}
@IEEEtranBSTCTL{IEEE:bold,CTLname_latex_cmd = "\textbf"}
@IEEEtranBSTCTL{IEEE:plain,CTLname_latex_cmd = "\relax"}
\end{filecontents}
\begin{document}
\bstctlcite{IEEE:bold}
Hello world\cite{BCS}\bstctlcite{IEEE:plain}\cite{EPR}
\bibliographystyle{IEEEtran}
\bibliography{\jobname,IEEEcontrol}
\end{document}
输出