模板:Family tree
| 本模板含有複雜而精密的擴展語法。 編輯本模板前,建議您先熟悉解析器函數與本模板的設計思路、運作原理等。若您的編輯引發了意外的問題,請儘快撤銷編輯,因為本模板可能被大量頁面使用。 您所作的編輯可先在模板沙盒或您的個人頁面中進行測試。  | 
使用本模板製作大型系譜時容易超過伺服器允許的模板展開後長度,導致模板無法渲染。這時候請改用新的{{Tree chart}}模板(通過Lua實現)。 用戶腳本en:User:Daduxing/familytree.js可用於轉換到新模板,轉換例子有{{邓小平家系}}。  | 
此模板使用類似ASCII藝術的句法生成簡單系譜圖。它用HTML表格和CSS在適當的位置生成文字框和線條以構成家族樹,使用者在文本框內可以任意運用維基語法。
此模板基於英語維基上的模板en:Template:Familytree,由Ilmari Karonen用戶開發和維護。
參數
模板接受至多99個未命名參數,每個參數代表一個「格子」或者一個「框」。
- 格子內含有線狀元素,用來生成橫縱線條以及各種拐角以連接各個「框」。每一個格子用簡單的字符參數來描述,一個特別的例子是空格子,用一個空格來描述不含任何線條的格子。下面列出模板支持的格子類型:
 
, | 
 | 
. | 
 | 
` | 
 | 
' | 
 | |||||||||||||||
^ | 
 | 
v | 
 | 
( | 
 | 
) | 
 | |||||||||||||||
- | 
 | 
! | 
 | 
+ | 
 | 
  | 
 | |||||||||||||||
F | 
 | 
7 | 
 | 
L | 
 | 
J | 
 | |||||||||||||||
A | 
 | 
V | 
 | 
C | 
 | 
D | 
 | |||||||||||||||
~ | 
 | 
: | 
 | 
% | 
 | |||||||||||||||||
* | 
 | 
} | 
 | 
{ | 
 | ||||||||||||||
# | 
 | 
y | 
 | 
h | 
 | ||||||||||||||
] | 
 | 
[ | 
 | ||||||||||||||||
- 框內可以填寫任意的維基標記,框內的內容用附加命名變量的方法來加以描述。每一個框為三個格子寬,並且通常具有2px寬的黑邊。附加的變量可以取用任何合法的名字,但是建議不要使用單字符的名字以免與「格子」衝突。
 
框的外形可以由參數border和boxstyle控制,前一個以像素為單位控制框邊的寬度,後者可以為任意CSS語句,用來修飾框的外觀。例如下列代碼:
{{familytree/start}}
{{familytree|border=0|boxstyle=background:#dfd;| | FOO |y| BAR | |FOO=Box 1|BAR=Box 2}}
{{familytree|border=0|boxstyle=background:#dfd;| | |,|-|^|-|.| | }}
{{familytree|border=0|boxstyle=background:#dfd;| | FOO | | BAR | |FOO=Box 3|BAR=Box 4}}
{{familytree/end}}
產生如下效果:
| Box 1 | Box 2 | ||||||||||||||||
| Box 3 | Box 4 | ||||||||||||||||
{{familytree/start}}模板也接受一個可選的style參數來制定整個表格的格式。
使用範例
此範例可能對於第一次使用者有所幫助,當讀者掌握相應技巧後,並不需遵循此過程。
步驟一:首先在紙上把家族圖畫好,如下圖:
| 媽媽 | 爸爸 | ||||||||||||||||||||||
| 哥哥 | 我 | 妹妹 | |||||||||||||||||||||
步驟二:考慮將這個圖放置在一個長方形中,圖形由一個個小的方格子所組成,填滿整個長方形(如同在拼圖),每個方格子為以下3種元素之任一:
- 連接用的線條,例如
 
- 文字與邊框,例如
 
| 爸爸 | |||||
- 空格,即除以上兩種之外的空白處,每個空格即為1個方格子大小的空白。
 
按照這種方法,以上圖形可以用3行11列個方格子來表示,具體分解如下(這一步為關鍵步驟,如出錯會導致圖形的偏差):
| 空格 | 空格 | 媽媽 | 
 | 
爸爸 | 空格 | 空格 | |||||||||||||||||||||||||||||||||||||||
| 空格 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
空格 | |||||||||||||||||||||||||||||||||||
| 哥哥 | 空格 | 我 | 空格 | 妹妹 | |||||||||||||||||||||||||||||||||||||||||
這裡特別提醒下對於空格數量的確認,你可能不能一下子看出第一行左側有2個空格,但是當你整齊地將圖形進行排列和劃分後,即能發現應該補足的空格數量。
步驟三:換成對應的代碼,每個方格子的代碼之間使用豎線條 | 來進行分隔:
- 看到連接線,比如
 
- 看到文字和方框,那就在豎線條之間加入文字(注意文字的方框不需要單獨的代碼)
 - 看到空格,就是豎線條之間為一個空格
 
以下是替換後的結果,與上列表格一一對應:
| | | 妈妈 |y| 爸爸 | | | | |,|-|-|-|+|-|-|-|.| | | 哥哥 | | 我 | | 妹妹 |
馬上就要成功了,不過文字部分還要稍作處理,對於文字,你需要自行創造一個代碼填入該文字應該占據的位置,然後在該行之後說明這種替代關係。
這裡比如把媽媽用 「Mum」表示,爸爸用「Dad」表示(當然這是你自己定義的,用爹、粑粑、bb之類的表示均可,但最好使用三個字符,因為使用三個字符時,上下行對齊,容易檢查)。在下面,「Mum」和「Dad」 兩個代碼已經替換了原有文字,而 「Mum=媽媽 | Dad=爸爸」則加在原有語句後面表示這種替代關係,注意,「Mum=媽媽」和「Dad=爸爸」之間是使用一條豎線 | 來進行分隔的,以此類推。
| | | Mum |y| Dad | | | Mum=妈妈 | Dad=爸爸
步驟四:按以下格式,即為完整的、可以使用的代碼:
{{familytree/start}}
{{familytree | | | Mum |y| Dad | | |Mum=妈妈|Dad=爸爸}}
{{familytree | |,|-|-|-|+|-|-|-|.| | }}
{{familytree | Bro | |  I  | | Sis |Bro=哥哥|I=我|Sis=妹妹}}
{{familytree/end}}
下面給出一個更大的家族圖與代碼,供參考,可以看到文字部分使用了一些維基語法:
| 奶奶 | 爺爺 | ||||||||||||||||||||||||
| 媽媽 | 爸爸 | ||||||||||||||||||||||||
| 哥哥 | 我 | 妹妹 | |||||||||||||||||||||||
{{familytree/start}}
{{familytree | | | | 奶 |~|y|~| 爷 | | 奶=奶奶|爷=爷爷}}
{{familytree | | | | | | | |)|-|-|-|.| }}
{{familytree | | | 妈 |y| 爸 | |叔| 妈=妈妈|爸=爸爸|叔=<s>叔叔</s>}}
{{familytree | |,|-|-|-|+|-|-|-|.| | | }}
{{familytree | 哥 | | 俺  | | 妹 | | | 哥=哥哥|俺='''我'''|妹=[[妹妹]]}}
{{familytree/end}}
相關資料
- {{Tree chart}}-可顯示更複雜的家族圖