DocBook写blog遇到的问题

DocBook书写CSDN blog

 

本文使用docbook书写,您可以在这里获得xml文件  

Abstract

描述了使用DocBook书写blog遇到的换行问题及解决方法


Table of Contents

参考书目

我现在开始使用DocBook书写文档了,blog也不例外。使用DocBook的优点就是一份源文件能够有多种展现形式,比如可以方便的输出成html, pdf, rtf等格式。现在很多blog,比如CSDN blog都有源代码模式,这样我可以使用xml书写文档,然后转化成html,最后将html源文件直接张贴到blog。这种方式一直进行得很顺利,直到有一天我的文档中包含了的代码示例。在DocBook中,代码通常包含在<programlisting>和</programlisting>之间,转化成html格式后,代码包含在<pre>和</pre>之间。通常<pre>和</pre>之间的换行符在显示时保留的,这样代码并没有使用<br>,而是直接用换行符表示换行的。但是将html源代码张贴到blog后,blog会将换行符过滤掉,最后blog中包含的代码示例就都显示在一行了。为了解决这个问题,我不得不手工的在每行代码之后增加<br>标签,如果代码行数少还好办,如果代码行比较多,无疑是一行枯燥乏味的重复劳动。

能否借助工具将<pre>和</pre>之间的代码行后面插入<br>标签呢。脚本在处理文件方面的非常强大,处理此类问题轻而易举。以下就是我写的脚本,解决了代码张贴的问题:

        sed  's/<pre//n<pre/g' $1 > $2
        sed -i 's/<//pre>/<//pre>/n/g' $2
        sed -i '/^<pre.*<//pre>$/s/<//pre>//n<//pre>/g' $2
        sed -i '/<pre/,/<//pre>/{/pre/!s/$/<br>/g}' $2
        

第一句是在所有<pre之间增加换行符,第二条语句在</pre>之后增加换行符,第三条语句是将<pre和</pre>同在一行的打散成两行。前三行都是为第四行转换做准备工作的,主要是sed对于单行匹配及多行匹配不好混用。第四句在所有<pre和</pre>之间的代码每行后面增加<br>。完整的脚本可以在这里获得。

可能脚本的功力还不够,如果代码行中包括pre的话,这段脚本就工作不正常,所以我又写了一个小C程序进行处理,你可以从这里获得代码。

参考书目

Richard Blum. Linux Command Line and Shell Scripting Bible. 2008. 978-0-470-25128-7.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值