Ответ 1
Вы можете добавить enclose="none"
в тэг <source>
:
There is <source lang="mylanguage" enclose="none">inline code</source> in this paragraph.
Есть ли расширение MediaWiki, которое поддерживает подсветку синтаксиса inline? (т.е. с поддержкой фрагментов кода, встроенных в обычные текстовые абзацы)
В настоящее время я использую SyntaxHighlight GeSHi, но я не уверен, что он поддерживает встроенную подсветку.
Вы можете добавить enclose="none"
в тэг <source>
:
There is <source lang="mylanguage" enclose="none">inline code</source> in this paragraph.
Самое простое решение: <code>put your code here</code>
Во-первых, пометьте те символы, о которых вы заботитесь, с помощью span, code, source, div, p,
и т.д. Для встроенных с минимальными изменениями диапазон, вероятно, является тем, что вы ищете.
Во-вторых, примените стиль к помеченным символам. Для подсветки вы, вероятно, хотите что-то вроде background: yellow
Пример:
Highlights like <span style="border:thin solid green; background: yellow;">this</span> really draw the eye.
Я обнаружил, что включение всего блока с помощью <pre></pre>
показало лучший формат.
При использовании <code>inline code</code>
или, например, <syntaxhighlight lang="groovy" inline>inline code</syntaxhighlight>
работает, набрав это, это настоящая боль, особенно если вы имеете дело с большим количеством фрагментов кода.
Если вики находятся под вашим контролем, вы можете расширить свою разметку. В приведенном ниже примере показано, как сократить приведенные выше значения до <c>inline code</c>
и <sg>inline code</sg>
соответственно с помощью метода расширений тегов.
Создайте каталог Customtags
для вашего нового расширения в каталоге расширений MediaWiki (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";
Аналогичным образом вы можете создавать короткие теги для больших блоков кода.