如何修改“unsrt.bst”文件以生成简洁易读的《应用物理学杂志(JAP)》风格的.bbl 文件?

如何修改“unsrt.bst”文件以生成简洁易读的《应用物理学杂志(JAP)》风格的.bbl 文件?

我准备向《应用物理学杂志》(JAP)提交一篇文章。因此我使用 revtex4-1 文档类\documentclass[aip,jap,reprint,superscriptaddress,amsmath,amssymb]{revtex4-1}

在准备论文期间,我使用 .bib 文件生成参考文献列表。但现在到了提交的时间,我想将参考文献以 \bibitems 的形式嵌入到我的 latex 文件中。一种方法是复制 .bbl 文件的内容,该文件是在 latex 处理过程中由 .bib 文件自动生成的。

正如 Jon 所评论的,.bbl 文件的内容由 documentclass 控制。但问题是我发现 JAP documentclass 样式生成的 .bbl 文件非常复杂、冗长且难以阅读。类似于:

\begin{thebibliography}{2}%
\makeatletter
\providecommand \@ifxundefined [1]{%
 \@ifx{#1\undefined}
}%
\providecommand \@ifnum [1]{%
 \ifnum #1\expandafter \@firstoftwo
 \else \expandafter \@secondoftwo
 \fi
}%
\providecommand \@ifx [1]{%
 \ifx #1\expandafter \@firstoftwo
 \else \expandafter \@secondoftwo
 \fi
}%
\providecommand \natexlab [1]{#1}%
\providecommand \enquote  [1]{``#1''}%
\providecommand \bibnamefont  [1]{#1}%
\providecommand \bibfnamefont [1]{#1}%
\providecommand \citenamefont [1]{#1}%
\providecommand \href@noop [0]{\@secondoftwo}%
\providecommand \href [0]{\begingroup \@sanitize@url \@href}%
\providecommand \@href[1]{\@@startlink{#1}\@@href}%
\providecommand \@@href[1]{\endgroup#1\@@endlink}%
\providecommand \@sanitize@url [0]{\catcode `\\12\catcode `\$12\catcode
  `\&12\catcode `\#12\catcode `\^12\catcode `\_12\catcode `\%12\relax}%
\providecommand \@@startlink[1]{}%
\providecommand \@@endlink[0]{}%
\providecommand \url  [0]{\begingroup\@sanitize@url \@url }%
\providecommand \@url [1]{\endgroup\@href {#1}{\urlprefix }}%
\providecommand \urlprefix  [0]{URL }%
\providecommand \Eprint [0]{\href }%
\providecommand \doibase [0]{http://dx.doi.org/}%
\providecommand \selectlanguage [0]{\@gobble}%
\providecommand \bibinfo  [0]{\@secondoftwo}%
\providecommand \bibfield  [0]{\@secondoftwo}%
\providecommand \translation [1]{[#1]}%
\providecommand \BibitemOpen [0]{}%
\providecommand \bibitemStop [0]{}%
\providecommand \bibitemNoStop [0]{.\EOS\space}%
\providecommand \EOS [0]{\spacefactor3000\relax}%
\providecommand \BibitemShut  [1]{\csname bibitem#1\endcsname}%
\let\auto@bib@innerbib\@empty
%</preamble>
\bibitem [{\citenamefont {Mazin}\ \emph {et~al.}(2008)\citenamefont {Mazin},
  \citenamefont {Singh}, \citenamefont {Johannes},\ and\ \citenamefont
  {Du}}]{10.1103/PhysRevLett.101.057003}%
  \BibitemOpen
  \bibfield  {author} {\bibinfo {author} {\bibfnamefont {I.~I.}\ \bibnamefont
  {Mazin}}, \bibinfo {author} {\bibfnamefont {D.~J.}\ \bibnamefont {Singh}},
  \bibinfo {author} {\bibfnamefont {M.~D.}\ \bibnamefont {Johannes}}, \ and\
  \bibinfo {author} {\bibfnamefont {M.~H.}\ \bibnamefont {Du}},\ }\href
  {\doibase 10.1103/PhysRevLett.101.057003} {\bibfield  {journal} {\bibinfo
  {journal} {{Phys. Rev. Lett.}}\ }\textbf {\bibinfo {volume} {{101}}},\
  \bibinfo {pages} {057003} (\bibinfo {year} {2008})}\BibitemShut {NoStop}%
\bibitem [{\citenamefont {Mazin}(2010)}]{10.1038/nature08914}%
  \BibitemOpen
  \bibfield  {author} {\bibinfo {author} {\bibfnamefont {I.~I.}\ \bibnamefont
  {Mazin}},\ }\href {\doibase 10.1038/nature08914} {\bibfield  {journal}
  {\bibinfo  {journal} {{Nature}}\ }\textbf {\bibinfo {volume} {{464}}},\
  \bibinfo {pages} {183} (\bibinfo {year} {2010})}\BibitemShut {NoStop}%
\end{thebibliography}%

参考的样子是这样的 在此处输入图片描述

好吧,将这么大的数据块粘贴到 latex 文件中肯定可行。但它不可读。

实际上,如果我们使用unsrt这里提到的修改后的样式是否有可能获得 unsrt + abbrv 书目?。我们可以生成与 JAP 风格非常相似的参考文献外观。修改是在unsrt.bst文件中完成的。由于原文中的作者姓名unsrt不是 JAP 风格。因此通过将ff~中的 f.~更改FUNCTION {format.names}为 JAP 作者姓名风格。生成的 .bbl 文件现在更清晰了,如下所示:

\begin{thebibliography}{1}

\bibitem{10.1103/PhysRevLett.101.057003}
I.~I. Mazin, D.~J. Singh, M.~D. Johannes, and M.~H. Du.
\newblock {\em {Phys. Rev. Lett.}}, {101}(5):057003, 2008.

\bibitem{10.1038/nature08914}
I.~I. Mazin.
\newblock {\em {Nature}}, {464}(7286):183--186, 2010.

\end{thebibliography}

在此处输入图片描述

为了产生精确的 JAP 参考外观。我们只需进行一些文本替换,例如:

  1. 删除 \em
  2. 删除 (5) 和 (7286)
  3. 将“:”替换为“,”
  4. 在年份处添加圆括号。
  5. 粗体 101 和 464
  6. 将 183--186 改为 183

上面的操作列表可以通过一些正则表达式替换知识轻松完成。最后我们得到了以下 \bibitems,它们产生完全相同的 JAP 引用样式。

\begin{thebibliography}{1}
\bibitem{10.1103/PhysRevLett.101.057003}
I.~I. Mazin, D.~J. Singh, M.~D. Johannes, and M.~H. Du.
\newblock {{Phys. Rev. Lett.}} \textbf{101}, 057003 (2008).

\bibitem{10.1038/nature08914}
I.~I. Mazin.
\newblock {{Nature}} \textbf{464}, 183 (2010).
\end{thebibliography}

就像更改ff~f.~inunsrt.bst会给出正确的 JAP 样式作者姓名一样。我相信我们只需要对文件进行一些修改,unsrt.bst就可以在单个步骤中生成正确且清晰的 JAP 样式 \bibitems,因此我不需要任何正则表达式替换后处理。

答案1

我想也许我现在可以回答我自己的问题了。

这个问题的关键是生成自定义书目样式的bst文件。

有两种方法可以做到这一点

  1. 使用包中的makebst工具定制围兜
  2. 使用基于 Java 的软件围兜

makebst是一个命令行工具,在你回答了一系列与你想要的参考样式格式相关的问题后,它会生成一个自定义的 .bst 文件。对我来说,它不是那么友好,你可以通过阅读这篇文章一步一步学习如何使用它LaTeX、书目管理和样式

另一方面,我发现使用起来bib-it更容易(感谢的作者bib-it)。它有一个Bibtex style generator图形化的。现在我将展示如何使用bib-it在短短几分钟内生成 JAP 风格的 .bst 文件。


打开后bib-it,点击“工具-->样式生成器”,你会看到一个图形界面,标题为Bibtex style generator,你需要做的就是如下图所示的三步设置:

  1. 文章 在此处输入图片描述
  2. 在此处输入图片描述
    1. 作者 在此处输入图片描述

最后,只需按“生成并保存”,即可获得自定义的 bst 文件。

生成的引用的外观如下 在此处输入图片描述

自动生成的.bbl文件非常清晰

\begin{thebibliography}{}

\bibitem{10.1103/PhysRevLett.101.057003}
I.~I. Mazin, D.~J. Singh, M.~D. Johannes and M.~H. Du, {Phys. Rev. Lett.}
  \textbf{{101}}, 057003 (2008).

\bibitem{10.1038/nature08914}
I.~I. Mazin, {Nature} \textbf{{464}}, 183--186 (2010).

\end{thebibliography}

唯一的缺点是“页面”,JAP 只需要起始页。可以使用正则表达式通过一次替换操作来修复此问题。

答案2

您可以使用环境将 bib 文件的内容插入到序言的开头(按照行\documentclassfilecontents

\usepackage{filecontents} 
\begin{filecontents} {mwe.bib}
@online{tab:test,
  author                   = {Doe, John},
  Url                      = {http://www.example.com/images/image.jpg},
  Urldate                  = {2014-02-25},
  Timestamp                = {2014.06.13},
  Note                     = {Table \ref{tab1}}, %<== this should point to your table caption label
  year                     = {2014}, %this is necessary for the in-text citation to work
}
\end{filecontents}

相关内容