假設我的參考如下:
作者,JM (2006)。比較物種豐度模型。生態建模,199(2):153 – 163。
如何刪除作者的兩個首字母之間的空格,以便我獲得 Last, JM
謝謝!
答案1
製作一個副本apalike.bst
並將其命名為有用的名稱,例如apalike-nospace.bst
.將其保存在本機texmf
資料夾中texmf/bib/bst
。
然後更改文件format.names
中的函數.bst
。關鍵的變化是函數中的以下字串,它告訴我們bibtex
如何格式化名稱片段:
"{vv~}{ll}{, jj}{, f.}"
這需要更改為:
"{vv~}{ll}{, jj}{, f{.}.}"
此f
部分為聲母部分,預設元素間單位為空格。我們需要透過使用來明確地覆蓋它 {.}
。
這是新舊版本的整個功能:
原始碼:
FUNCTION {format.names}
{ 's :=
#1 'nameptr :=
s num.names$ 'numnames :=
numnames 'namesleft :=
{ namesleft #0 > }
{ s nameptr "{vv~}{ll}{, jj}{, f.}" format.name$ 't := % last name first
nameptr #1 >
{ namesleft #1 >
{ ", " * t * }
{ numnames #2 >
{ "," * }
'skip$
if$
t "others" =
{ " et~al." * }
{ " and " * t * }
if$
}
if$
}
't
if$
nameptr #1 + 'nameptr :=
namesleft #1 - 'namesleft :=
}
while$
}
新程式碼
FUNCTION {format.names}
{ 's :=
#1 'nameptr :=
s num.names$ 'numnames :=
numnames 'namesleft :=
{ namesleft #0 > }
{ s nameptr "{vv~}{ll}{, jj}{, f{.}.}" format.name$ 't := % last name first
nameptr #1 >
{ namesleft #1 >
{ ", " * t * }
{ numnames #2 >
{ "," * }
'skip$
if$
t "others" =
{ " et~al." * }
{ " and " * t * }
if$
}
if$
}
't
if$
nameptr #1 + 'nameptr :=
namesleft #1 - 'namesleft :=
}
while$
}