BibTeX:注释字段的大写:plain.bst 与 amsplain.bst

BibTeX:注释字段的大写:plain.bst 与 amsplain.bst

bibtex样式plain在输出注释字段前使用句点,而 则amsplain使用逗号。它们均未处理注释字段的大写。

例如,考虑test.bib包含

@Article{test,
  author =   {An Author},
  title =    {A Title},
  journal =  {A journal},
  year =     2016,
  volume =   42,
  pages =    {42--43},
  note =     {with an appendix},
}

使用\bibliographystyle{plain},输出将是

[1] 作者。标题。期刊,42:42–43,2016 年。附附录。

使用\bibliographystyle{amsplain},输出将是

[1] 作者,标题,A期刊42(2016),42–43,附附录。

我有一个很长的 bib 文件,我想将其用于这两种风格。

我认为有几种方法可以实现此目的:

  1. 更改bst文件。我真的不想这么做。
  2. 在每个前面添加一些 LaTeX 命令note,例如note = {\lowercaseforamsstyle With an appendix}并在序言中设置该命令。

还有什么比这更好的解决方案的建议吗?

答案1

不容易,但也不算太难。

复制plain.bst,命名plainnote.bst并添加

FUNCTION {format.note}
{ note empty$
    { "" }
    { note #1 #1 substring$ "u" change.case$
      note #2 note text.length$ #1 - substring$ *}
  if$
}

某个地方,我把它放在了之前FUNCTION {format.authors}

该函数的目的是获取note字段的第一个字符并将其更改为大写;然后连接字段的其余部分。

note output然后把所有的外观变成

format.note output

这是.bbl我从您的示例中获取的文件,使用\bibliographystyle{plainnote},没有任何变化。

\begin{thebibliography}{1}

\bibitem{test}
An~Author.
\newblock A title.
\newblock {\em A journal}, 42:42--43, 2016.
\newblock With an appendix.

\end{thebibliography}

另一种方法是在注释字段中使用大写字母并amsplain.bst以类似的方式进行更改,但"l" change.case$将首字母变为小写。

无需修改.bst文件,您可以输入注释字段

note = {\lowercaseforams With an appendix}

并在序言中定义,

\newcommand\lowercaseforams{%
  \ifdefined\MR\expandafter\MakeLowercase\fi
}

amsplain.bst这利用了定义的事实\MR。如果不依赖这一点,你可以这样做

%\newcommand{\lowercaseforams}{\MakeLowercase}
\newcommand{\lowercaseforams}{}

并根据需要打开或关闭评论。

相关内容