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 文件,我想将其用于这两种风格。
我认为有几种方法可以实现此目的:
- 更改
bst
文件。我真的不想这么做。 - 在每个前面添加一些 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}{}
并根据需要打开或关闭评论。