article_image

笛卡尔曾指出——虽然带着悲观色彩——最后说服我们的,往往是风俗和案例。有时候。一个好例子胜过精心编织的论证。我在业余时间所捣鼓的各种方法,偶尔被人接受,往往需要一个无可替代的使用场景。我曾介绍过如何用卡片笔记的形式打开一本书,不过,显然多数读者只是看个热闹。

而在法律这个人文学科,如何恰如其分地引入卡片笔记(双向链接)技术而不至于被指责为炫技,更成问题。实际上,以有不少人尝试将法律条文“卡片笔记化”,早几年就有人制作了《中华人民共和国民法典》的 Obsidian 版,但很可惜,这些做法类似于那些法律科技创业项目,基于功能主义而胡乱添加新板块,看上去很酷,实则根本没人用。就《民法典》而言,原因很简单,它体系清晰,层级明显,交叉引用较少,更适合从第一条读到最后一条,没必要做成链接网络。

不过,部分细分领域的法律法规则有“卡片笔记化”的价值,最好的例子便是——劳动法1。和一般的法律条文不同,劳动法体系下的文件常有引致条款和被引致条款,几乎每隔几行就来一句“本法第几条”,有时候胳膊还拐到其他文件里面。别说是外行,就算我这个水平马马虎虎的律师,也背不齐全。偏偏劳动法又有特殊之处,它几乎是外行人最有可能接触到的法律,而当我把相关资料发送给那些有兴趣自学的外行朋友后,他们几乎全部栽倒在这些引致条款上。

Alt text
《中华人民共和国劳动合同法》中恐怖的引致条款

就我自己的情况而言,有一段时间,我手边总是备有两套纸质法律文件,一本是《中华人民共和国民法典》,这是经典,要一读再读;另一套则是劳动法的合订本,纯粹为了方便翻页。

我的同事也苦劳动法久矣,感叹能不能像百度百科和知乎里面的蓝色术语一样2,点一下就能跳到对应词条?还有人进一步说——其实也是在线百科的功能之一——他连点点鼠标的兴趣都没有,最好把光标移到链接上,就能看到载有链接对面内容的浮窗。

——上述种种设想,不都是卡片笔记的典型功能吗?尤其在免费的 Obsidian 软件中,这一切都非常容易实现。终于,在某次案件办理过程中,我再也受不了来回翻动纸质材料或疯狂滚动电子文档,于是着手将劳动法相关材料卡片笔记化。

Alt text
在 Obsidian 中可视化法条引致网络

某种程度上,可以把本文后续的工作想象成剪碎文件再适当组织,但落地时却不完全是技术问题。前置问题在于,法律文件固然以条为基本单位,但部分引致条款会精确到更细的款乃至项甚至目等等层级,若追求字面意义上的原子化,恐怕会把法律文件剪成无法阅读的纸屑。因此,从一开始最好就达成共识,牺牲一定的精度,以为单位,考虑到一条条文内容往往不过几行,偶尔遇到更细的引用,直接呈现整条内容也不至于让人找不到目标。

我写了一段粗糙的 Shell 脚本,可以条为单位将完整的纯文本法律文件剪碎,再分而储至单个的纯文本文件。显然,如果想尝试本文的方案,你需要用纯文本存储法律条文,而不是 Word。脚本附在文末,有兴趣的读者可自行取用。3

Alt text
将法律文件逐条拆成单独的文档

得到剪碎的条文后,就要如何组织和命名它们。如果只有一本《中华人民共和国劳动法》,情况或许要简单许多,直接用“第几条”来命名各文件即可,但目前存在引用关系的文件至少有四五本——《中华人民共和国劳动法》《中华人民共和国劳动合同法》《中华人民共和国劳动争议调解仲裁法》和《最高人民法院关于审理劳动争议案件适用法律问题的解释(一)》——而且以后可能还会继续增加,因此我选用 文件名简称条文序号 的命名方式。此处需要一点变通做法,希望不会引起原教旨主义者的不满:由于每一份文件都会用“本法”或“本解释”等代称来称呼自己,因而同一个代称在不同文件中可能指向不同对象,为此,我把这些代称全部转换成了绝对称呼,这无疑修改了法律条文本身,不过本文目的本就是活化法律条文,如此程度的变通,应当无可厚非。

就技术细节而言,将引用之处绝对化并转换为双向链接反而最要花心思,需要删去无用的章节标题,并调整“本法第几条”“它法第几条”这些表述。其中全是几乎没有重复利用价值的正则表达式,本文不表,仅截图供有兴趣的读者参考。如您已购买 UNTAG 的会员,可以在本文文末下载我整理好的文件,无需自己再跋涉一番。

