我希望 BibTeX 按以下方式打印作者姓名:
S. Bouabdallah、A. Noth、R. Siegwart
为了实现这一点,根据我已经读过的内容,.bib
代码应该如下所示:
@inproceedings{BouabdallahPID,
author = {Bouabdallah, S. and Noth, A. and Siegwart, R.},
keywords = {quad},
location = {Sendai, Japan},
pages = {2451--2456},
title = {{PID vs LQ control techniques applied to an indoor micro quadrotor}},
year = {2004}
}
相反,BibTeX 一直在最后一位作者的名字前包含“and”字,即:
S. Bouabdallah、A. Noth 和 R. Siegwart
我怎样才能去掉“and”这个词?
到目前为止,我尝试过alpha
、和样式,但没有什么区别,因此假定样式不会改变此行为,但这个样式可能不对。不过,我还是想继续使用。plain
ams
acm
plain
答案1
如果您使用的是plain
参考书目样式,则可以按以下步骤让 BibTeX 将" and "
倒数第二位和最后一位作者姓名之间的连接器替换为一个简单的逗号:
复制该文件
plain.bst
并将其命名为myplain.bst
。请执行不是直接编辑/修改 TeX 发行版附带的现有文件。在您喜欢的文本编辑器中打开文件
myplain.bst
并搜索函数format.names
。(它在我的系统的副本中从 l. 185 开始plain.bst
。)在此函数的代码中,查找以下行(可能是第 195-201 行):{ numnames #2 > { "," * } 'skip$ if$ t "others" = { " et~al." * } { " and " * t * }
修改这些行的第一行和最后一行,使代码行如下所示:
{ numnames #1 > { "," * } 'skip$ if$ t "others" = { " et~al." * } { " " * t * }
即,将第一行改为,并将
#2
该组最后一行改为。无论作者人数多少,都需要进行两项修改才能得到正确的处理——当然,只要作者人数大于 1 即可。#1
" and "
" "
保存文件,根据需要更新 TeX 发行版的文件名数据库,然后使用命令开始调用新的参考书目样式
\bibliographystyle{myplain}
。
祝您 BibTeX 愉快!
答案2
使用时jurabib
,其工作方式如下:
\renewcommand*{\jbbtasep}{, } % bta = between two authors sep
\renewcommand*{\jbbfsasep}{, } % bfsa = between first and second author sep
\renewcommand*{\jbbstasep}{, }% bsta = between
不过,我还没有弄清楚它是如何使用的plain
。
编辑:
我刚刚阅读了plain
样式文档——显然不是全部——可以在加拿大运输安全局。第 683-714 行描述了名称格式化函数(就我所理解的而言)。它说:
format.names(s) ==
% BEGIN
% nameptr := 1
% numnames := num.names$(s)
% namesleft := numnames
% while namesleft > 0
% do
% % for full names:
% t := format.name$(s, nameptr, "{ff~}{vv~}{ll}{, jj}")
% % for abbreviated first names:
% t := format.name$(s, nameptr, "{f.~}{vv~}{ll}{, jj}")
% if nameptr > 1 then
% if namesleft > 1 then nameresult := nameresult * ", " * t
% else if numnames > 2
% then nameresult := nameresult * ","
% fi
% if t = "others"
% then nameresult := nameresult * " et~al."
% else nameresult := nameresult * " and " * t
% fi
% fi
% else nameresult := t
% fi
% nameptr := nameptr + 1
% namesleft := namesleft - 1
% od
% return nameresult
% END
似乎必须else nameresult := nameresult * " and " * t
进行转变else nameresult := nameresult * ", " * t
才能实现您想要实现的目标。
因此,您可能必须基于plain
仅更改此部分的样式来创建自己的新样式。
这“K-Lo 博士” 的博文也可能有帮助。
答案3
谢谢你的回答。我只想为新用户添加一条评论:
该文件myplain.bst
必须与父文件位于同一文件夹中.tex
。如果您将工作分成多个.tex
文件(例如,在一篇论文中),则必须将该.bst
文件与非父.tex
文件放在同一文件夹中。
例子
- 父 tex 文件:
thesis/thesis.tex
- 章节路径:
thesis/chapters/introduction.tex
,,...thesis/chapters/abstract.tex
thesis/chapters/results.tex
那么的路径myplain.bst
就必须是thesis/chapters/myplain.bst
。
您必须至少编译两次参考书目和 PDF 文件才能打印不带“和”字的参考文献。
这对我有用。