2011-02-02 24 views
16

Có bất kỳ phần mở rộng nào của MediaWiki hỗ trợ đánh dấu cú pháp nội tuyến không? (tức là với sự hỗ trợ cho các đoạn mã được nhúng trong các đoạn văn bản thông thường)Inline Syntax Highlighting trong MediaWiki

Tôi hiện đang sử dụng SyntaxHighlight GeSHi, nhưng tôi không chắc nó hỗ trợ làm nổi bật nội tuyến.

+0

Để biết thông tin: đối với * không nội tuyến *, giải pháp đơn giản nhất là đặt ký tự khoảng trắng ở đầu dòng. – Wikis

Trả lời

17

Bạn có thể thêm enclose="none"-<source> tag của bạn:

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

Điều đó thực sự hiệu quả! Tuy nhiên, 1) đoạn văn bản 'mã' trông (quá) nhỏ (er) và 2) không có cách nào để nói một cái gì đó như' 'và thực sự có nghĩa là ' mã số '? –

+1

Cập nhật: Thẻ được hỗ trợ bây giờ là ' inline code' mặc dù ở trên vẫn hoạt động để tương thích. Ngoài ra, kể từ [tháng 6 năm 2015] (https://gerrit.wikimedia.org/r/#/c/218584/) MediaWiki sử dụng [Pygments] (https://en.wikipedia.org/wiki/Pygments) thay vì GeSHi . Để biết thêm thông tin, hãy xem: https://www.mediawiki.org/wiki/Extension:SyntaxHighlight – WinTakeAll

8

Giải pháp đơn giản nhất là sử dụng: <code>put your code here</code>

+0

Không chắc chắn nó có liên quan đến cài đặt của trình duyệt của tôi hay không (đọc, phông chữ tôi sử dụng) nhưng tôi không thể nói nhiều về sự khác biệt, tức là phân biệt mã từ văn bản bình thường. –

+0

@NikosAlexandris: hãy thử một trình duyệt khác và Ctrl-F5 để buộc làm mới. – Wikis

+0

@Nikos: Sử dụng các kiểu CSS tùy chỉnh để cải thiện giao diện của các phần 'mã' của bạn (http: // yourwiki/wiki/MediaWiki: Common.css). – mivk

0

Thứ nhất, thẻ các nhân vật mà bạn quan tâm với span, code, source, div, p, vv Đối với inline với những thay đổi tối thiểu, khoảng có lẽ là những gì bạn đang tìm kiếm.

Thứ hai, áp dụng kiểu cho các ký tự được gắn thẻ. Để làm nổi bật có thể bạn muốn một cái gì đó giống như background: yellow

Ví dụ:

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

0

tôi thấy rằng kèm theo toàn bộ khối với <pre></pre> cho thấy định dạng tốt nhất.

0

Trong khi sử dụng <code>inline code</code> hoặc, ví dụ: <syntaxhighlight lang="groovy" inline>inline code</syntaxhighlight>, việc đánh máy này là một nỗi đau thực sự, đặc biệt nếu bạn xử lý nhiều đoạn mã.

Nếu wiki nằm dưới sự kiểm soát của bạn, bạn có thể extend its markup. Ví dụ dưới đây cho thấy cách rút ngắn các phương thức trên thành <c>inline code</c><sg>inline code</sg> tương ứng bằng phương pháp tag extensions.

Tạo thư mục Customtags cho tiện ích mở rộng mới trong thư mục tiện ích mở rộng MediaWiki của bạn (MW_HOME/extensions/). Trong thư mục này tạo một file customtags.php với nội dung sau:

<?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>'; 
} 

?> 

Cuối cùng đăng ký phần mở rộng này trong LocalSettings.php và bạn tốt để đi:

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

trong một cách tương tự bạn có thể tạo thẻ ngắn cho lớn hơn khối mã.