2004年11月8日

使用highlight实现代码语法高亮

写了一段时间的blog,常常要在blog上贴些代码。以前的方法是用vim的一个标准的plugin:TOhtml,功能还算强大,能满足我的要求。可是前天发生的事让我觉得有必要重新找一个工具。
vim的TOhtml有一个类似theme的概念,当你用console时,它用一套配色方案;用GUI时,用另一套配色方案。比如保留字在黑色背景的console窗口是 亮黄色 ;在白色的背景GUI下是 红棕色 。这当然很好,不过前天我是在console下用vim编辑的blog的, 然后用我写的一个 小工具 直接发到blog上,结果代码在网页上看起来异常难看。在重新配色时,我发现TOhtml对字体、颜色进行标识时,是直接在每个token上直接使 用font标签,违背了内容和表示分离的设计规范。弊病自然有很多,其中最大的,莫过于不能对颜色进行整体改变。特别是当blog的skin更改,背景色 发生改变时,手工改动简直是生不如死阿 @_@

在网上找了找,发现 highlight 的介绍比较吸引人。试用了一下,发现跟我想象中的工具一模一样,输出xhtml,每个token都有一个css class ,只要修改css就可以实现theme功能。现在绝大多数的blog都支持自定义css,以上的问题一下子都解决了。而且,highlight还象 ident一样有排版功能。果然是英雄所见略同^_^。

highlight 的输出格式有: HTML, XHTML, RTF, LaTeX , TeX

highlight 支持的语言包括:
Ada 95, Agda, AMPL, Aspect, Assembler, Amtrix, Avenue, (G)AWK, Bash, BlitzBasic, BMS, C, C++, C#, ClearBasic, Clipper, COBOL, CSS, DOS-Batch, Eiffel, Euphoria, Express, Fortran, Haskell, HTML, HTTPD, IDL, INI, Jasmin, Java, JavaScript, LaTeX, LDIF, Lotus Script, Lua, Make, Maya, Matlab, Modelica, Modula 3, (Object) Pascal, Paradox, PATROL, Perl, PHP, Pike, PL/1, PL/SQL, POV Ray, Progress, Python, Rexx, Ruby, Small, Spin, Sybase, VHDL, Visual Basic, XML.

是不是多得有些吓人呢。
BTW. highlight支持win32、bsd、linux等主流平台。恩不说了,搞得象在做广告就不好了^_^

没有评论: