作者列表的粗体随 bibtex 改变样式

作者列表的粗体随 bibtex 改变样式

这与我还有另一个问题,但当我尝试将参考书目中的整个条目加粗时,它会改变作者列表的格式。我希望能够仅将参考书目中的某些条目加粗,而其余条目保留正常格式。这是我的 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这不是一个选项,因为biblatexIEEE 样式不会产生与出版相同的格式。

答案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:boldIEEE: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}

输出

代码输出

相关内容