使用 apalike 參考書目風格時如何刪除作者姓名首字母之間的空格

使用 apalike 參考書目風格時如何刪除作者姓名首字母之間的空格

假設我的參考如下:

作者,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$
}

相關內容