终于添加了内容索引(TOC)


Markdown格式转换成带有TOC的网页有N 多种方法,pandoc, markdown_py等等。 茫茫工具海,到底哪一种才适合github上jekyll网站? 迷茫了,彻底迷茫了…… 首先试一试markdow_py,生成的toc方法很简单很直接:

	markdown_py -x toc test.md > test.html

用这种方法生成的html将头标记也当成内容,并且文章内容中所有的特殊标记都会转换,比如说代码高亮的标记。 同样使用pandoc的自定义模板的方法,

1
	pandoc --toc  --template ~/templates/markdown.FORMAT -f markdown -t html 2014-04-11-test.md > 2014-04-11-test2.md

转换也存在无转换代码块的问题。

对于rdiscount渲染markdown的网页,似乎采用任何渲染的方法都不管用。 (有几篇提到更改jekyll本地文件中的那个部分就可以生成TOC,不明觉厉) 唯一可行的方法是使用jquary动态的生成索引目录。 前提是在渲染的时候对于每一个标题都生成id参数。 正在这时,忽然见到有人说rdiscount不如redcarpet,于是大刀阔斧地改动,其过程反反复复竟然充满坎坷。

首先一点是浏览器加载一次js之后就不再加载,如果改动了脚本,jekyll自动生成内容不会刷到页面上,页面上始终还是原来的模样。 刚开始没意识到是这个问题,还以为真是见鬼了。 总也不弄页面,一些问题本来不是bug也成了bug。 解决了这个问题,然后往下进行测试。 写点css,把内容索引放到右边,打算使其左侧由文字填充。 由于用vim用的习惯了随便敲上一串字母,然后复制,让它自动执行100次粘贴。 结果发现文字部分竟然不填充,而且超出了边界。 没办法,再进行调整。 情况就是如果去掉css文字是环绕的,不去掉就不行。 调整了1个小时也没有结果,不得不觉得再次见鬼了。 后来直接发布到网站上,测试,发现,其他的文章的内容并不超出边界。 这是什么道理? 原来加上CSS之后将内容定义为了英文单词,一个单词这么长当然不断行了!

使用jquery.toc.js的方法

  1. 在其网站下载jquery.toc.js的源码
  2. 在网页中引用该js
  3. 再需要显示toc的地方加入如下代码
<div class="toc"></toc>
石见石页 /
在共享协议(CC)下发布于
类别: 学术 
标签: 内容索引  网站  博客  jquary  中
不愿分享?也可捐赠……