Pandoc的脚注虽然可以在CSS中设置隐藏,可是某些阅读器还是要显示,而且不能自由设置弹注样式。因此只能使用html代码了。
于是自己写个小脚本,在markdown文本中直接替换pandoc的脚注标记,如果修改一下,多看的弹注样式也是可以实现的。
BASH由于有文本处理三剑客,所以比Python简单得多,就用bash脚本了。主要利用了sed程序,由于sed的模板字串好像不能直接使用变量,所以先使用eval命令处理后在交给sed。参考如下:
#! /bin/bash
str1='\<aside epub:type="footnote" id="fn'
str2='"\>'
str3='\<\/aside\>'
str4='\<a epub:type="noteref" href="#fn'
str5='"\>\<sup\>'
str6='\<\/sup\> \<\/a\>'
p1='['
p2='^'
p3=']'
file=$1
strReplace (){
local str=$p1$p2$1$p3:
if cat $file|grep -Fq "$str"
then
local strp1='\'$p1'\'$p2$1$p3:
local strp2='\'$p1'\'$p2$1$p3
eval "sed -i '/$strp1/ s/$/&$str3/g' $file"
eval "sed -i 's/$strp1/$str1$1$str2/g' $file"
case $i in
10)
sup='⑩'
;;
9)
sup='⑨'
;;
8)
sup='⑧'
;;
7)
sup='⑦'
;;
6)
sup='⑥'
;;
5)
sup='⑤'
;;
4)
sup='④'
;;
3)
sup='③'
;;
2)
sup='②'
;;
1)
sup='①'
;;
*)
sup=$i
;;
esac
local strp3=$str4$i$str5$sup$str6
eval "sed -i 's/$strp2/$strp3/g' $file"
fi
}
for ((i=10; i>0; i--))
do
strReplace $i
done
只处理10个标记,超过需要再扩充脚本。