【引用功能设计理念的探讨】如果B是A的引用,为什么B添加了子节点,A中没有添加?

我以为理所当然子节点也会是同步的。结果似乎不是这样。
首先,我觉得:

  • 如果B是A的引用,在A处添加了新的子节点,B也自动添加相应的节点。如果对B添加子节点,A也会同步子节点。
    举个场景(我没有真的学这个,这是架空的,我很菜的,想象大佬的例子),假设我要学操作系统,那么也就要学Rust,鉴于Rust不仅会在操作系统中用到,还会在其它的学科中用到,我并不想让Rust作为操作系统笔记本的一部分,而是单独作为一个笔记本,但是我又希望在操作系统笔记本能看到Rust的全部内容,于是我引用了Rust,但是,如果我在操作系统笔记本添加了Rust的新内容(这很正常,比如看到某个大佬写的操作系统中运用了Rust的某个我没记录过的特性),结果Rust笔记本还是没有任何新增

我觉得如果子节点不同步,那么引用的作用是很小的,但是如果子节点同步,就是非常有力的工具

1赞

您好,关于引用功能的设计理念,请参阅:

引用功能被设计出来的初衷是为了构建【新】的逻辑关系,实现对知识和见解进行融合、重组的需求。这和您提出的同步父子节点关系是完全冲突的,因为会导致旧的结构跟随引用卡片迁移,这对新的知识结构来说一般属于冗余信息。

考虑到这种情况,我们没有赋予引用卡片逻辑关系迁移的属性。

不过您描述场景中的困难还是可以解决的,只需要多选父子结构中的卡片,然后批量引用即可~

Regards.

1赞

晚些更新场景访谈就明白了,还是要和实际应用联系在一起

怎么整?我在操作系统笔记本中,完整引用了Rust笔记本,现在在操作系统笔记本对它引用的Rust笔记本有更新,但是Rust笔记本(引用源)那里没有更新。我没想到好的解决办法。

目前只能手动,新功能介绍说明里面,节点关系明显说明了是不会同步的,只有卡片内容变更才会同步。

其实这个内容同步的特性,本质上叫做继承关系,目前是为了新知识框架的融合或者重组而设计的。

类似的功能可以参考Tinderbox里面设计的原型,原型功能也是专注于笔记继承关系上的设计,这个领域本身非常冷门,只能慢慢来了。我的理解是,如果要完全实现你的需求,只有两种方案:

  1. 改成卡片内容和逻辑关系都继承,这个应该不可能,因为和初衷背离了。

  2. 功能增强到允许用户精准定义继承范围,允许将一个局部(比如一张卡及其所有子节点)定义为一个引用单位,在这个局部里,原始单位的所有改动都可以被继承,比如你说的添加子节点。这个就特别复杂,一方面开发者在功能实现上可能难度比较大,另一方面用户要理解估计也有点困难。

或许方案2有大佬能写出插件,最近不是开放了API么 :relaxed:

1赞

看来我这种用法不符合引用的设计理念……只能放弃使用了。我还是老老实实复制粘贴然后双向链接吧

2赞

引用结构和引用卡片内容是两件事,您可以介绍下自身的工作学习场景,从进一步开发新功能的角度上收集下您的使用情景

目前的初衷的确如此。期望解决的问题是不一样的,引用就是为了解决同一个脑图笔记卡片内容能拥有新的相互间结构关系而生的,鼓励大家对自己的知识结构进行 “版本” 更新

我的场景上面已经说了,具体来说举个例子,情景设置得简单一些,不找复杂的知识点了。下午还和复光说过
一元函数可导等价于可微。所以我要在高等数学-一元函数的性态-一元函数微分学-导数-函数可导的条件部分摘录一个“充要条件 可导就是可微”的节点,并且在评论中写一下这个条件在做题时应该怎么用,然后附上几个例题的链接。
然后,我要在微分-函数可微的条件部分生成一个该节点的副本。所以对我来说,这个节点当然要和原节点完全一样,链接也一模一样,并且后续任何内容和链接的修改也要同步。
所以我用不了引用。

还有其它一些问题。
比如,我在线性代数-向量组-线性表出部分有一个“充要条件5 线性表出和线性组合的关系”,看标题就知道,这个节点还应同时放在线性代数-向量组-线性组合部分。但线性组合原本只有2个充要条件,那我这就尴尬了。
如果我把这边的序号5改成3的话,原来那里也成了充要条件3了,编号就重了;
如果我把原来那里的充要条件顺序调一下的话,又会影响别的卡片,而且这些充要条件本身也是有一定顺序的(层层深入),不能随意调整;
如果我把序号去掉的话,不,我不同意把序号去掉。我觉得序号对我脑海里的理清顺序和记忆很有帮助。

再比如,我们知道连续函数必有原函数,所以,我得在高等数学-一元函数的性态-一元函数积分学-不定积分&原函数-原函数存在的条件部分写一个“充分条件 原函数存在定理”;并且,我还得在高等数学-一元函数的性态-函数的连续性-函数连续的条件部分写一个“必要条件 原函数存在定理”。
因为一词之差我又用不了引用了。

再比如,我不举例子了,有的时候我只想把第一个摘录的语序和强调的内容做适当调整,因为放在不同的地方,属于不同的知识点,所以虽然定理本质一样,但说法应有稍许调整;而后面的评论区里的说明都不变。这种情况下当然也完全用不了引用了。

希望能得到回复,这些情况会考虑让引用适应吗,还是说确实不应该用引用。 @Lanco_Support-Team

