MediaWiki中的内联语法突出显示

时间:2011-02-02 23:03:06

标签: syntax-highlighting mediawiki

是否有支持内嵌语法突出显示的MediaWiki扩展程序? (即支持嵌入常规文本段落中的代码片段)

我目前使用SyntaxHighlight GeSHi,但我不确定它是否支持内联突出显示。

5 个答案:

答案 0 :(得分:18)

您可以将enclose="none"添加到<source>代码:

There is <source lang="mylanguage" enclose="none">inline code</source> in this paragraph.

答案 1 :(得分:9)

最简单的解决方案是使用:<code>put your code here</code>

答案 2 :(得分:1)

使用<code>inline code</code>或者使用<syntaxhighlight lang="groovy" inline>inline code</syntaxhighlight>输入此内容时,确实非常痛苦,尤其是在处理大量代码段时。

如果wiki在您的控制之下,您可以extend its markup。以下示例显示了如何使用tag extensions方法将上述内容分别缩短为<c>inline code</c><sg>inline code</sg>

在MediaWiki扩展目录(Customtags)中为新扩展程序创建MW_HOME/extensions/目录。在此目录中,使用以下内容创建customtags.php文件:

<?php

$wgHooks['ParserFirstCallInit'][] = 'customtagsInit';

function customtagsInit(Parser $parser) { 

    // parameters: custom tag, custom renderer function
    $parser->setHook('c', 'customRenderShortCode');
    $parser->setHook('sg', 'customRenderSourceGroovy');

    return true;
}

function customRenderSourceGroovy($input, array $args, Parser $parser, PPFrame $frame) {
    $input = '<syntaxhighlight lang="groovy" inline>' . $input . '</syntaxhighlight>';
    $wikiparsed = $parser->recursiveTagParse($input, $frame);
    return $wikiparsed;
}

function customRenderShortCode($input, array $args, Parser $parser, PPFrame $frame) {
    $wikiparsed = $parser->recursiveTagParse($input, $frame);
    return '<code>' . $wikiparsed . '</code>';
}

?>

最后在LocalSettings.php注册此扩展程序,您就可以了:

require_once "$IP/extensions/Customtags/customtags.php";

以类似的方式,您可以为更大的代码块创建短标记。

答案 3 :(得分:0)

首先,使用span, code, source, div, p,等标记您关注的字符。对于内联的最小更改,span可能就是您要查找的内容。

其次,将样式应用于标记的字符。要突出显示,您可能需要background: yellow

之类的内容

示例:

Highlights like <span style="border:thin solid green; background: yellow;">this</span> really draw the eye.

答案 4 :(得分:0)

我发现用<pre></pre>封闭整个块显示格式最佳。