我尝试通过在参考文献中出现的作者数量等于或大于 3 时添加“et al.”来限制作者数量。
根据文档(在第 8 页),您必须在 .bib 文件中定义要更改的字段,如下所示:
@IEEEtranBSTCTL{IEEEexample:BSTcontrol,
CTLmax_names_forced_etal = "3"}
然后,您必须在 .tex 文档中放入以下行:
\bstctlcite{IEEEexample:BSTcontrol}
我完成了这两件事,并且编译成功。但是,输出仍然显示参考文献中有超过 3 位作者(没有参考文献上写有“et al.”)。
有人有使用 IEEEtran.bst 和 IEEEtran.cls 的经验吗?我做错了什么?
答案1
似乎您没有包含完成此工作所需的所有字段:
CTLuse_forced_etal
是必须的表示您确实想要缩短作者列表。 CTLmax_names_forced_etal
在缩短列表之前给出最大作者数。 CTLnames_show_etal
允许您指定缩短列表时将给出多少个名称。
您的 bib-file 条目可能如下所示:
@IEEEtranBSTCTL{IEEEexample:BSTcontrol,
CTLuse_forced_etal = "yes",
CTLmax_names_forced_etal = "3",
CTLnames_show_etal = "2" }
这将限制作者列表超过 3 个,只打印前 2 个作者,然后打印等人。
最后,你需要\bstctlcite{IEEEexample:BSTcontrol}
在文档中包含在引用任何参考文献之前(最好放在后面\begin{document}
)。如果它出现在您插入参考书目的地方下面,则不会产生正确的效果。
最小工作示例:
\documentclass[]{IEEEtran}
\usepackage{lipsum} % For some dummy text
\usepackage{filecontents} % To make the bib-file
\begin{filecontents}{\jobname.bib}
@IEEEtranBSTCTL{IEEEexample:BSTcontrol,
CTLuse_forced_etal = "yes",
CTLmax_names_forced_etal = "3",
CTLnames_show_etal = "2"
}
@article{paperOne,
author = "Author First and Author Second and Author Third and Author Fourth",
title = "Paper One Title",
journal = "Awesome Journal",
pages = "111--115",
year = 2013
}
@incollection{paperTwo,
author = "Author First and Author Second and Author Third",
title = "Paper Two Title",
booktitle = "Proc. of Collection",
pages = "222--225",
year = 2013
}
\end{filecontents}
\begin{document}
\bstctlcite{IEEEexample:BSTcontrol}
% Paper text
\lipsum[4]
\nocite{paperOne,paperTwo} % Cite the references you want to include...
% Insert bibliography
\bibliographystyle{IEEEtran}
\bibliography{\jobname}
\end{document}
这将导致以下结果(请注意,第一个参考文献有 4 位作者减少到 2 位,而第二个参考文献可以显示所有 3 位作者,正如指定的)。
答案2
致力于 Sharelatex。
@IEEEtranBSTCTL 确实需要上述帖子中的至少前两个字段值(请参阅 Michael Shell 的文档)。我正在使用 cite 包,没有冲突。