修改bst文件,使2個作者在文本中以「and」分隔

修改bst文件,使2個作者在文本中以「and」分隔

我必須使用自訂 .bst 檔案來撰寫論文。當我只有兩個作者可供參考時,這些作者是分開的在文本中和 ” , 」。
例如(Simonyan,Zisserman,2014)。我希望它是這樣的(Simonyan 和 Zisserman,2014)。
在我的參考書目中,風格是正確的。那麼,是否有必要更改.bst檔呢?
我認為以下是相關行:

INTEGERS { nameptr namesleft numnames }

FUNCTION {format.names}
{ 's :=
  'f :=
  #1 'nameptr :=
  s num.names$ 'numnames :=
  numnames 'namesleft :=
    { namesleft #0 > }
    { s nameptr f format.name$ 't :=
      nameptr #1 >
        { namesleft #1 >
            { ", " * t * }
            { t "others" =
                { " et~al." * }
                { ", " * t * }
              if$
            }
          if$
        }
        't
      if$
      nameptr #1 + 'nameptr :=
      namesleft #1 - 'namesleft :=
    }
  while$
}

FUNCTION {format.authors}
{ author empty$
    { "" }
    { "{vv~}{ll}{, jj}{, f.}" author format.names }
  if$
}

答案1

相關宏是format.lab.names.abbr.對於“和”,它必須讀作

FUNCTION {format.lab.names.abbr}
{ 's :=
  s num.names$ 'numnames :=
  numnames #1 >
    { numnames #2 >
        { s #1 "{vv~}{ll}" format.name$ " et al." * }
        { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
            { s #1 "{vv~}{ll}" format.name$ " et al." * }
            { s #1 "{vv~}{ll}" format.name$ " and " *
              s #2 "{vv~}{ll}" format.name$ * 
            }
          if$
        }
      if$
    }
    { s #1 "{vv~}{ll}" format.name$ }
  if$
}

變化發生在最裡面條件的第二個分支。isprs.bst目前可用的版本位於http://www.isprs.org/documents/orangebook/app5.aspx

s #1 "{vv~}{ll}" format.name$ " , " * % replaced and with ,

在那裡,我們讓它讀

s #1 "{vv~}{ll}" format.name$ " and " *

再次。請注意他們的評論和逗號前的虛假空格。


當然,您仍然應該向範本的維護者報告此問題,並且不應該.bst直接修改文件。僅修改和重新命名,isprs-and.bst例如複製並記錄變更。

相關內容