用 lualtex 制作文本,总免不了做一些替换的工作,本来想写一个函数,本着能懒一会儿是一会儿的原则,还是用宏替换解决了。这是原文
page3.png正文下面是注释:
page4.png拷贝到vim中就变成了如下的内容:
魯有兀者叔山無趾(1),踵見仲尼(2)。仲尼曰:「子不謹,前既犯患若是矣。雖今來,何及矣?」無趾曰:「吾唯不知務而輕用吾身,吾是以亡足。今吾來也,猶有尊足者存(3),吾是以務全之也。夫天無不覆,地無不載,吾以夫子為天地,安知夫子之猶若是也!」孔子曰:「丘則陋矣。夫子胡不入乎?請講以所聞!」無趾出(4)。孔子曰:「弟子勉之!夫無趾,兀者也,猶務學以復補前行之惡,而況全德之人乎!(5)」...
【註】
李云:「叔山,氏。」宣云:「無足趾,遂為號。」
崔云:「無趾,故踵行。」
宣云:「有尊於足者,不在形骸。」
...
言其根器如此,天然刑戮,不可解也。
首先呢,我们需要给注释的行标注序号:
2019-11-01 14.10.57.gif现在注释行就变成了:
1. 李云:「叔山,氏。」宣云:「無足趾,遂為號。」
2. 崔云:「無趾,故踵行。」
3. 宣云:「有尊於足者,不在形骸。」
...
10. 釋文:「惡,醜。李云:『哀駘,醜貌。它其名。』」
接下来我们要做的就是:用带序列号的行内容,替换掉原文的编号里面的内容,比如:
魯有兀者叔山無趾(1 \footnote{1. 李云:「叔山,氏。」宣云:
「無足趾,遂為號。」}),踵見仲尼(2 \footnote{2. 崔云:
「無趾,故踵行。」})。仲尼曰:「子不謹,前既犯患若是
矣。雖今來,何及矣?」無趾曰:「吾唯不知務而輕用吾身,
吾是以亡足。今吾來也,猶有尊足者存(3 \footnote{3. 宣云:
「有尊於足者,不在形骸。」})
我们先定义一个宏:
let @a="/(\\([0-9]\\+\\))^M:s/(\\([0-9]*\\))/\\='('.submatch("1").' \\footnote{'.getline(i+4).'})'/ \| let i+=1^M"
# 上面的命令是:
# 1. 搜索形如 (1) 的数字
# 2. 将替换
命令 | 解释 |
---|---|
/(\([0-9]\+\))^M | range |
:s/../../ | 替换 |
\= | 后面接命令返回值 |
'('.submatch("1") | 模式匹配的第一项 |
getline(i+4)/ | 获取鼠标所在行下面第 i 行 |
let i+=1 | 递增 i |
^M | 是换行符号,Ctrl+Q Enter |
在执行宏之前,我们先将i
的值重设为0
,:let i=0
。然后执行宏a
76遍: 76@a
。
这样就可以直接倒入到 texworks 里面。
page1.png算了,还是制作成函数吧~
funciton! Foot(offset)
let g:i=0 " everytime call Foot() will renew i's value
let @a="/(\\([0-9]\\+\\))^M:s/(\\([0-9]\\+\\))/\\='('.submatch('1').' \\footnote{'.getline(i+".a:offset.").'})'/ \| let i+=1^M"
endfunction
放到 .vimrc
里,调用的时候执行:call Foot(3)
。
网友评论