markmind插件实现pdf中添加标签不成功,代码问题看不懂,求教

请仔细说明自己遇到的问题,以下是参考模板。这里不要求非得按模板发帖,但内容中包含相关要素能让大家更好地帮助你。


遇到的问题

obsidian版本1.3.7,markmind和quickadd,template插件版本均最新(2023年8月22日左右更新),win10系统。
大家好,求教,我因为平时有阅读pdf文献的需求,所以想通过obsidian来对pdf文件做批注,并且能对我感兴趣的地方打标签,这样方便我后续通过标签直接定位到对应的pdf区域,而且可以把不同pdf相同的标签内容整合到一个笔记进行学习。找了知乎 基于Obsidian的pdf阅读、标注,构建笔记思维导图,实现笔记标签化、碎片化,便于检索和跳转 - 知乎 (zhihu.com)这个方法,因为时间太久了,可能有很多代码现在功能不适配,没学过编程,所以一直试不出来,就第一部分磕磕绊绊试出来发现是多了一行代码,但是第二部分想实现pdf里面加入标签始终失败,提示的错误(1.quickadd:(error)unable to append " to current line. 2.quickadd: (ERROR) Error: template syntax error: Invalid or unexpected token)。

用到的代码各位帮忙看看是哪里不合适(也就是知乎帖子里面第2.3.3配置部分的capture1和capture2的代码),实在是没办法了,谢谢各位的帮忙,第一次发帖,如果需要什么补充信息随时说。

仔细叙述你的问题。最好附上自己使用的 Obsidian 版本及环境。

预期的效果

预期实现b站这个视频里的效果: 基于Obsidian的pdf阅读、标注,构建笔记思维导图,实现笔记标签化、碎片化,便于检索和跳转_哔哩哔哩_bilibili

已尝试的解决方案

尝试了换为旧版的插件,但是也没有实现,通过最后试出来知乎帖子2.1的效果的过程中,我发现代码需要变动,之前 ```
out_str = “—” + nl + nl + "annotate-target: " + str_clip + nl

  • “annotate-type: pdf” + nl + “—” + nl;```打不开文件,后面改为了out_str = “—” + nl + nl + "annotate-target: " + str_clip + nl+ “—” + nl;才可以,但是第二个加标签的功能我也尝试去理解代码(部分如下,全部代码在知乎帖子中的2.3.3配置部分),因为错误提示是quickadd: (ERROR) Error: template syntax error: Invalid or unexpected token,我理解是搜不到定义的信息,但这里的const regex1和const regex2我在obsidian的markdown或者源码格式里都找不到这个信息,也不知道怎么去理解,希望大佬能帮我解释一下,或者教教我可能的解决方法,要是有更好的给pdf内容加批注和标签的方法我也可以学习。再次感谢大家!

const regex1 = /[\x5d][\x28][o][b][s][i]/;
const regex2 = /[p][d][f][\x26][a][n]/;
const a = str_clip1.search(regex1);
const b = str_clip1.search(regex2);
str_pdflink = str_clip1.substring(a+2,b-1); // pdf文件路径
str_anno_id = str_clip1.substring(b+13,str_clip1.length-1); //注册块id

说实话, 该教程用了这么多工具, 其实有点脆弱…
这堆工具和脚本但凡有一个挂了, 整个链条又得改


具体到楼主这问题

主要关心 2.3.3 配置部分的capture1和capture2的代码
quickadd:(error)unable to append " to current line.
quickadd: (ERROR) Error: template syntax error: Invalid or unexpected token

第一个错, 看上去是没能取得该有的字符串 ('' 里是空值, 似乎不应该)

第二个错, 模板填充时报错, 但精确的报错关键词我没能搜到, 大概率 Templater 模板设置的事, 小概率 quickadd 调用的事

const regex1和const regex2我在obsidian的markdown或者源码格式里都找不到这个信息,也不知道怎么去理解

这俩是用来匹配+提取当前剪切板里的文字的, 你看他前面有一句 let str_clip1 = await this.quickAddApi.utility.getClipboard(); 就是指的这个 str_clip1


实在看不明白

需要更明确的步骤 / 报错 (原样复制报错, 粘贴在代码块里, 现在主楼这样子的排版, 看着太费劲了) 才有可能解决

另外, 可以把原教程的 console.log() 都打开, 能多看些信息