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

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

首先,很欣喜 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 键拖拽为嵌入块,那么能否增加一个快捷键可以直接拖拽为“文本 *”形式?否则还得先拖拽为引用块,再用右键菜单转换为“文本 *”,操作起来就比较麻烦了。

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

  • 思源笔记

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

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

    22346 引用 • 89411 回帖 • 1 关注

相关帖子

欢迎来到这里!

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

注册 关于
请输入回帖内容 ...
  • 当 反向链接 的数量为 0、提及的数量大于 0 的时候,

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

    可否这样:

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

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

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

    image.png

  • 其他回帖
  • mowangmm 1

    说的是这个星号引用链接到素材原文的哪一级是吧?

    列表情况 1(树形结构且只有一个顶层):

    • A
      • aa
        • 啊啊啊

    这时候如果复制的是 A,那么 * 就链接到 A;如果复制的是 aa 那么就链接到 aa,以此类推。

    列表情况 2(有多个平级):

    • A
      • aa
        • 啊啊啊
      • bb
    • B
      • dd

    这时候如果复制的是 aa 和 bb,那么 * 似乎应该链接到 A,但如果复制的是 A 和 B,它俩没有共同父级了,那么似乎就只能链接到 A。

    这里还存在一个复杂情况就是如果复制的是 bb 和 B,这时候链接到谁似乎都不太合适,而且在目标主题里,* 创建在哪一级后面也是个问题。

    非列表情况:

    AAA

    BBB

    这时候如果复制了 AAA 和 BBB,似乎只能链接到 AAA。

    这样分析下来感觉情况变得很复杂了,我觉得要简单解决的话,目前能想到的有两个思路:

    1. 无论哪种情况,* 都创建在第一个最靠顶层的块后面,链接指向的也是原文中同样的块。也就是说:
      • 列表情况 1,如果复制的是 A,则* 创建在 A 后面,指向原文的 A;aa 同理。
      • 列表情况 2,如果复制的是 A 和 B,则 * 创建在 A 后面,指向原文的 A;aa 和 bb 同理。如果复制的是 bb 和 B,则 * 创建在 B 后面,指向原文的 B。
      • 非列表情况,如果复制的是 AAA 和 BBB,则 * 创建在 AAA 后面,指向原文的 AAA。
    2. 限制划选复制的素材范围,只能有一棵树。即列表情况 2 中,不允许同时选择 A 和 B,或者同时选择 aa 和 bb,或者同时选择 bb 和 B;非列表情况不允许同时选择 AAA 和 BBB。要操作的话必须分开操作多次。这样可以确保 * 反链的创建一定是准确的,只不过会多创建一些,在有快捷键的情况下,一次只能操作一个段落或者一个树形列表应该也不会太麻烦。

    暂时没想到更好的办法,希望能够听听其他人的意见。

    1 操作
    mowangmm 在 2022-10-09 23:52:00 更新了该回帖
  • mowangmm

    可以这样认为,选择一个原始素材(不管是从反链面板选择还是从别的文档中选择,不管选哪一级)进行复制,然后在目标文档中原模原样地粘贴,并在顶层行末尾创建一个*号引用指向原始素材刚才选的那一级

    应该说也不是跟反链完全没关系吧,反链整理算是其中一种使用场景。我举的例子是传递型双链的,所以复制的时候没有带反链本身,但如果是关联型双链,复制的时候就会带上反链本身。总之操作上是一致的,具体用在哪里因人而异

    1 回复
    2 操作
    mowangmm 在 2022-10-09 22:45:18 更新了该回帖
    mowangmm 在 2022-10-09 22:40:15 更新了该回帖
    1. 引用锚文本无法渲染会定义块的原样的
    2. 同上
    3. 不确定是不是高频操作
    1 回复
  • 查看全部回帖

