置顶公告:【置顶】关于临时开启评论区所有功能的公告(2022.10.22) | 【置顶】关于本站Widget恢复使用的公告
  • 你好~!欢迎来到萌娘百科镜像站!如需查看或编辑,请联系本站管理员注册账号。
  • 本镜像站和其他萌娘百科的镜像站无关,请注意分别。

Module:Wikitable

猛汉♂百科,万男皆可猛的百科全书!转载请标注来源页面的网页链接,并声明引自猛汉百科。内容不可商用。
跳到导航 跳到搜索
Template-info.svg 模块文档  [查看] [编辑] [历史] [刷新]

本模板基于enwp:Template:Wikitable的思路重写,理论上在语法无误的前提下效果一致。

简介

本模板主要用于简化嵌套在其它模板内的表格。例如,如果想在{{tabs}}中显示表格,需要对表格中的管道符和等于号(即“|”和“=”)使用{{!}}和{{=}}转义,否则表格将无法正常显示。这一额外步骤会使表格变得难以阅读和编写。为了解决这个问题,可以使用本模板,例如:

{{table | class="wikitable"
|-
! 标题1 !! 标题2
|-
| 内容1 || 内容2
|-
| 内容1 || 内容2
}}

最终显示效果与使用表格相同。

标题1 标题2
内容1 内容2
内容1 内容2

注意:除了表格第一行可以直接使用=以外,其他地方的等于号请使用{{=}}代替。

与使用表格的对比

前后对比如下:

使用表格而不是本模板:

{{tabs

|bt1=分页名称
|tab1=分页内容
{{{!}} class="wikitable"
{{!}}-
! 标题1 !! 标题2
{{!}}-
{{!}} 内容1 {{!}}{{!}} 内容2
{{!}}-
{{!}} 内容1 {{!}}{{!}} 内容2
{{!}}-
{{!}} colspan="2" {{!}} 跨列内容
{{!}}}

}}

效果如下:

分页名称
分页内容
标题1 标题2
内容1 内容2
内容1 内容2
跨列内容

使用本模板:

{{tabs

|bt1=分页名称
|tab1=分页内容
{{table | class="wikitable"
|-
! 标题1 !! 标题2
|-
| 内容1 || 内容2
|-
| 内容1 || 内容2
|-
| colspan{{=}}"2" | 跨列内容
}}

}}

效果如下:

分页名称
分页内容
标题1 标题2
内容1 内容2
内容1 内容2
跨列内容

两种写法最终效果相同,但使用本模板可以显著简化代码。

  1. local getArgs = require('Module:Arguments').getArgs
  2. local p = {}
  3. function p.main(frame)
  4. local args = getArgs(frame, {
  5. removeBlanks = false,
  6. trim = false
  7. }) -- 保留空格和换行
  8. return p._main(args)
  9. end
  10. function p._main(args)
  11. local buffer = {'{|'} -- 表格开头的{|
  12. for k, v in pairs(args) do
  13. -- 没记错的话Lua输入命名参数后是没法按照顺序呈现的,因此需要通过遍历查找命名参数,即表格第一行<table>中的class等内容
  14. if type(k) ~= 'number' then
  15. --[=[
  16. 表格第一行,此时直接读入的参数不包括等号前面的内容,
  17. 例如class="wikitable"只会读入一个键为class、值为"wikitable"的参数,需要手动将前面的class=加上去。
  18. ]=]
  19. table.insert(buffer, string.format(' %s=%s', k, v))
  20. end
  21. end
  22. table.insert(buffer, '\n')
  23. for _, v in ipairs(args) do
  24. table.insert(buffer, '|')
  25. table.insert(buffer, v)
  26. end
  27. -- 补上结尾的|},然后将表串起来并返回
  28. table.insert(buffer, '\n|}')
  29. return table.concat(buffer)
  30. end
  31. return p;