模板: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}}-可显示更复杂的家族图