推荐标签 标签

  • JavaScript

    JavaScript 一种动态类型、弱类型、基于原型的直译式脚本语言,内置支持类型。它的解释器被称为 JavaScript 引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在 HTML 网页上使用,用来给 HTML 网页增加动态功能。

    729 引用 • 1327 回帖
  • Hprose

    Hprose 是一款先进的轻量级、跨语言、跨平台、无侵入式、高性能动态远程对象调用引擎库。它不仅简单易用,而且功能强大。你无需专门学习,只需看上几眼,就能用它轻松构建分布式应用系统。

    9 引用 • 17 回帖 • 611 关注
  • 爬虫

    网络爬虫(Spider、Crawler),是一种按照一定的规则,自动地抓取万维网信息的程序。

    106 引用 • 275 回帖
  • 旅游

    希望你我能在旅途中找到人生的下一站。

    90 引用 • 899 回帖
  • Solidity

    Solidity 是一种智能合约高级语言,运行在 [以太坊] 虚拟机(EVM)之上。它的语法接近于 JavaScript,是一种面向对象的语言。

    3 引用 • 18 回帖 • 399 关注
  • JRebel

    JRebel 是一款 Java 虚拟机插件,它使得 Java 程序员能在不进行重部署的情况下,即时看到代码的改变对一个应用程序带来的影响。

    26 引用 • 78 回帖 • 664 关注
  • Firefox

    Mozilla Firefox 中文俗称“火狐”(正式缩写为 Fx 或 fx,非正式缩写为 FF),是一个开源的网页浏览器,使用 Gecko 排版引擎,支持多种操作系统,如 Windows、OSX 及 Linux 等。

    8 引用 • 30 回帖 • 407 关注
  • MongoDB

    MongoDB(来自于英文单词“Humongous”,中文含义为“庞大”)是一个基于分布式文件存储的数据库,由 C++ 语言编写。旨在为应用提供可扩展的高性能数据存储解决方案。MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似 JSON 的 BSON 格式,因此可以存储比较复杂的数据类型。

    90 引用 • 59 回帖 • 1 关注
  • Maven

    Maven 是基于项目对象模型(POM)、通过一小段描述信息来管理项目的构建、报告和文档的软件项目管理工具。

    186 引用 • 318 回帖 • 303 关注
  • 微信

    腾讯公司 2011 年 1 月 21 日推出的一款手机通讯软件。用户可以通过摇一摇、搜索号码、扫描二维码等添加好友和关注公众平台,同时可以将自己看到的精彩内容分享到微信朋友圈。

    130 引用 • 793 回帖
  • RESTful

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

    30 引用 • 114 回帖 • 1 关注
  • JSON

    JSON (JavaScript Object Notation)是一种轻量级的数据交换格式。易于人类阅读和编写。同时也易于机器解析和生成。

    52 引用 • 190 回帖
  • 小薇

    小薇是一个用 Java 写的 QQ 聊天机器人 Web 服务,可以用于社群互动。

    由于 Smart QQ 从 2019 年 1 月 1 日起停止服务,所以该项目也已经停止维护了!

    34 引用 • 467 回帖 • 742 关注
  • IDEA

    IDEA 全称 IntelliJ IDEA,是一款 Java 语言开发的集成环境,在业界被公认为最好的 Java 开发工具之一。IDEA 是 JetBrains 公司的产品,这家公司总部位于捷克共和国的首都布拉格,开发人员以严谨著称的东欧程序员为主。

    180 引用 • 400 回帖
  • CSS

    CSS(Cascading Style Sheet)“层叠样式表”是用于控制网页样式并允许将样式信息与网页内容分离的一种标记性语言。

    198 引用 • 550 回帖
  • VirtualBox

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

    10 引用 • 2 回帖 • 6 关注
  • 黑曜石

    黑曜石是一款强大的知识库工具,支持本地 Markdown 文件编辑,支持双向链接和关系图。

    A second brain, for you, forever.

    15 引用 • 122 回帖
  • CSDN

    CSDN (Chinese Software Developer Network) 创立于 1999 年,是中国的 IT 社区和服务平台,为中国的软件开发者和 IT 从业者提供知识传播、职业发展、软件开发等全生命周期服务,满足他们在职业发展中学习及共享知识和信息、建立职业发展社交圈、通过软件开发实现技术商业化等刚性需求。

    14 引用 • 155 回帖
  • ZooKeeper

    ZooKeeper 是一个分布式的,开放源码的分布式应用程序协调服务,是 Google 的 Chubby 一个开源的实现,是 Hadoop 和 HBase 的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。

    59 引用 • 29 回帖 • 5 关注
  • LeetCode

    LeetCode(力扣)是一个全球极客挚爱的高质量技术成长平台,想要学习和提升专业能力从这里开始,充足技术干货等你来啃,轻松拿下 Dream Offer!

    209 引用 • 72 回帖
  • Ruby

    Ruby 是一种开源的面向对象程序设计的服务器端脚本语言,在 20 世纪 90 年代中期由日本的松本行弘(まつもとゆきひろ/Yukihiro Matsumoto)设计并开发。在 Ruby 社区,松本也被称为马茨(Matz)。

    7 引用 • 31 回帖 • 211 关注
  • 宕机

    宕机,多指一些网站、游戏、网络应用等服务器一种区别于正常运行的状态,也叫“Down 机”、“当机”或“死机”。宕机状态不仅仅是指服务器“挂掉了”、“死机了”状态,也包括服务器假死、停用、关闭等一些原因而导致出现的不能够正常运行的状态。

    13 引用 • 82 回帖 • 53 关注
  • Redis

    Redis 是一个开源的使用 ANSI C 语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value 数据库,并提供多种语言的 API。从 2010 年 3 月 15 日起,Redis 的开发工作由 VMware 主持。从 2013 年 5 月开始,Redis 的开发由 Pivotal 赞助。

    286 引用 • 248 回帖 • 62 关注
  • 大数据

    大数据(big data)是指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。

    93 引用 • 113 回帖
  • 音乐

    你听到信仰的声音了么?

    60 引用 • 511 回帖
  • Sublime

    Sublime Text 是一款可以用来写代码、写文章的文本编辑器。支持代码高亮、自动完成,还支持通过插件进行扩展。

    10 引用 • 5 回帖
  • 学习

    “梦想从学习开始,事业从实践起步” —— 习近平

    169 引用 • 506 回帖