Apalike 参考文献スタイルを使用するときに著者のイニシャル間のスペースを削除する方法

Apalike 参考文献スタイルを使用するときに著者のイニシャル間のスペースを削除する方法

私の参照が以下のようなものであると仮定します。

著者、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$
}

関連情報