关于反链整理,仍需改进的几个点

本贴最后更新于 759 天前,其中的信息可能已经时移世异

首先,很欣喜 2.3.0 带来了期待已久的编辑器式反链面板,相关的大部分需求都实现了,感谢 D 和 V。但还有几个比较重要的点还未实现,在此我再列出一下我的想法建议,也想听听大家的意见。

  1. 我在 https://github.com/siyuan-note/siyuan/issues/3565#issuecomment-1139301877 里提到目前的引用块无法保留其原文的格式,在 2.2.0 实现了行级嵌套文本格式后,这点缺陷显得更加突出,当然,文本内的公式、图片等等也无法被保留,列表子块也无法被保留。这就使得反链整理汇总后能看到的只有一堆链接状的锚文本,还得鼠标移到锚文本上才能看到原文的排版格式。这样一来,反链整理仅仅只是做了链接的整理,而非内容本身的整理,并未达到“反链即正文”的效果。Issue #4830 · siyuan-note/siyuan 也提到了同样的问题。

    即便对引用块使用转换为“文本 *”,仍然无法保留原始文本格式,转换后的锚文本成了没有任何格式的纯文本,并且同样不会包含列表子块。刚刚新增的转换为“定义块”和“定义块及其子块”的功能倒是可以实现保留原始文本格式和所有的子块,希望这两个功能项可以整合下,即转换为“文本 *”的时候(当然也包括转换为文本、静态锚文本),转换后的文本能够像转换为定义块那样保留原始格式。从形式上来说,这其实就相当于 Ctrl+C、Ctrl+V 然后再加一个星号锚文本,当然,这里要考虑是否包含列表块子块。

  2. 目前的反链交换功能无法处理原始素材多版本化、多副本整理的情形,我在 特性提议:块引用与所引用的内容块进行交换 - mowangmm 的回帖 里有详细举例。简单来说,一段内容,我用传递型双链同时链接了 A 和 B 两个主题,然后当我在整理 A 时,使用反链交换把原文置换到了 A 里,而在素材录入处(比如 daily notes)留下了指向 A 的引用块。此时当我再想整理 B 的时候,可就麻烦了,因为在整理 A 的时候,经过一系列拖拽、置换操作,传递型双链很可能已经丢失了(因为是传递型,整理的时候只会拿它下面的内容),那这时候 B 怎么知道要去 A 里找素材呢?就算知道,难道 B 要再跟 A 来一次置换吗?

    其实会看反链交换这个功能需求最初提出的背景,就不难看出正是因为引用块锚文本没法保留原始格式,所以才想到要不直接把原文置换过来,如果锚文本可以保留原始格式,那是不是就不需要置换了?而且目前的置换操作还会导致整个 UI 要刷新,体验不好。所以这个问题的解决办法跟上一条是一样的。

  3. 既然目前已经有按 Alt 键拖拽为引用块、按 Shift 键拖拽为嵌入块,那么能否增加一个快捷键可以直接拖拽为“文本 *”形式?否则还得先拖拽为引用块,再用右键菜单转换为“文本 *”,操作起来就比较麻烦了。

引用块本身就不适用于大段文字,它更多是作为短语、短句跟相关的参考信息之间建立链接用的,并且引用块和行内引用其实是一码事,所以引用块应当更适用于传递型双链和关联型双链。如果把引用块作为反链整理的排版形式,那显然是不合适的。反链整理的过程就像写论文的过程,素材本身就是那一个个“参考”,所以最舒适的排版形式还是“文本 *”。

  • 思源笔记

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

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

    22026 引用 • 87851 回帖 • 4 关注

相关帖子

欢迎来到这里!

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

