缩写名字,不带“~”,但保留“-”

缩写名字,不带“~”,但保留“-”

我觉得这类似于BibTeX natbib 中仅使用命名样式的作者姓名首字母或者 缩写名字之间没有空格吗?

当作者有多个名字时,我需要使用这些名字的首字母,中间没有空格或波浪符号。例如author="Gamboz, A. B."A.B. Gamboz

该格式"{f{.}. }{vv~}{ll}{, jj}"可以实现这一点,但是它还会删除某些法语名称或日语和中文音译中可能出现的“-”。

例如: (author="Jean-Baptiste Poquelin"J.B. Poquelin不是J.-B. Poquelin)。

有没有办法保留“-”?

MWE(摘自《Tame the BeaST》第37页):

最小bst

ENTRY {any}{}{}
FUNCTION {test}
{"Jean-Baptiste Poquelin"
#1 "{f{.}.~}{vv~}{ll}{, jj}" format.name$ top$}
READ
EXECUTE{test}

最小辅助

\bibstyle{min}

然后运行bibtex min

答案1

我在BibTeX 常见问题Q.35 由 Philip G. Ratcliffe 于 2002 年 6 月 28 日在新闻组 comp.text.tex 上提出,主题为BiBTeX,bst hacker,format.name$,请帮忙该方法包括使用函数“手动”删除空格

STRINGS {z}

FUNCTION {remove.spaces}
{ 'z :=
  ""
  { z empty$ not }
  { z #1 #1 substring$
    z #2 global.max$ substring$ 'z :=
    duplicate$ "~" =
      'pop$
      { duplicate$ " " =
          'pop$
          { * }
        if$
      }
    if$
  }
  while$
}

INTEGERS { nameptr namesleft numnames }

FUNCTION {forname.format.string}
{ "{f.}" }

FUNCTION {surname.format.string}
{ "{vv~}{ll}" }

FUNCTION {jnrname.format.string}
{ "{, jj}" }

FUNCTION {format.names}
{ 's :=
  #1 'nameptr :=
  s num.names$ 'numnames :=
  numnames 'namesleft :=
    { namesleft #0 > }
    { s nameptr forname.format.string format.name$ remove.spaces
      duplicate$ empty$ 'skip$ { "~" * } if$
      s nameptr surname.format.string format.name$ *
      s nameptr jnrname.format.string format.name$ *
      't :=

但是,如果作者的口音写成以下形式,则此解决方案将失效:

  author = {Greensite, Jeff and Olejn\'ik, {\v S}tefan and Zwanziger, Daniel},

因为中的空格{\v S}将会丢失:

J.~Greensite, {\vS}.~Olejn\'ik and D.~Zwanziger

相关内容