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

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

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

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

  • 思源笔记

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

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

    28457 引用 • 119828 回帖 • 1 关注

相关帖子

欢迎来到这里!

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

注册 关于
请输入回帖内容 ...
  • 大概明白了,我们应该搞个 4 的一键简化对吧:带层级复制块并且复制完成后在顶层行级末尾追加 文本 * 指向原始定义?

    我演示一下操作你看下:

    issue.gif

    1 回复
  • 其他回帖
  • 当 反向链接 的数量为 0、提及的数量大于 0 的时候,

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

    可否这样:

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

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

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

    image.png

  • mowangmm

    需求就是:我希望从反链面板中拖拽素材到主题文档内时,既能保留素材的富文本格式和子级,又能创建从主题文档到原始素材的引用链接,同时原始素材保持在原有位置不变。

    在现有条件下如果要满足这一需求存在什么问题:

    1. 如果用 Alt+ 拖拽复制为引用块,则无法保留原始素材的富文本格式和子级
    2. 如果先复制为引用块再使用转换为文本 *,同样无法保留原始素材的富文本格式和子级
    3. 如果先复制为引用块再使用转换为定义块及其子级,则无法保留指向原始素材的引用链接(虽然有引用计数),并且更大的问题在于原始素材所在的位置被置换成了引用块,这样不便于其他主题再次使用这一素材
    4. 如果直接对素材进行复制粘贴(不使用引用、嵌入等等,就是 Ctrl+C 复制)到主题文档,并手动创建一个星号锚文本引用原始素材,可以实现该需求,但操作步骤比较麻烦

    我这样说可以理解了吗?

    1 回复
    1 操作
    mowangmm 在 2022-10-09 11:17:35 更新了该回帖
  • 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 更新了该回帖
  • 查看全部回帖

推荐标签 标签

  • GitLab

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

    46 引用 • 72 回帖
  • 链滴

    链滴是一个记录生活的地方。

    记录生活,连接点滴

    203 引用 • 4025 回帖
  • Angular

    AngularAngularJS 的新版本。

    26 引用 • 66 回帖 • 579 关注
  • FlowUs

    FlowUs.息流 个人及团队的新一代生产力工具。

    让复杂的信息管理更轻松、自由、充满创意。

    1 引用
  • 星云链

    星云链是一个开源公链,业内简单的将其称为区块链上的谷歌。其实它不仅仅是区块链搜索引擎,一个公链的所有功能,它基本都有,比如你可以用它来开发部署你的去中心化的 APP,你可以在上面编写智能合约,发送交易等等。3 分钟快速接入星云链 (NAS) 测试网

    3 引用 • 16 回帖
  • 七牛云

    七牛云是国内领先的企业级公有云服务商,致力于打造以数据为核心的场景化 PaaS 服务。围绕富媒体场景,七牛先后推出了对象存储,融合 CDN 加速,数据通用处理,内容反垃圾服务,以及直播云服务等。

    30 引用 • 244 回帖 • 116 关注
  • OAuth

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

    36 引用 • 103 回帖 • 42 关注
  • 宕机

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

    13 引用 • 82 回帖 • 73 关注
  • PWA

    PWA(Progressive Web App)是 Google 在 2015 年提出、2016 年 6 月开始推广的项目。它结合了一系列现代 Web 技术,在网页应用中实现和原生应用相近的用户体验。

    14 引用 • 69 回帖 • 183 关注
  • 禅道

    禅道是一款国产的开源项目管理软件,她的核心管理思想基于敏捷方法 scrum,内置了产品管理和项目管理,同时又根据国内研发现状补充了测试管理、计划管理、发布管理、文档管理、事务管理等功能,在一个软件中就可以将软件研发中的需求、任务、bug、用例、计划、发布等要素有序的跟踪管理起来,完整地覆盖了项目管理的核心流程。

    11 引用 • 15 回帖
  • 小说

    小说是以刻画人物形象为中心,通过完整的故事情节和环境描写来反映社会生活的文学体裁。

    33 引用 • 108 回帖
  • SQLite

    SQLite 是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。SQLite 是全世界使用最为广泛的数据库引擎。

    4 引用 • 7 回帖
  • Oracle

    Oracle(甲骨文)公司,全称甲骨文股份有限公司(甲骨文软件系统有限公司),是全球最大的企业级软件公司,总部位于美国加利福尼亚州的红木滩。1989 年正式进入中国市场。2013 年,甲骨文已超越 IBM,成为继 Microsoft 后全球第二大软件公司。

    107 引用 • 127 回帖 • 328 关注
  • 生活

    生活是指人类生存过程中的各项活动的总和,范畴较广,一般指为幸福的意义而存在。生活实际上是对人生的一种诠释。生活包括人类在社会中与自己息息相关的日常活动和心理影射。

    230 引用 • 1432 回帖
  • Unity

    Unity 是由 Unity Technologies 开发的一个让开发者可以轻松创建诸如 2D、3D 多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。

    27 引用 • 7 回帖 • 94 关注
  • Python

    Python 是一种面向对象、直译式电脑编程语言,具有近二十年的发展历史,成熟且稳定。它包含了一组完善而且容易理解的标准库,能够轻松完成很多常见的任务。它的语法简捷和清晰,尽量使用无异义的英语单词,与其它大多数程序设计语言使用大括号不一样,它使用缩进来定义语句块。

    561 引用 • 677 回帖
  • danl
    216 关注
  • CloudFoundry

    Cloud Foundry 是 VMware 推出的业界第一个开源 PaaS 云平台,它支持多种框架、语言、运行时环境、云平台及应用服务,使开发人员能够在几秒钟内进行应用程序的部署和扩展,无需担心任何基础架构的问题。

    4 引用 • 16 回帖 • 198 关注
  • 知乎

    知乎是网络问答社区,连接各行各业的用户。用户分享着彼此的知识、经验和见解,为中文互联网源源不断地提供多种多样的信息。

    10 引用 • 66 回帖
  • Swagger

    Swagger 是一款非常流行的 API 开发工具,它遵循 OpenAPI Specification(这是一种通用的、和编程语言无关的 API 描述规范)。Swagger 贯穿整个 API 生命周期,如 API 的设计、编写文档、测试和部署。

    26 引用 • 35 回帖 • 16 关注
  • 开源

    Open Source, Open Mind, Open Sight, Open Future!

    421 引用 • 3610 回帖
  • 运维

    互联网运维工作,以服务为中心,以稳定、安全、高效为三个基本点,确保公司的互联网业务能够 7×24 小时为用户提供高质量的服务。

    151 引用 • 257 回帖
  • TextBundle

    TextBundle 文件格式旨在应用程序之间交换 Markdown 或 Fountain 之类的纯文本文件时,提供更无缝的用户体验。

    1 引用 • 2 回帖 • 91 关注
  • 心情

    心是产生任何想法的源泉,心本体会陷入到对自己本体不能理解的状态中,因为心能产生任何想法,不能分出对错,不能分出自己。

    59 引用 • 369 回帖
  • 新人

    让我们欢迎这对新人。哦,不好意思说错了,让我们欢迎这位新人!
    新手上路,请谨慎驾驶!

    52 引用 • 228 回帖
  • Access
    1 引用 • 3 回帖 • 14 关注
  • Logseq

    Logseq 是一个隐私优先、开源的知识库工具。

    Logseq is a joyful, open-source outliner that works on top of local plain-text Markdown and Org-mode files. Use it to write, organize and share your thoughts, keep your to-do list, and build your own digital garden.

    8 引用 • 69 回帖 • 7 关注