怎么获得一份合格的参考文献列表?Zotero 参考文献导出以及 bib 使用
https://stackoverflow.com/questions/9600801/evenly-distributing-n-points-on-a-sphere/26127012#26127012在使用 revtex4-2
模板时, 仅需在文章末尾添加 \bibliography{bib_file_name}
即可.
利用 Zotero 自带的导出 bib
选项呈现上化学公式等都会遇到问题, 而且在语言上也会出错
所以实际使用时利用 better-bibtex
进行导出内容的控制和格式优化 (也被简称为 BBT). 不过在使用 BBT 导出 bib
格式文件用于 Overleaf 使用时, 对于数学公式和额外的 Unicode 字体的支持会出现问题, 或者文章标题出现 \Ce{H2O}
这种, 会被转义为 \backslash
等字符组合而无法显示原本想要展示的内容.
在上网搜索的过程中, BBT 的作者是真的给力, 在 Github 的 issue 里给大家疯狂解答, 提供了可供自定义的输入 postscript 功能, 甚至在一个 issue 和大家的互动里面这么说道
I recognize most LaTeX users aren't necessarily javascript coders, which is why I'll write them on request. The postscript exists so that if I say "I don't want to affect all BBT users" I can also say "but here's how you do it anyway".
截止到 2022 年 7 月 20 号, 他的 issue 列表里面是 45 open, 1658 closed, 几乎是他一个人不厌其烦地在给大家回复各种内容, 真的让人不禁想要 QAQ (念出来那种, 要有气势)
在所有的这些 issue 里按照关键词比如: LaTeX escape special character, 出来的内容里在我浏览后有大概这么两个对于理解这中间的机制和过程有较大的帮助:
- LaTeX commands in Zotero should be exported untouched - Issue #1380 - retorquere/zotero-better-bibtex
- Cleared (undefined)
rawLaTag
disables raw #LaTeX processing - Issue #1674 - retorquere/zotero-better-bibtex
在 Zotero 论坛上最后也找到了很直接的解答的方式 (后面 Ta 甚至还给出了正则表达式为什么这么写的含义解释):
With BBT installed, you can do this in 3 ways:
- Tag the item with "#LaTeX" (case sensitive)
- Enter the title as "Emergence of a <pre>$k$</pre>-Core" (this is BBT-specific, and the "pre" stuff will end up in your bibliography if you're generating the bibliography in e.g. Word)
- Using a postscript: https://retorque.re/zotero-better-bibtex/scripting/#detect-and-protect-latex-math-formulas
在所有的解决方案里,
提到的第一个解决方案: 可以将文献加上标签 #LaTeX, 这样 BBT 会自动默认现有标题是以 LaTeX 的原始输入, 由此不再进行处理, 将所有内容直接保留到 bib
文件里. 当然, 也可以通过进入 Preferences/Advanced/Config editor
修改 rawLatag 为 *. 这样将会默认所有的文献都是对应 #LaTeX 标签的作用, 从而直接变为 bib
文件里面的内容. 这么做当然也有缺点, 这时候大小写会出问题, 不能保持原样, 因为 bibtex 对文件大小写的处理非常复杂, BBT 在这里其实为了保持原有的效果加了很多花括号.
在提到的第二个解决方案: <pre> ... </pre>
tag 能让 BBT 跳过解析包含在这个标签内部的 LaTeX special character, 所以原则上可以自己直接在每个文献编辑的时候单独操作. 当然有点繁琐就是了. 从写的文档里面来看, 用 <script> ... <script>
进行包裹看起来也是可以的.
在上方 issue 提到了第三个解决方案: 手动加 tag 的效果其实和选择关闭 export unicode as plain-text latex commands
选项相当. 此时标题里面含有公式或者下标的话在正文用数学模式写就能避免了. 这样唯一的问题会导致我在 Zotero 里面无法搜索特定化学式, 下标都被 $_2
类似的形式包含在内, 无法搜索. 假如能够让 \Ce{H2O}
类似的内容保留下来的话, 就能达到既搜索化学式, 也能正确输出最终效果的目的. 对于这样的功能, 只能使用自带的脚本功能了.
这部分内容写的时候是按照 JavaScript
语言语法来写的, 我自己用的内容如下所示
if (Translator.BetterTeX && entry.has.title) {
let newTitle = item.title.replace(/(\\(\w+)\{(\w+)\})/g, '<script>$1</script>')
newTitle = newTitle.replace(/(\$\w+\$)/g, '<script>{$1}</script>')
entry.add({ name: 'title', value: newTitle});
}
把用美元符号和反斜杠的命令都替换成为保护的版本了, 目前自己使用下来没有问题.
一些其它参考