关于同步子节点的情况,这可能需要讨论清楚两个问题:一、何时有必要将新摘录设置为子节点;二、何时将新摘录合并到父节点中更有价值。当然,这些问题对没有引用功能需求的用户来说可以直接跳过了, :sweat_smile:会有一点复杂,但因为是在给问题做具体限定下的讨论,所以对于此功能的后续发展还是有价值的。

目前设计成卡片内容才会同步,可以理解成是把继承的界限设在了卡片上,凡是值得被继承的是原始卡片的强关联信息,或者说值得被合并进卡片的信息;与之相对,凡是弱关联信息如子节点,不像被绑定在卡片中的评论字段,就不值得继承。因为需要考虑到一种情况,子节点可能是当前分支下对父节点的延伸,换在其他分支或者结构中就不适用了。

具体一点,假设某个用户的一张卡是一个概念,卡片的评论字段是合并进来的概念的相关解释,追溯其父节点的脉络,这张卡片所在的分支却属于特定的语义场景。比如说该用户摘录的是一张传播学术语卡,这张卡所在的分支是社会心理学的某个知识结构,需要在某个局部使用一个传播学的概念,后续的解释需要这张传播学术语卡片作为基础,来延伸其他解释,很明显这张传播学术语卡片的后续延伸子节点有两个属性:

  1. 需要使用该传播学的概念进行解释
  2. 需要在当前社会心理学的知识框架中进行解释

也就是说,传播学术语卡的后续子节点虽然需要此术语作为延伸的基础,其本质还是在解释社会心理学的概念。如果考虑到知识的迁移引用,在这个场景中显然传播学术语卡片还能在其他学科领域中被使用,但是其子节点因为被限定在社会心理学的范畴,是不适合迁移的。

如果设计成子节点跟随迁移,会给上述使用场景带来大量冗余信息。

上述结论是建立在什么信息适合被合并,什么信息适合作为子节点的假设上,由此假设得出目前继承界限的位置设置在一张卡片上是合适的,当然,不能排除未来会支持更精准的继承范围定义,比如说:

总的来说,引用功能被设计的初衷是为了方便用户进行知识的迁移和重组,考虑到上述传播学术语在社会心理学知识结构中的使用情况以及后续的术语迁移需求,我认为目前Marginnote对于继承关系的界限的定义是恰当的,虽然还不能支持更复杂的局部定义,但子节点的同步目前来看是没有必要的。当然,如果您在新摘录合并or作为子节点的假设上有不一致,我们随时可以进一步讨论其具体情况。

Regards.

1赞

虽然不是很懂不过等下个版本看看
还有,我那层举的另外两个例子怎么说呢:thinking:

您方便描述一下对于设置子节点或者选择合并,在新卡片两种可能的处理之间二者择一的标准吗?

引用功能是为上述的多领域知识迁移+重组场景设计的,我们的开发报告中有保存相关访谈,如果没有合适的时机,仅同步卡片内容的特性近几个版本一般都不会改动。

您的场景当然是重要的,但是目前看来细节之处还有点模糊,讨论清楚有助于我们存档和反馈 :blush:

Regards.

考虑到引用卡的同步特性在笔记应用领域尚且属于较新的设计(除了Tinderbox的原型Prototype),所以我们是经过调查和访谈才决定了目前的继承关系:引用卡只继承同步原始卡的内容,不继承同步原始卡的结构。

当然这也不是一锤定音,我们会继续探索引用相关的功能,只是这一切都必须建立在经过了讨论和调查的基础上。如果要对之前的设计进行改变,我们希望能有一个可靠的理由来支持变更。

此外,还有一个值得注意的地方,原始卡和引用卡之间是双向的继承关系(Tinderbox的原型是单向继承),也就是说原始卡的改动会同步到引用卡,引用卡的改动也会同步到原始卡。如果子节点的更改也会同步,那么位于某一个新脑图结构中的引用卡一旦改变,其原始卡所在的脑图的结构也会变化,这对于需要跨学科领域引用的场景来说显然不能接受。

您可以理解为引用卡相对于原始卡具有一定独立性,之所以设计成子节点等逻辑关系改变不会同步到原始卡,是为了能继续组建新的知识结构,同时又不会影响到原始结构,这是Marginnote的底层理念之一:非线性编辑(新的知识来自旧的知识,但不会影响到旧的知识,相当于历史版本保护)。

非线性关系在Marginnote中无处不在,比如新功能中引用卡和原始卡的关系,以及很早就有的摘录卡片和原文档的关系,这两组关系具有一个共同的特点,即新的结构不会影响到旧的结构,但是新结构中的内容来自旧的结构。Marginnote中的摘录卡片可以任意组合新的分支结构,这绝对不会影响到摘录所在的文档信息的排布。不知道这样说能帮到您理解吗?

Regards.

1赞

这不是我说的问题啊?你再看一下我那层。

不同意子节点同步改变

不过好像也没啥,这种情况就用双向链接吧,也就是几秒钟的事。没有什么事情是不能手动解决的。
不过我还是奇怪,大多数人引用,都是对叶子节点进行引用?
对了,我说一点双向链接做不了的事,那就是,如果子节点同步,我就可以维护一个记忆库,把所有要维护记忆的笔记本的引用都放在这里,不再以笔记本为屏障。

还是不太理解为什么为什么不同步子节点。
如果引用叶子节点,那么同步子节点不会有任何区别。
如果引用父节点,emmm,可是为什么会需要仅仅引用父子节点?父子节点不都是一个知识块的名字么?

你直接框选父子节点就能达到想要的结果,但是如果直接改动成你说的那样,我如何达到不同步子节点效果?
倘若原卡片无子节点,你在引用后为其添加子节点,这又会不会破坏原卡片本身的知识结构?

最好是可控制的同步那些数据结构