是否有支持内嵌语法突出显示的MediaWiki扩展程序? (即支持嵌入常规文本段落中的代码片段)
我目前使用SyntaxHighlight GeSHi,但我不确定它是否支持内联突出显示。
答案 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>
封闭整个块显示格式最佳。