思源笔记丨用块引实现脚注和备注

Github:Achuan-2/siyuan-plugin-blockref-footnote: 用块引实现脚注备注

✨ 功能

使用思源的块引实现脚注和备注功能

使用 Tsundoku 主题演示,对嵌套引述块样式进行了优化

📝 使用介绍

插件需要思源笔记版本 >3.1.12

本插件支持高度自定义化,支持的设置如下:

  • 脚注存放位置:可以设置存放在当前文档或者指定文档,默认为 当前文档

  • 选中文本的样式:可以为选中文本添加加粗、高亮、斜体、下划线样式,默认:无样式

  • 插入脚注的顺序:顺序或者倒序,默认:顺序

  • 脚注标题:设置存放脚注的标题名,默认:脚注

  • 脚注块引锚文本:设置脚注引用的锚文本,默认:

  • 脚注内容模板:设置脚注的模板,推荐使用引述块或超级块组合,保证脚注内容属于同一个块。 ${selection} 表示选中文本的内容,${content} 代表脚注内容占位

    • 嵌套引述块模板

      >> ${selection}
      >> 
      > 💡${content}
      
    • 竖向超级块组合模板

      {{{row
      > ${selection}
      
      ${content}
      }}}
      

支持同时删除脚注引用和脚注内容,可以在脚注引用右键菜单,点击【插件-删除脚注】

🙏 致谢

❤️ 用爱发电

穷苦研究生在读ing,如果喜欢我的插件,欢迎给 GitHub 仓库点 star 和捐赠,这会激励我继续完善此插件和开发新插件。

  • 思源笔记

    思源笔记是一款隐私优先的个人知识管理系统,支持完全离线使用,同时也支持端到端加密同步。

    融合块、大纲和双向链接,重构你的思维。

    22290 引用 • 89154 回帖 • 1 关注
1 操作
Achuan-2 在 2024-11-19 12:49:35 更新了该帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • Achuan-2

    要数字编号,暂时可以通过对脚注内容块进行命名,把脚注引用变为动态锚文本来实现

    PixPin20241118185457.png

    之后我会尝试下让插件有一键转换数字脚注的功能

  • 赞,看效果很不错

  • Achuan-2

    把有脚注的文档导出为模板(即 kramdown 格式),写了个 js 可以把这个模板内容变为脚注数字编号,不过目前由于这个原因,/api/block/getBlockKramdown 支持导出 span 元素样式 · Issue #13183 · siyuan-note/siyuan 还得之后再集成到插件功能里去

    转化前

    PixPin20241118200658.png

    转化后

    PixPin20241118200646.png

    function processkramdown(kramdownText) {
        // 使用正则表达式匹配所有的脚注块引,不考虑data-subtype和span的文本内容
        const footnoteRegex = /<span data-type="block-ref sup"[^>]*data-id="([^"]+)"[^>]*>[^<]*<\/span>{: style="--memo: 1"}/g;
        let match;
        const ids = [];
      
        // 提取所有的data-id并记录第一次出现的顺序
        while ((match = footnoteRegex.exec(kramdownText)) !== null) {
            const id = match[1];
            if (!ids.includes(id)) {
                ids.push(id);
            }
        }
    
        // 更新脚注块引中的内容为对应的序号,并修改data-subtype为"d"
        let processedkramdown = kramdownText.replace(footnoteRegex, (match, id) => {
            const index = ids.indexOf(id) + 1; // 获取序号
            return `<span data-type="block-ref sup" data-subtype="d" data-id="${id}">${index}</span>{: style="--memo: 1"}`;
        });
    
        // 更新被引用的块的命名
        ids.forEach((id, index) => {
            const blockRegex = new RegExp(`({: id="${id}"[^}]*)}`, 'g');
            processedkramdown = processedkramdown.replace(blockRegex, `$1 name="${index + 1}"}`);
        });
    
        return processedkramdown;
    }
    
    // 导出为模板的内容
    const kramdownText = `
    ...
    `;
    
    // 处理Markdown文本
    const processedkramdown = processkramdown(kramdownText);
    console.log(processedkramdown);
    
    
  • syuer9528

    原来那个备注增强不能用了不知道为什么可能是更新了之后 API 有变动吧。

  • syuer9528

    安装后工具条上没有按钮,同时集市界面中也没有设置按钮

    主题:ASRI,默认均如此。

    image.png

    image.png

    1 回复
  • Achuan-2 1 赞同

    要用思源笔记 3.1.12dev 版本

    插件添加工具栏的 api 有变动,我用了最新的 api,不适配旧版本

    1 回复
    1 操作
    Achuan-2 在 2024-11-18 22:17:29 更新了该回帖
  • syuer9528

    原来如此,感谢!

    1 回复
  • Achuan-2

    你试了 dev 版本了吗,我自己在本地测试应该是没有什么问题的

    很奇怪我明明设置了最低版本是 3.1.12,但是你用低版本还能开启插件

    1 回复
  • 太好了,脚注也有基于思源的快捷解决方案了trollface

  • 还没用上 dev,但看效果非常牛

  • Achuan-2

    @participants

    支持对同一个文本进行多次备注了

    思源笔记脚注插件支持对同一个文本进行多次备注.gif

  • YRJ0422

    增强备注的 plus 版本,太强了

    1 回复
  • Achuan-2 1 赞同

    站在大佬肩上更进一步哈哈,而且备注增强主要是备注,我这个更倾向于脚注,场景还是不一样的

  • syuer9528

    由于我用的 MS STORE 里的版本所以暂时还未。是不是快要升级 3.1.12 了……❤️

    哈哈刚看到已经有 3.1.12 了!

    明天 MS STORE 的应该也能用了!

    1 操作
    syuer9528 在 2024-11-19 22:55:50 更新了该回帖
  • stevehfut

    docker 端好像无法弹出那个设置脚注后的窗口,由于环境不干净(docker 端不方便新建工作空间),可能是插件和其他代码有冲突。

    1 回复
  • Achuan-2

    设置界面我是用的插件模板,应该没问题才对

    你可以看看有没有报错

    1 回复
  • YRJ0422

    川佬把 添加直角引用 那个插件也上架吧,感觉稍微修一下就行了

    1 回复
  • Achuan-2

    周末上架吧 ,搞一个配置项,可以设置是添加直角引号还是双引号

请输入回帖内容 ...
Achuan-2
给时间以生命而不是给生命以时间,如果你喜欢我的分享,欢迎给我买杯咖啡 https://www.yuque.com/achuan-2 上海