注册 关于
请输入回帖内容 ...
  • 我还是没太理解你的意思,估计你得直接帮忙整理下需求,不用考虑实现,谢谢。

    1 回复
  • 其他回帖
  • mowangmm

    对的对的,就是这个意思,感谢

    不确定是否需要像转换为定义块功能那样区分带子级和不带子级,反正我自己的使用习惯是都带子级。

    另外,演示动图里“原始定义”四个字在反链面板里是带链接的锚文本形式,所以复制到输出文档后可以直接在锚文本上转换为文本 *;但我说的需求里,复制过来的时候可能不是锚文本,类似于直接从“一些补充和素材”这级开始复制(传递型双链的用法),这时候就不能直接使用转换为文本 *,所以我才说得手动在后面创建一个星号。这个区别需要考虑进去。

    1 回复
    2 操作
    mowangmm 在 2022-10-09 14:12:30 更新了该回帖
    mowangmm 在 2022-10-09 14:09:20 更新了该回帖
  • 当 反向链接 的数量为 0、提及的数量大于 0 的时候,

    提及这个板块,默认是从编辑器的中间开始显示的,而反向链接问部分是空的。于是上面的空间都浪费了。

    可否这样:

    (1)当反链接板块中的文字的显示长度小于某个值的时候,提及 部分自动贴上去?

    (2)或者简单一点,当 反向链接 的数量为 0 的时候,提及 部分自动贴上去?

    (3)建议,当 反向链接 的数量为 0 的时候,在 反向链接 几个字后面显示数字 0

    image.png

  • mowangmm

    @88250 我刚看了下目前的反链面板里,如果选了多个同级块,右键菜单里也是不会再有复制为引用块了,也就是说逻辑上限制复制为引用块操作时不允许选择多个同级块。

    image.png

    如果强行 Alt+ 拖拽操作,也只会建立第一个块的引用。

    image.png

    所以我觉得这个逻辑应该是统一的,比较类似于我上面说的第 2 种思路。

    另外我试了下目前的多选貌似是不会有我上面说的选择 bb 和 B 的情况,如果选择 bb 和 B,那么会直接把整个 A 也都选上,于是变成了选择 A 和 B。这个逻辑我估计也没法打破了。

    image.png

    1 回复
  • 查看全部回帖

