yibie
1
org-luhmann
一个为 Org 模式实现卢曼编号系统的 Emacs 包。
概述
org-luhmann 提供了一种系统化的方法,使用 Org 模式中的卢曼编号系统来组织您的笔记。该系统支持:
- 层级编号(例如,1,1.1,1.2)
- 带有字母的分支序列(例如,1a,1b,1c)
- 在现有笔记之间无限插入
- 基于上下文的自动编号生成
工作原理
org-luhmann 被设计为增量式工作,帮助您一次构建一个节点的笔记结构。与自动大纲编号不同,它:
- 不会一次性自动编号所有标题
- 基于现有上下文(兄弟节点和父节点)生成编号
- 允许您选择新节点与现有节点的关系
- 保留您的笔记结构的语义含义
当您添加新编号时,org-luhmann 会分析:
- 当前标题的级别
- 前一个兄弟节点的编号(如果有)
- 父节点的编号(如果有)
- 现有的分支序列
然后提供适当的编号选项,例如:
- 下一个主序列编号(1,2,3,…)
- 下一个分支字母(1a,1b,1c,…)
- 下一个子编号(1.1,1.2,…)
- 下一个父分支(2.1,2.2,…)
这种方法确保您的笔记结构有机地增长,并保持笔记之间有意义的关系。
7 个赞
yibie
2
这个包,现在得到了 2 名大佬的星标~
一位是开发了 org-tranclusion 的 nobit,一位是 magit 的开发者 tarsius,哈哈哈!
存照,哈哈哈!
导出成 html 时候会不会和自动生成的序号冲突呀?
赞!提个小建议,能否为中文习惯加上:一、二,(一)、(二)这样的,然后能支持 一.1 等?
@yibie 是否可以把 org-luhmann 搞成一个 minor-mode,导出是根据这个 mode 来禁用自动编号?
这个能不能解析整个 buffer,自动处理所有 headline?或者设置为 headline 创建的 hook,而不需要专门的命令来添加?
yibie
8
我试过解析整个 buffer 这个方向:
- 性能问题,会卡
- 需要实时监控页面变化,也会卡
- 容易陷入无限循环,直接卡死 Emacs
考虑到用卢曼编码的,一般是一个主 org 打包一切,标题数量和标题层级肯定很多,我测试的时候只是 10 个标题左右,已经开始有点卡了,随着标题数量的增加,性能问题应该会非常明显
后来我放弃了这个方向,才做成这种基于上下文确定编号的方法
应该是我水平未到😂
yibie
9
我没试过导出的场景,因为笔记和输出我是分开的
如果是导出为 html,我建议你关闭 org-mode 导出时自动生成序号
如果不关闭的话,我估计 org-mode 自动生成的序号,和这个卢曼编号会同时存在
因为 ox-export 应该会直接把编号当成标题的一部分进行处理
yibie
10
这个需求很少见,我建议你直接 fork 项目,然后基于自己的习惯定制
也不是很困难,你给编号之前再添加一个前缀,依据标题层级来判断放啥中文编号
至于其它的,里面算法已经做好了,不用动
yibie
11
或者设置为 headline创建的 hook,而不需要专门的命令来添加?
主要是卢曼编码规则是特殊的,同一个级别里的标题里,可以混用数字和字母,但代表的意义不同,举个例子:
1 标题一
1.1 标题二
1.1a 延续标题二的内容或讨论
1.2 标题三,与标题二的内容完全不关联
如果是直接 hook,这个混用字母和数字的编号系统就失效了应该
这个包的编号规则是比较特殊的,看上去可以实现一个更加普适的版本
yibie
12
新增(自定义选项):显示模式的切换
使用编号代替星号进行显示,添加如下代码到配置:
(setq org-luhmann-display-style 'number)
(org-luhmann-display-mode 1)
该软件包为标题提供了两种显示样式:
star
:传统的 org-mode 星号(默认)
number
:用卢曼数字替换星号
您可以使用 M-x org-luhmann-display-mode
切换显示增强功能。
yibie
14
我在弄一个 org-numbering,针对更加普遍的场景,和卢曼编号这种针对特殊场景的区分开来
1 个赞