分享

用 syntaxhighlighter 插件在文章中插入程序源代码

 zhuoyue图书馆 2012-05-10
用 syntaxhighlighter 插件在文章中插入程序源代码 E-mail
作者:白建鹏   
2007-12-22

如果要在文章中插入某种编程语言的程序代码,Joomla! 本身自带的 Geshi 触发器显然不能让我们满意。本站曾经撰文介绍了 Geshibot 触发器,是改进了的 Geshi,但是缺乏一项大家都需要的功能:自定义代码的起始行号。

例如:假如你要展示某个 Python 文件中第 17 行至 34 行的代码,那么 Geshibot 展示出来后其起始行号是 1  而不是 17。这就容易误导读者。我曾经给 Geshibot 的作者写信建议他改进这个功能,但是直到现在也没有下文了。

现在,SyntaxHighlighter 触发器/插件却解决了这个问题!与 Geshibot 相比,SyntaxHighlighter 还增加了一个功能,就是“复制到剪切板”功能及“折叠(隐藏)代码展示区域”的功能。本文来简单介绍一下 SyntaxHighlighter 的用法。

 

Code insertion with syntaxhighlighter
Code insertion with syntaxhighlighter

 

从上图中可以看出,这段展示的代码起始行号为 10,并且代码区域顶部有“复制到剪切板”的按钮,点击之后就复制了这段代码。顶部第二行的 10  20 30 40 这些数字,表示的是“列号”(Column number),相当于 Word 中的“标尺”,能够提供“该字符位于第几列”的参考。“打印”按钮点击后就仅仅打印代码区域,可以说为分享这段代码提供了又一种选择。另外,代码区域底部还有横向滚动条,这提示:如果某行代码的长度超过了网页中 mainbody 区域的宽度,会自动增加滚动条以方便查看,而不会撑破版面布局。

 

当然了,展示区域对代码进行高亮显示(Highlight)已经是最基本的功能了。

在安装 SyntaxHighlighter 时我注意到,作者并未提供使用说明。但是他提到,本触发器是基于 alex.gorbatchev 开发的 SyntaxHighlighter Javascript 脚本而制作的。因此,我访问了 SyntaxHighlighter 脚本的官方网站,找到了使用说明。下面简单说明一下:

 

SyntaxHighlighter 基本用法

只要在文章中用 <pre> </pre> 这个标记将所要展示的代码包围即可。这也是所有代码引用触发器的共同特点。

不过,在 <pre> 标记中,必须增加一点内容才能使 SyntaxHighlighter 生效。语法是:

<pre name="code" class="语言:参数">

 …… 你的代码 ……

</pre>

结束标记 </pre> 不需要任何参数。

那么,上面用法中的“语言”和“参数”分别指哪些?

 

SyntaxHighlighter 支持的程序语言

目前,SyntaxHighlighter 支持多达 12 种编程语言。它们是:

撰写文章时的参数名称

所代表的编程语言

  cpp, c, c++

  C++

  c#, c-sharp, csharp

  C#

  css

  CSS

  delphi, pascal

  Delphi

  java

  Java

  js, jscript, javascript

  Java Script

  php

  PHP

  py, python

  Python

  rb, ruby, rails, ror

  Ruby

  sql

  Sql

  vb, vb.net

  VB

  xml, html, xhtml, xslt

  XML/HTML

 

SyntaxHighlighter 参数

SyntaxHighlighter 支持以下参数:

参数代码  

参数含义

nogutter

隐藏行号

nocontrols

隐藏顶部控制按钮

collapse

以折叠隐藏形式展示

firstline[value]

起始行号,默认为 1

showcolumns

显示标尺

 

从前面的基本用法中已经看到,“语言”与“参数”之间有一个英文冒号。如果要增加多个参数,那么每一个参数前面都要有一个英文冒号。

例如,我们要展示一段来自 C++ 程序文件的代码,起始行号为 169,要显示标尺,同时以折叠隐藏方式展示。那么,其使用方法就是:

<pre name="code" class="cpp:showcolumns:firstline[169]:collapse">

…… 代码 …… 代码 ……

</pre>

 

在前台的效果就是:

SyntaxHighlighter Code Collapsed
SyntaxHighlighter Code Collapsed

如果读者点击“+ 展开代码”按钮,就能展开整段代码如下:

SyntaxHighlighter C++ Code Example
SyntaxHighlighter C++ Code Example

另外,SyntaxHighlighter 还自带了 CSS 文件,便于用户进行一些自定义。例如,你可能希望展示代码的区域带有金黄色背景;或者你希望代码区域的英文使用特殊的字体等等。

SyntaxHighlighter 同时发布了两个版本,分别针对 Joomla! 1.5 和 Joomla! 1.0.x。经过测试,两个版本都能在各自平台上正常运行。因此,建议需要经常在文章中插入程序代码的用户选择 SyntaxHighlighter 。

SyntaxHighlighter 不能使用

今天早上刚发表了本文的前面内容,下午就看到论坛里有人提问这个问题。我才恍然大悟:有一点虽然与 SyntaxHighlighter 无关,但是我却忘记提醒了。那就是 —— 请注意你的 wysiwyg 编辑器

大多数“所见即所得”编辑器,包括 Joomla! 自带的 wysiwyg 编辑器 TinyMCE,都有一个功能比较糟糕,就是很难插入 HTML 代码。如果你直接在 wysiwyg 状态下插入 SyntaxHighlighter 的语法,那么前台展示的结果就是代码本身,而不是执行 SyntaxHighlighter 触发器命令的结果。

我曾经点击 TinyMCE 编辑器上面的 HTML 按钮,试图通过这个标准的渠道来插入 SyntaxHighlighter 用法代码,但是仍然不能成功。

解决方法

先把文章的其他部分编辑好,然后保存;回到“全站设置”,将编辑器选择为“No WYSIWYG Editor”,保存设置;再回到刚才的文章,现在看到满篇的 HTML 源代码(不过我想熟悉 HTML 的人不会被吓倒),找到需要插入 SyntaxHighlighter 语句的地方,将代码插入,然后保存文章,再刷新前台就看到效果了。

如果你觉得这种方法太辛苦,我建议你不要用 TinyMCE 编辑器了。换一个可以轻松插入 HTML 源代码的编辑器,如 JoomlaFCK2 或者更好的 wysiwygpro

文件标题: Joomler! SyntaxHighlighter for Joomla! 1.5 程序源代码展示插件 v2.1 多国语言版 (详情)
文件类型: zip
版本: 2.1
文件大小: 98 Kb
下载次数: 217

 

文件标题: Flexheader3 for Joomla! 1.6 自动按页分配不同页头图像的模块 v1.3.6 多国语言版 (详情)
文件类型: zip
版本: 1.3.6
文件大小: 57 Kb
下载次数: 31

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多