生成带弹注的epub

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个标记,超过需要再扩充脚本。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容