私の参照が以下のようなものであると仮定します。
著者、JM(2006)。種の豊富さのモデルの比較。生態学的モデリング、199(2):153-163。
著者の2つのイニシャルの間のスペースを削除して、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$
}