用戶:紅石小蟈/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)開頭的一行代碼中)時,無論這個換行是直接體現在代碼里的,或是出現在引用里的,都會導致這個列表的結束。
標題
比如某一行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]]
即可。
外鏈
引用
魔術字
表格
預編譯
雜項
註釋與外部連結
- ↑ mw:Help:Links
- ↑ 事實上,跨維基連結並不是原生 MediaWiki 的功能,而是某個插件的作用