model2-names.bst 的问题

model2-names.bst 的问题

我使用的是 model2-names.bst,它是我提交文章的期刊内置的。但是,由于某种原因,使用 PDFLaTeX 后,输出中附加了期刊名称和卷号,而不是用逗号 (,) 分隔。

例如:PF Goldsmith,暗云核中的分子耗竭和热平衡,ApJ557(2001)736–746。doi:10.1086/322255。

在上面的例子中,ApJ(期刊)和 557(卷号)是相连的,而不是分开的。

参考书目文件中此参考文献的条目为:

@ARTICLE{Gold01,
   author = {{Goldsmith}, P.~F.},
    title = "{Molecular Depletion and Thermal Balance in Dark Cloud Cores}",
  journal = {\apj},
 keywords = {ISM: Clouds, ISM: Globules, ISM: Molecules, Molecular Processes},
     year = 2001,
    month = aug,
   volume = 557,
    pages = {736-746},
      doi = {10.1086/322255},
   adsurl = {http://adsabs.harvard.edu/abs/2001ApJ...557..736G},
  adsnote = {Provided by the SAO/NASA Astrophysics Data System}
}

.bbl 中上述条目的相关 bibitem 是:

\bibitem{Gold01}
P.~F. {Goldsmith}, {Molecular Depletion and Thermal Balance in Dark Cloud
  Cores}, \apj 557 (2001) 736--746.
\newblock \href {http://dx.doi.org/10.1086/322255}{\path{doi:10.1086/322255}}.

答案1

你有两种策略:

  1. 输入journal={\apj{}},或

  2. 定义字符串apj和类型journal=apj

我更喜欢后者。

\begin{filecontents*}{\jobname.bib}
@ARTICLE{Gold01,
   author = {Goldsmith, P. F.},
    title = {Molecular Depletion and Thermal Balance in Dark Cloud Cores},
  journal = {\apj{}},
 keywords = {ISM: Clouds, ISM: Globules, ISM: Molecules, Molecular Processes},
     year = 2001,
    month = aug,
   volume = 557,
    pages = {736-746},
      doi = {10.1086/322255},
   adsurl = {http://adsabs.harvard.edu/abs/2001ApJ...557..736G},
  adsnote = {Provided by the SAO/NASA Astrophysics Data System}
}
@STRING{
  apj={ApJ}
}
@ARTICLE{Gold0X,
   author = {Goldsmith, P. F.},
    title = {Molecular Depletion and Thermal Balance in Dark Cloud Cores},
  journal = apj,
 keywords = {ISM: Clouds, ISM: Globules, ISM: Molecules, Molecular Processes},
     year = 2001,
    month = aug,
   volume = 557,
    pages = {736-746},
      doi = {10.1086/322255},
   adsurl = {http://adsabs.harvard.edu/abs/2001ApJ...557..736G},
  adsnote = {Provided by the SAO/NASA Astrophysics Data System}
}
\end{filecontents*}

\documentclass{article}
\newcommand{\apj}{ApJ}
\begin{document}
\cite{Gold01}

\cite{Gold0X}

\bibliographystyle{model2-names}
\bibliography{\jobname}
\end{document}

在此处输入图片描述

答案2

问题不在于参考书目样式,而在于您定义宏的方式\apj\newcommand{\apj}{ApJ}

你可能知道,TeX 会忽略名称仅包含字母的宏后面的空格,例如,\apj。因此,如果您希望在缩写的期刊名称和卷号之间显示空格,则需要将宏的定义更改为\newcommand{\apj}{ApJ }或将字段更改journaljournal = {\apj\ },

实际上,还有第三种——甚至更好的——解决方案,它根本不使用宏:

  • 在bib文件的开头,设置以下字符串常量定义:

    @string{ apj = "ApJ" }
    
  • 然后,将journal字段设置为

    journal = apj,
    

这样,如果需要空格,就会得到一个空格,如果不需要,就不会有空格——比如,因为在其他一些书目样式中,期刊名称后面有一个逗号。

相关内容