![Natbib:删除参考书目中姓氏和名字之间的逗号和点](https://linux22.com/image/408439/Natbib%EF%BC%9A%E5%88%A0%E9%99%A4%E5%8F%82%E8%80%83%E4%B9%A6%E7%9B%AE%E4%B8%AD%E5%A7%93%E6%B0%8F%E5%92%8C%E5%90%8D%E5%AD%97%E4%B9%8B%E9%97%B4%E7%9A%84%E9%80%97%E5%8F%B7%E5%92%8C%E7%82%B9.png)
我需要创建一个参考书目,其中作者姓名带有姓氏,后跟首字母,不带逗号和点。
梅威瑟:
\RequirePackage{filecontents}
\begin{filecontents}{mybib.bib}
@article{SARDAR2020,
title = "A New Lossless Secret Color Image Sharing Scheme with Small Shadow Size",
journal = "Journal of Visual Communication and Image Representation",
pages = "102768",
year = "2020",
issn = "1047-3203",
doi = "https://doi.org/10.1016/j.jvcir.2020.102768",
url = "http://www.sciencedirect.com/science/article/pii/S1047320320300183",
author = "Md Kutubuddin Sardar and Avishek Adhikari",
}
\end{filecontents}
\documentclass{article}
\usepackage[numbers,sort&compress]{natbib}
\begin{document}
\nocite{*}
\bibliographystyle{apa}
\bibliography{mybib}
\end{document}
它生产:
但我想删除姓氏和名字首字母之间的逗号和点,如下所示:
答案1
如果有人想在编写参考书目(使用 natbib)时删除名字首字母后的点(“。”,句点)以及姓氏后的逗号(“,”),您可以在使用的 .bst 文件中修改以下内容。
打开 .bst 文件并找到FUNCTION {format.names}
。在此函数中,样式指定如何显示作者姓名。Firstname = f; lastname = l; von-name = v; 和 jr name = j。顺序由括号(“{”和“}”)指定。如果字母简单,则姓名以完整形式书写。如果字母是双字母,则姓名以首字母书写。
现在,您所要做的就是找到函数的“{, f}”部分并将其替换为“{ f{}}”。通过删除逗号,首字母将跟在姓氏后面,而没有逗号。通过添加内部空的“{}”,您可以告诉 natbib 删除它在首字母后创建的自动句点。
最终的功能将是这样的:
FUNCTION {format.names}
{ 's :=
#1 'nameptr :=
s num.names$ 'numnames :=
numnames 'namesleft :=
{ namesleft #0 > }
{ s nameptr "{vv }{ll}{, jj}{ f{}}" format.name$ 't := % this is the part you have to modify
nameptr #1 >
{ namesleft #1 >
{ ", " * t * }
{ numnames #2 >
{ "" * }
'skip$
if$
t "others" =
{ " \textit{et al.}" * }
{ t #1 text.prefix$ "I" =
{ " e " * t * }
{ " y " * t * }
} if$
if$
}
if$
}
't
if$
nameptr #1 + 'nameptr :=
namesleft #1 - 'namesleft :=
}
while$
}