![覆盖 BibTeX 文件中的字段](https://linux22.com/image/266152/%E8%A6%86%E7%9B%96%20BibTeX%20%E6%96%87%E4%BB%B6%E4%B8%AD%E7%9A%84%E5%AD%97%E6%AE%B5.png)
我把所有参考文献都保存在一个巨大的 BibTeX 文件中,其中恰好包含每个参考文献的完整期刊名称。我目前正在准备一份需要缩写期刊名称的手稿。
根据我所做的研究(包括阅读本网站上的相关问题),似乎(i)没有标准的自动化方法来做到这一点,但(ii)有各种工具,如biber
和jabref
,可以让我对文件进行预处理,.bib
并使用某种全局搜索和替换期刊名称。
但是,由于我的稿件只有几处参考文献,因此手动输入每个条目的新期刊名称会更简单。有办法吗?我正在寻找一种快速简便的仅使用 LaTeX 的解决方案,不需要安装任何不属于 TeX Live 的东西,因为我的时间很紧。我知道我可以只编辑 .bib 文件中的条目,但我不想这样做,因为我喜欢将所有参考文献放在同一个位置。
如果相关的话,我.bib
使用 Mac 上的 BibDesk 维护我的文件,我使用natbib
包,并且书目样式为apalike
。
答案1
我认为您不安装任何东西的限制使简单的解决方案变得困难,因此我将根据这个答案建议以下解决方案。
jabbrv
从这里下载软件包:http://www.compholio.com/latex/jabbrv/jabbrv_apalike.bst
从这里下载:https://github.com/amunn/random-code/blob/main/jabbrv_apalike.bst.bst
(我根据包中包含的其他文件创建了此文件。)如果您真的很着急,请将
jabbrv_apalike.bst
文件添加到文件夹中jabbrv
,并将 TeX 文档也放在该文件夹中。(这是不安装任何东西的最快方法)。
如果您想要正确安装,您应该将包安装在texmf
以下位置的本地文件夹中(您需要jabbrv
自己创建文件夹)。在 Mac 上,<path-to-your-local-texmf>
= ~/Library/texmf
。
- 普京
*.bst
<path-to-your-local-texmf>/bibtex/bst/jabbrv
- 普京
jabbrv.sty
<path-to-your-local-texmf>/tex/latex/jabbrv
- 普京
*.ldf
<path-to-your-local-texmf>/tex/latex/jabbrv
在您的 TeX 文档中,将以下行添加到您的序言中:
\usepackage[warnundef]{jabbrv}
并更改你的参考书目样式命令:
\bibliographystyle{jabbrv_apalike}
检查警告中是否存在未缩写的单词,并将这些单词在序言中添加如下内容:
\DefineJournalAbbreviation{long name}{abbreviation} % No period at the end
我写这个答案所花的时间比获得使用这个包的现有文档所花的时间还要长。
答案2
规范化期刊(和出版商)名称的一种方法是使用文件@String
中的函数.bib
。例如,
@String{j-CACM = "Communications of the ACM"}
会给出全名,而
@String{j-CACM = "Comm. ACM"}
在需要缩写时将被替代。
具体条目将包括
@Article{...,
...
journal = j-CACM,
...,
}
(无引号)。然后可以根据需要替换完整标题或缩写的平行集合。这也避免了在各个条目中输入名称不一致的可能问题。
这种方法以及有关 bibtex 数据库维护的许多其他信息由 Nelson Beebe 在 2004 年实用 tex 会议上提出,并产生了关于该主题的一篇详尽文章(Nelson 比我认识的任何人都更了解 bibtex 书目,并且有更多经验。他的建议很可靠,值得研究。)