Alt text
删去章节标题的替换规则
Alt text
劳动合同法的文本替换规则
Alt text
劳动解释的文本替换规则

接下来的一步纯粹是个人偏好,或者看你所用软件有无客观限制:要不要分文件夹。卡片笔记原教旨主义者坚决否定文件夹,但我认为没有必要和自己过不去,现在,你已经有了几百个文件,为何非要把它们全部铺开?我以来源文件为名,建立几个文件夹,分别收纳其下的条文碎片文件。如此一来,只要软件本身允许,你不仅可以一览所有条文之间的关联,也可以只看某一份法律文件内部的引用结构。4最后,将收拾好的整个文件夹丢给 Obsidian,就可以将线性的法律条文转换为卡片笔记化形式。

Alt text
在 Obsidian 中打开文件夹并当作仓库

至此,我已经把原本浏览方式单一的法律文件变成了多维度的卡片笔记(维基百科),我至少拥有三种浏览劳动法相关条文的方式:

  1. 传统的线性浏览,在左侧边栏中从第一条看到最后一条,不过前面也指出,我暂未把中文数字替换成阿拉伯数字,目前顺序稍有错乱。
  2. 卡片笔记经典的图谱视图,查看整个数据库的引用关系,但说实话,没啥用;
  3. 真正有用的是局部网络视图,也就是打开一条法律条文后,查看它和其他条文的关系,包括它引用的条文和引用它的条文,这在法律领域意义非凡,因为一条条文被引用,往往有实质意义:
    1. 被引致条款得到了进一步解释或细化,比如劳动法司法解释就对劳动法中的经济补偿和赔偿规则有进一步的规定,若只看劳动法,很可能误以为某些赔偿可以无限制累加,实则不然,法律对劳动者的倾斜保护也不是无限的;
    2. 引致条款是需要注意的例外,例如,虽然劳动法和劳动合同法规定了很多可以通知辞退员工的情形,但是随后又有不得辞退的例外,如果用人单位未加注意,就很有可能要支付巨额补偿和赔偿;
    3. 最后一种情形则是参照适用的条文,不过此类情形在劳动法体系下不多见,本文不讨论。
Alt text
在 Obsidian 中查看当前法条的关联法条

除此之外,别忘了我同事所期待的交互细节:当你把光标移到一个双向链接上,对面的内容就会随之浮现,这种“瞥一眼”的交互方式,尤其适合长期伏案的法律阅读。研读法律原文时,我通常会把几个关键条文摆在一边,但偶尔也要看看周围的关联内容,此时,“瞥一眼”就在摆地摊和来回翻之间取得了平衡。

Alt text
在 Obsidian 中悬停查看引致法条

>>整理好的劳动法文件下载<<

input_file="~/Downloads/劳动法wiki/调解仲裁法/调解仲裁法.md"

current_article=""
article_number=""

while IFS= read -r line; do
  if [[ $line =~ ^第.{1,4}条 ]]; then
    if [[ -n "$current_article" ]]; then
      echo "$current_article" > "调解仲裁法${article_number}.txt"
    fi
    article_number=$(echo "$line" | egrep -o '^第.{1,4}条')
    current_article="$line"
  else
    current_article+=$'\n'"$line"
  fi
done < "$input_file"

if [[ -n "$current_article" ]]; then
  echo "$current_article" > "调解仲裁法${article_number}.txt"
fi

  1. 此处的劳动法泛指劳动法律相关的一系列文件,并非特指《中华人民共和国劳动法》。若无特别指出,本文的“法律”或“法律法规”,通常也是泛指,而不是特指狭义的、由全国人大制定的法律。
  2. 这是原话,不代表我认可百度百科。
  3. 代码以《中华人民共和国劳动争议调解仲裁法》为例,请自行更换文件名称及其路径。另,需确保待处理文件的最后一行为空行,否则 Shell 脚本会遗漏它——我可以继续改进代码,追求所谓的“用户友好”,但,没必要。
  4. 事实上,我还可以走得更远,把中文大写的条文序号改成阿拉伯数字,以便在 Obsidian 侧边栏中按条文顺序从小到大浏览,不过目前的部分乱序倒也能接受。其实只是在 macOS 下浸淫多年,我习惯了中文数字的排序。

author_avatar

Lawyer, macOS/iOS Automation Amateur