思源笔记文献引用插件 siyuan plugin citation
思源笔记也可以快捷插入参考文献啦,还能方便导出为 Word(这个需要后续继续开发),在 Word 中还能增、改、删参考文献
还能导入 zotero 中的笔记到思源笔记中
视频链接 https://www.bilibili.com/video/BV17u411j79z/
背景音乐:他 - 斯丹曼簇
大家好,又见面了,老样子,还是没有配音的分享~~~
之前乱侃过一些帖子,
【乱侃】使用 markdown 软件 +zotero 进行学术写作的一些经验 - 链滴 总结就是 markdown 类笔记软件中插入 zotero 之类的的文献引用有一下几种方式:
- 方法 1:调出 zotero 自身界面,获得 citation key;【siyuan-plugin-citation v0.0.5 已支持】
- 方法 2:直接连接 zotero.sqlite 库,获得 citation key;【siyuan-plugin-citation IS COMING】
- 方法 3:zotero 中导出一个“Better CSL JSON 格式”文件,并保持更新;【siyuan-plugin-citation v0.0.5 已支持】
- 方法 4:使用 quicker 动作或者手动复制粘贴、敲键盘输入 citation key;【和今天主题无关】
zotero 联合 markdown 软件 - 以思源笔记为例 暨 Pandoc 转换 markdown 为 Word - 链滴
Pandoc 通过 citation key 转换 markdown 文档为 Word,在 Word 中还能增、改、删 zotero 参考文献
今年(2023 年)思源笔记引入了“插件”机制,最近有大佬开发了一个方便插入参考文献到思源笔记的插件 WingDr/siyuan-plugin-citation: A citation plugin for the SiYuan Note.
我以思源笔记 v2.9.4 + zotero v6 为基础展示一下上述**“方法 1”的工作流**,分享一下经验,抛砖引玉
- 【必装】BBT 插件,这是 zotero 的插件:Better BibTeX for Zotero,维护 citation key,相当于这篇文献在你文献库里面的身份证号,一般定义为“wang2020”这样的形式;
- 【可选,但是建议安装】zotero-better-notes:windingwind/zotero-better-notes: Everything about note management. All in Zotero.:这个插件用于生成、维护 这种链接,比如,,后面有展示用途
插件官网上不去的,来这个地方找一下:
zotero-plugins-market: 到 Zotero 插件市场,找到你需要的插件。
这是我 zotero 环境展示:
zotero--编辑--首选项--Better BibTeX--Open Better BibTeX preferences...--Citation keys--Citation key formula [auth:lower][year]
安装 siyuan-plugin-citation 插件
思源笔记--设置--集市--插件--文献写引用 siyuan-plugin-citation
(题外话:图标炫不炫?我感觉很有科研那个意思:像一个啄木鸟一样硬肯,不断扩充人类知识的边界,那个 C 型,更有编程(C 语言)的意味。不过据开发者自己透露,只是网上查了一下“citation”的图标,然后看见这个就觉得特别经验,一看应该没有版权问题,就用上了)
siyuan-plugin-citation 插件设置
笔记本
:对应着思源笔记文档树中的笔记本,只能下拉选择,假设我选择了一个名叫“文献阅读”的笔记本;- 鼠标悬浮在思源笔记文档树“文献阅读”的笔记本上,出现三个点和一个加号,点击加号,新建子文档,这个子文档命名成任何名字,不过尽量和其它同级别的子文档名字不一样,比如“MyReferences”。目前目录树的部分结构是:“文献阅读”→ “MyReferences”(注意真实名字中没有双引号);
文献库路径
:路径以“/”开头,例如“/References”,因为我前面设置中是“MyReferences”,所以此处我填写的是“/MyReferences”(注意,不要双引号);- 如果在步骤 2 中是多层目录(个人不建议),比如:“文献阅读”→ “大学文献”→“MyReferences”,那么在步骤 3 中填写应该是“/大学文献/MyReferences”(注意,不要双引号),依次类推,(可以考虑基于某篇文献新建一个路径,但是不建议)。
- 刚才忘了,这次“数据库类型”选择用“zotero”(此处取决于前面的方法 1 工作流)
打开“开发者模式”,“引用模板”填写 [@{{citekey}}](({{citeFileID}} "↟"))
:[@{{citekey}}]
用于后续 markdown 转为 Word 使用;(({{citeFileID}} "↟"))
这一部分是在思源笔记中作为一个双向链接的锚点,citeFileID
是类似 20230708205914-7jc99im
这样的思源块 ID,“↟”仅仅是一个锚点文本,你可以定义一个 markdown 不常用、在你文章也不常出现的字符或字符串,尽量短【目前推荐“↟”这个配置,不过可能在一些编辑器中不能正常显示这个字符,参考 UTF-8 箭头 | 菜鸟教程 】;
[@{{citekey}}](({{citeFileID}} "↟"))
-
后期如果插件作者搞好了导出为 Word 那部分功能,可能就不需要打开“开发者模式”了,到时候看情况吧;
-
目前(citation v0.0.5)下面这两种模式是等价的(效果完全相同)(仅供喜欢折腾的友友参考,如果不喜欢折腾,直接抄前面作业就行):
-
关闭开发者模式,“引用模板”填写
({{shortAuthor}} {{year}})
; -
打开“开发者模式”,“引用模板”填写
(({{citeFileID}} '({{shortAuthor}} {{year}})'))
(插件 v0.0.5,单引号)、(({{citeFileID}} "({{shortAuthor}} {{year}})"))
(插件后续版本可能要修改为在“关闭开发者模式”时,使用双引号,单引号、双引号主要是涉及到在思源笔记中的一些问题,目前不用过分关注),此处最外层的两个括号是思源笔记中双向链接的语法;((20230709090634-ut8c2kw "( 2019)")),中文作者参考文献(中文文献处理可能还得优化一下,可能是我自己设置问题)
((20230709090655-p957u07 'einstein1922')),英文作者参考文献,没有问题
-
刚才白色间隙,表明是不同的笔记块(视频配的说明)
文献内容模板,自己编辑就好,那些空行是有必要的,保证导出的文献档案在思源笔记中是多个块,而不是一个块
### {{authorString}},{{year}}
---
Author: {{authorString}}
Year: {{year}}
Title: {{title}}
---
#### Abstract
{{abstract}}
#### 文献源
[zotero]({{zoteroSelectURI}})
[HTTP]( {{URL}})
DOI: {{DOI}}
#### Files
{{files}}
#### Note
{{note}}
### 其它变量效果
citekey:{{citekey}}
authorString:{{authorString}}
containerTitle:{{containerTitle}}
eprint:{{eprint}}
eprinttype:{{eprinttype}}
eventPlace:{{eventPlace}}
page:{{page}}
publisher:{{publisher}}
publisherPlace:{{publisherPlace}}
titleShort:{{titleShort}}
插件的一些参数(插件 readme 里面的,随着插件开发,可能会有改变)
参考:siyuan-plugin-citation/README_zh_CN.md at main · WingDr/siyuan-plugin-citation · GitHub
在文献内容和引用的模板中可以使用如下变量,但是请注意,zotero 中条目信息一般不是都有这些参数的,一些字段会缺失,比如很多没有短标题:
- {{citekey}}:文献的唯一标识,建议用zotero的better biblatex插件生成
- {{abstract}}:摘要
- {{authorString}}:所有作者按顺序排列的字符串
- {{containerTitle}}:文献所在刊物(论文集、期刊等)标题
- {{DOI}}:文献的DOI
- {{eprint}}:预印本
- {{eprinttype}}:预印本类型
- {{eventPlace}}:(会议等)地点
- {{page}}:页码
- {{publisher}}:出版商
- {{publisherPlace}}:出版商所在地
- {{title}}:标题
- {{titleShort}}:简写标题,很多文献不存在间歇标题
- {{URL}}:文献的访问网址
- {{year}}:文献的发表年份
- {{files}}:文献的附件
- {{zoteroSelectURI}}:可以直接跳转到Zotero对应的条目
- {{note}}:在Zotero中做的笔记,其中的链接支持直接跳转到Zotero
此外,在引用链接中还可以使用下面的变量:
- {{shortAuthor}}:按照IEEE格式(大概)生成较短的作者字符串,例如`Lin and Morse et al.`
- {{citeFileID}}:文献内容文档在思源内部的ID,用于辅助生成引用链接或者外链,例如 `20230707192208-ocs4482`
设置好之后,重新启动一下思源笔记:配置“文献库路径”之后,需要重启思源笔记,否则会提醒“文献库路径不存在”
建议关闭“思源笔记--设置--编辑器--悬停出现浮窗”:启用后鼠标悬停块引、面包屑块标等位置会出现浮窗,关闭后需按住 Ctrl
键才会出现浮窗,如果文章里面块引太多,鼠标划过笔记,就会卡顿。
如果插入文献时,citation 插件有“Zotero 没有在运行”的弹窗,重启思源笔记试试(如果还有这个弹窗,再次重启思源笔记,这个 bug 原因不知道,可能和软件权限之类有关(瞎猜))
【使用效果】
/add
唤起插件
【很多内容是做视频留下的,懒得删了】
你觉得这个背景音乐咋样?
哈哈哈,忘了启动 zotero
[@kongzi2021]((20230709193210-j9vtkzb "↟"))认为你需要给这个视频一键三连
[@einstein1922]((20230709193210-v6u0gnn "↟"))认为,如果可以的话,可以请开发者喝一杯奶茶,为他加油
你觉得呢?
[@sunweimin2013]((20230709193210-nk9mxxk "↟"))[@robertson1949]((20230709193210-vj08di9 "↟"))[@kongzi2021]((20230709193210-j9vtkzb "↟"))认为,如果可以的话,可以请开发者喝一杯奶茶,为他加油
[@robertson1949]((20230709193210-vj08di9 "↟"))这里是个小树锚文本(向上双箭头,寓意天天向上,好事成双)
刚才看到 zotero 中,这个父条目下有 5 个子笔记,和这里的 note No.x 是对应的,并且点击,可以跳转到 zotero
[@hanbingzhe2019]((20230709193210-lyv0fpz "↟"))
[@hanbingzhe2019]((20230709193210-lyv0fpz "↟"))
成功更新 hh
在被引文献文档上查看哪个地方引用了这篇文献(展现思源笔记双链的用途)
刚才插入有个小 bug,我回头反馈一下,就是这个 bug,果然是个 bug,add 模式没有问题,但是鼠标点选可能有问题
目前有一个已知 bug,可能是思源笔记自身的,也可能是 citation 插件的,正在排查:
- 插入一篇文献之后,再次输入斜杠准备插入第二篇时,然后锚文本被吞掉了;
- 插入一篇文献之后,空格 +back 或者向左按钮 + 向右按钮(也就是一对相反操作)之后,再输入斜杠,插入文献没有问题(刚才就是触发了 bug,把小树苗吞了,解决方案在这里)
- 或者使用
/add
模式,这个模式不会触发这个 bug
转换为 Word:目前插件转换为 Word 的功能还在开发中,我之前写过一个格式化期刊文章的方法,可以参考思源笔记格式化成期刊文章,注意,此处需要设置“思源笔记设置--导出--引用--设置为:仅锚文本”,导出到 markdown,然后再转换
需要注意的是,导出为 Word 之后,在 Word 中先把前面那个“↟”锚文本批量删去(替换为空就行),这样对于那种“一个知识点多篇文献”的地方才能正确转换
在 Word 中还能增、改、删参考文献
[@citationkey]
更详细的用法参考 有些时候需要手动修改一下格式
小细节
插入时,zotero 窗口如果没有来到桌面顶端,手动点击一下 windows 系统任务栏第二个 zotero 图标即可来到最上层。
zotero 两种窗口模式:zotero 编辑--首选项--引用--文档编辑软件--使用经典版“添加引注”对话框
- 传统的大窗口(“经典版‘添加引注’对话框”)
- 新的小窗口
注意事项:
你有注意到思源笔记文档树有什么变化吗?
插入了一些新文档,这些文档都是根据“文献内容模板”生成的,
-
插件插入参考文献的过程:
-
当第一次插入某篇文献 A 之后,会按照插件设置中“文献内容模板”,生成这篇文献的“档案”,文档名是这篇文献的 citation key,v0.0.5 版 将文献的索引方式从文档标题变为文档命名(思源笔记的一个概念,在块属性里面),现在标题可以自定义了,也就是,v0.0.5 版起,citation key 放到文档名块属性的“命名”中,把文档名让权给用户(即,允许用户编辑文档名)(文档名属于显性元素,面向人,让出来给用户的话,用户可以手动命名文档名,如果有查找需求的话,下次也可以直接浏览思源笔记的文档树、查找笔记;命名和 citation key 这些 隐性的、晦涩难懂、不能修改,但是唯一的,留给软件,这是软件擅长的);
-
当第二次及之后插入文献 A,文献 A“档案”文档名块 ID 是不变的,但是文献 A“档案”文档内容的块 ID 在每次重新插入这篇文献时都会更新,并且保持和 zotero 中的信息一致;
20230709105925-2oqs4xx
,20230709105925-s1ixeb4
我们再次插入这篇文献,查看 ID 是否变化
20230709105925-2oqs4xx
,20230709110310-wl79xnb
这就是文献 A“档案”文档名块 ID 是不变的,但是文献 A“档案”文档内容的块 ID 在每次重新插入这篇文献时都会更新,
-
citation 插件更改文献引用就是依靠
文献A“档案”文档名块ID
(底层技术就是思源笔记的双链),所以目前(citation v0.0.5)除了文档名,不要手动修改插件生成的 /MyReference 下面那些文档,如果你删除了一篇,那么点击引用这篇文献的地方,思源笔记就会出现“未找到 ID 为 [20230708230706-ylq9g5s] 的内容块 v2.9.4”的错误弹窗;我们试一下 -
citation 插件有计划在文献档案下面留一片“自留地”,允许用户在“自留地”写东西,并且更新时不受影响,目前还没搞定,期待发展;
-
-
插件有部分数据(插件设置)存储在
[思源笔记工作空间]/data/storage/petal/siyuan-plugin-citation
,不要删除; -
面前 zotero 7 beta17 版本的插入还是有点问题的(在 obsidian 那边也会有问题,个人认为是 zotero 的问题,只能等 zotero7 正式版了);
IS COMING
- 目前插件还无法直接带参考文献导出为 Word,不过有支持的计划;
- 直接连接 zotero.sqlite 库(前述的方法 2,我很期待这种方案);
如果可以的话,也可以请开发者喝杯咖啡!,在这里可以找到开发者的二维码哦~~~
(这次没刷新出来,可能是我网络问题,正常是有两个二维码的。)
欢迎来这里提 issue,WingDr/siyuan-plugin-citation: A citation plugin for the SiYuan Note.
最后,如果觉得好用,请动动你的左金右玉大拇指,点赞,投币,关注,毕竟孔子和 Einstein 都一键三连了,谢谢!!!
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于