推荐标签 标签

  • Vditor

    Vditor 是一款浏览器端的 Markdown 编辑器,支持所见即所得、即时渲染(类似 Typora)和分屏预览模式。它使用 TypeScript 实现,支持原生 JavaScript、Vue、React 和 Angular。

    346 引用 • 1801 回帖 • 3 关注
  • AngularJS

    AngularJS 诞生于 2009 年,由 Misko Hevery 等人创建,后为 Google 所收购。是一款优秀的前端 JS 框架,已经被用于 Google 的多款产品当中。AngularJS 有着诸多特性,最为核心的是:MVC、模块化、自动化双向数据绑定、语义化标签、依赖注入等。2.0 版本后已经改名为 Angular。

    12 引用 • 50 回帖 • 474 关注
  • HTML

    HTML5 是 HTML 下一个的主要修订版本,现在仍处于发展阶段。广义论及 HTML5 时,实际指的是包括 HTML、CSS 和 JavaScript 在内的一套技术组合。

    107 引用 • 295 回帖
  • 微软

    微软是一家美国跨国科技公司,也是世界 PC 软件开发的先导,由比尔·盖茨与保罗·艾伦创办于 1975 年,公司总部设立在华盛顿州的雷德蒙德(Redmond,邻近西雅图)。以研发、制造、授权和提供广泛的电脑软件服务业务为主。

    8 引用 • 44 回帖 • 1 关注
  • Webswing

    Webswing 是一个能将任何 Swing 应用通过纯 HTML5 运行在浏览器中的 Web 服务器,详细介绍请看 将 Java Swing 应用变成 Web 应用

    1 引用 • 15 回帖 • 619 关注
  • RESTful

    一种软件架构设计风格而不是标准,提供了一组设计原则和约束条件,主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。

    30 引用 • 114 回帖 • 1 关注
  • 深度学习

    深度学习(Deep Learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。

    52 引用 • 40 回帖 • 1 关注
  • 导航

    各种网址链接、内容导航。

    39 引用 • 170 回帖 • 5 关注
  • GitLab

    GitLab 是利用 Ruby 一个开源的版本管理系统,实现一个自托管的 Git 项目仓库,可通过 Web 界面操作公开或私有项目。

    46 引用 • 72 回帖
  • 以太坊

    以太坊(Ethereum)并不是一个机构,而是一款能够在区块链上实现智能合约、开源的底层系统。以太坊是一个平台和一种编程语言 Solidity,使开发人员能够建立和发布下一代去中心化应用。 以太坊可以用来编程、分散、担保和交易任何事物:投票、域名、金融交易所、众筹、公司管理、合同和知识产权等等。

    34 引用 • 367 回帖
  • danl
    129 关注
  • Hexo

    Hexo 是一款快速、简洁且高效的博客框架,使用 Node.js 编写。

    21 引用 • 140 回帖 • 7 关注
  • Git

    Git 是 Linux Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。

    209 引用 • 358 回帖
  • HBase

    HBase 是一个分布式的、面向列的开源数据库,该技术来源于 Fay Chang 所撰写的 Google 论文 “Bigtable:一个结构化数据的分布式存储系统”。就像 Bigtable 利用了 Google 文件系统所提供的分布式数据存储一样,HBase 在 Hadoop 之上提供了类似于 Bigtable 的能力。

    17 引用 • 6 回帖 • 71 关注
  • WebSocket

    WebSocket 是 HTML5 中定义的一种新协议,它实现了浏览器与服务器之间的全双工通信(full-duplex)。

    48 引用 • 206 回帖 • 347 关注
  • OAuth

    OAuth 协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式不同之处是 oAuth 的授权不会使第三方触及到用户的帐号信息(如用户名与密码),即第三方无需使用用户的用户名与密码就可以申请获得该用户资源的授权,因此 oAuth 是安全的。oAuth 是 Open Authorization 的简写。

    36 引用 • 103 回帖 • 1 关注
  • InfluxDB

    InfluxDB 是一个开源的没有外部依赖的时间序列数据库。适用于记录度量,事件及实时分析。

    2 引用 • 63 关注
  • 链书

    链书(Chainbook)是 B3log 开源社区提供的区块链纸质书交易平台,通过 B3T 实现共享激励与价值链。可将你的闲置书籍上架到链书,我们共同构建这个全新的交易平台,让闲置书籍继续发挥它的价值。

    链书社

    链书目前已经下线,也许以后还有计划重制上线。

    14 引用 • 257 回帖
  • Scala

    Scala 是一门多范式的编程语言,集成面向对象编程和函数式编程的各种特性。

    13 引用 • 11 回帖 • 126 关注
  • PWL

    组织简介

    用爱发电 (Programming With Love) 是一个以开源精神为核心的民间开源爱好者技术组织,“用爱发电”象征开源与贡献精神,加入组织,代表你将遵守组织的“个人开源爱好者”的各项条款。申请加入:用爱发电组织邀请帖
    用爱发电组织官网:https://programmingwithlove.stackoverflow.wiki/

    用爱发电组织的核心驱动力:

    • 遵守开源守则,体现开源&贡献精神:以分享为目的,拒绝非法牟利。
    • 自我保护:使用适当的 License 保护自己的原创作品。
    • 尊重他人:不以各种理由、各种漏洞进行未经允许的抄袭、散播、洩露;以礼相待,尊重所有对社区做出贡献的开发者;通过他人的分享习得知识,要留下足迹,表示感谢。
    • 热爱编程、热爱学习:加入组织,热爱编程是首当其要的。我们欢迎热爱讨论、分享、提问的朋友,也同样欢迎默默成就的朋友。
    • 倾听:正确并恳切对待、处理问题与建议,及时修复开源项目的 Bug ,及时与反馈者沟通。不抬杠、不无视、不辱骂。
    • 平视:不诋毁、轻视、嘲讽其他开发者,主动提出建议、施以帮助,以和谐为本。只要他人肯努力,你也可能会被昔日小看的人所超越,所以请保持谦虚。
    • 乐观且活跃:你的努力决定了你的高度。不要放弃,多年后回头俯瞰,才会发现自己已经成就往日所仰望的水平。积极地将项目开源,帮助他人学习、改进,自己也会获得相应的提升、成就与成就感。
    1 引用 • 487 回帖 • 4 关注
  • 互联网

    互联网(Internet),又称网际网络,或音译因特网、英特网。互联网始于 1969 年美国的阿帕网,是网络与网络之间所串连成的庞大网络,这些网络以一组通用的协议相连,形成逻辑上的单一巨大国际网络。

    98 引用 • 344 回帖
  • Postman

    Postman 是一款简单好用的 HTTP API 调试工具。

    4 引用 • 3 回帖 • 3 关注
  • Hibernate

    Hibernate 是一个开放源代码的对象关系映射框架,它对 JDBC 进行了非常轻量级的对象封装,使得 Java 程序员可以随心所欲的使用对象编程思维来操纵数据库。

    39 引用 • 103 回帖 • 706 关注
  • ZeroNet

    ZeroNet 是一个基于比特币加密技术和 BT 网络技术的去中心化的、开放开源的网络和交流系统。

    1 引用 • 21 回帖 • 637 关注
  • 持续集成

    持续集成(Continuous Integration)是一种软件开发实践,即团队开发成员经常集成他们的工作,通过每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。

    15 引用 • 7 回帖 • 1 关注
  • VirtualBox

    VirtualBox 是一款开源虚拟机软件,最早由德国 Innotek 公司开发,由 Sun Microsystems 公司出品的软件,使用 Qt 编写,在 Sun 被 Oracle 收购后正式更名成 Oracle VM VirtualBox。

    10 引用 • 2 回帖 • 11 关注
  • React

    React 是 Facebook 开源的一个用于构建 UI 的 JavaScript 库。

    192 引用 • 291 回帖 • 399 关注