2023年政策修订增补工作正在进行中,欢迎参与!
  • Moegirl.ICU:萌娘百科流亡社群 581077156(QQ),欢迎对萌娘百科运营感到失望的编辑者加入
  • Moegirl.ICU:账号认领正在试运行,有意者请参照账号认领流程

用戶:紅石小蟈/WikitextLogic

萌娘百科,萬物皆可萌的百科全書!轉載請標註來源頁面的網頁連結,並聲明引自萌娘百科。內容不可商用。
跳至導覽 跳至搜尋

這個頁面將以貼近本質的方式講述MediaWiki是如何把您輸入的Wikitext解析成HTML。

閱讀此頁面可能需要一定的邏輯思維基礎,若無特殊說明,這裏所有的符號默認是半角的。

由於萌百相對於原生 Mediawiki 裝了很多的額外插件,這篇內容里的許多信息可能並不適用於其他 wiki.

序言 - Wikitext和HTML

對於Wikitext,在座的各位一定有所了解,Wikitext就是我們用來編輯萌百之類的媒體維基(Media Wiki)網站的語言,更準確地說,是标记语言(Markup Language),什麼是標記語言呢?你可能聽說過一些其他的標記語言,比如HTML, Markdown, LaTeX之類的,這些語言都屬於標記語言。標記語言通俗講就是能被軟件解析成能給你看的界面的語言。MediaWiki所做的就是將Wikitext這種標記語言轉換成HTML, 通過瀏覽器展現給你。

換行

在Wikitext中,兩個連着的換行(Line Break, 即大多數語言中的"\n")一般情況下對應着HTML里的一個段落間隔,即兩個不同的<p></p>標籤,特殊情況下,當有一個<div>標籤仍未閉合(即得到對應的</div>標籤)時,會直接在div內生成<p>標籤。

通常情況下,僅有一個換行的時候,這個換行對應着HTML文件里的一個換行,但當內容包含在列表元素里(即Wikitext中#(井號, Hash),*(星號, Asterisk), ;(分號, Semicolon)或:(冒號, Colon)開頭的一行代碼中)時,無論這個換行是直接體現在代碼里的,或是出現在引用里的,都會導致這個列表的結束。

標題

通常情況下,當一行的開頭和結尾都有$n$個連續的等號時($1 \le n \le 6$),這一行就會被解析成一個$n$級標題,多餘的等號會被解析成標題的一部分。

比如某一行Wikitext的內容是== blablabla ==,那麼這一行會被解析成<h2>blablabla</h2>,至於頁面端標題後面帶的「編輯」與移動端標題後面編輯的符號,是MW內置的。而這允許「一級標題」在正文中存在(儘管並不推薦這種寫法)。

列表

Wikitext中存在3種不同的列表,分別是有序列表無序列表,和混合列表,其中有序列表用#聲明,無序列表用*聲明,混合列表用;:共同聲明。

有序列表

無序列表

混合列表

連結

Wikitext中的連結有兩種格式,內鏈和外鏈。[1]

內鏈

內鏈,即內部連結,是鏈向自己維基(即萌娘百科)的超連結。

Wikitext中內鏈的寫法是[[ooo]][[ooo|xxx]], 即為用兩對"[" 和 "]"(中括號, Square Brackets)包起來的一段文字。若中括號中有"|"(管道符, Pipe),則管道符之前是鏈向的頁面名稱,之後則是連結上顯示的文字;若沒有管道符,則會將鏈想的頁面名稱作為連結上顯示的文字。具體來說,[[ooo]][[ooo|xxx]]都是鏈向https://zh.moegirl.org/ooo的連結(其中ooo是頁面名稱)。若有管道符但管道符後面無內容則會按照這樣的邏輯預編譯:去掉標題文字":"(冒號)及之前的內容或/和第一個"("與最後一個")"(圓括號, Parentheses)及括號間的內容,放到管道符之後作為顯示文字。

特殊內鏈

Wikitext中有兩種內鏈比較特殊,分別是File命名空間下的內鏈(形如[[File:ooo|xxx|xxx|xxx|xxx]], 具體見Help:圖像,這裏不再闡述細節)和Category命名空間命名空間下的內鏈(形如[[Category:ooo|xxx]]),前者會生成成一張圖片,後者會使寫入這段的這個頁面包含在此分類里,並按照xxx排序。

正確生成鏈向這兩個命名空間內鏈的方法是在連結前面加一個:,形如[[:ooo:xxx]],這樣就會生成到對應頁面的連結了。

跨wiki鏈

跨維基連結是一種介於內鏈和外鏈之間的連結[2],它用內鏈的格式書寫(此特性在下面還會被提到),但會連結到別的維基。跨維基鏈的格式是[[prefix:name]],其中的 "prefix" 是鏈向的維基名,所有的萌百能用的 prefix 見Special:跨wiki

跨wiki鏈的原理類似同一命名空間的不同別名,這裏就不再贅述。

跨語言連結

跨語言連結是一種特殊的跨wiki連結,格式為[[lang:oo]](這裏的lang語言代碼,漢語對應zh,英語對應en,日語對應ja),它並不會原地生成一個連結,而是在側邊欄上生成一個到對應語言萌百的連結(e.g. 二次元

若想原地生成到對應語言萌百的連結,需要和特殊內鏈這裏一樣的技巧,寫[[:lang:oo]]即可。

外鏈

引用

魔術字

表格

預編譯

雜項

註釋與外部連結

  1. mw:Help:Links
  2. 事實上,跨維基連結並不是原生 MediaWiki 的功能,而是某個插件的作用