使用维基教科书/高级技巧
我们在标签部分已经简要地提到了模板。现在我们将深入了解它们的一些更高级的功能。模板、它们的功能以及它们的用途是一个巨大的讨论话题,超出了本书的范围。书籍 编辑维基文本 将包含比本书更多关于模板的信息,但即使那也不是一个全面的资源。最好的学习方法是查看其他模板的实际应用,或者向我们的一些活跃用户寻求帮助,看看他们想出了什么解决方案。
模板有几个好处。首先,模板有助于将大型复杂的功能隐藏在页面中。这意味着当新用户贡献页面时,他们不需要先深入大量格式化内容。其次,模板可以用于将非常相似的标记应用于多个页面(或单个页面中的多个点),而无需复制粘贴大量代码。最后,通过使用参数,模板可以帮助自动化许多原本需要手动执行的任务。
模板是包含页面的特殊情况。要在当前页面中包含或**转入**一个页面,语法为 {{namespace:page name}}。对于主命名空间,您可以省略命名空间部分,只使用 {{:page name}}。默认命名空间是 Template:,因此仅输入 {{page name}} 将尝试包含 Template:page name,如果您使用模板,这很好。
尝试在 沙盒 中包含一个页面,例如,使用以下代码包含主页
{{:Main Page}}
这就是创建书籍的印刷版本的做法。每个页面按顺序包含在印刷版本的页面中。任何不应出现在印刷版本上的内容都放在包含页面的代码中的 <noinclude> </noinclude> 之间,这将阻止它在页面包含在另一个页面时被包含。这用于隐藏导航链接和其他只有在线查看书籍的人才感兴趣的内容。相反,如果您希望某些内容仅对查看印刷版本的人显示,您可以使用 <includeonly> </includeonly>。
模板使用相同的概念,只是用于不同的目的,并具有一些附加功能。一个简单的模板示例,它仅使用 {{page name}},可以是
{{incomplete}}
这将产生
这是一个标准模板的示例,只是为了节省时间。像这样的标签也可以用来生成不完整的书籍列表。如果您访问 模板:不完整 并单击工具箱中的“此页面的链接”链接,页面后面列出的“(包含)”是包含了模板的页面。对于 {{不完整}}
模板,编辑人员可以使用它来获取不完整页面的列表。
当您键入 {{incomplete}} 时,您实际上是包含了 Template:incomplete 中的代码,它看起来像
'''The text in its current form is incomplete.'''
这很无聊。您可以使用 <includeonly> ... </includeonly> 来标记在转入时应该出现但在模板页面本身不应出现的模板部分。您可以使用 <noinclude> ... </noinclude> 来标记不应包含的部分。例如,您可以使用它将模板包含在一个类别中,但将包含了模板的页面包含在另一个类别中。您还可以显示关于正确使用模板的文档,这些文档不会出现在使用模板的每个地方。因此,如果您希望访问 {{不完整}}
的模板页面的人在“文本的当前形式不完整。”之后看到它的用途,您可以用以下代码替换代码
'''The text in its current form is incomplete.''' <noinclude> '''Purpose:''' :This template is used to designate a page as incomplete </noinclude>
这将向人们显示
文本的当前形式不完整。
用途
- 此模板用于将页面指定为不完整
当他们查看模板页面时,但当他们包含它时,只有 文本的当前形式不完整。
您也可以在类别方面耍点小聪明
<includeonly> '''The text in its current form is incomplete.''' [[Category:Pages that are incomplete]] </includeonly> <noinclude> '''Purpose:''' :This template is used to designate a page as incomplete [[Category:Templates that do tricky things]] </noinclude>
{{消息框}} 模板稍微复杂一些,因为它使用参数。参数是模板在为包含它的页面生成代码时使用的值。当您包含 Template:Message_box 时,您需要将参数传递给它。如果您只做
{{Message box}}
您将得到
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. |
嗯?这个模板实际上有 2 个参数,我们需要向它们传递参数。如果我们像这样包含模板
{{Message box|heading = hello|message = goodbye}}
您将得到
你好 再见 |
在包含模板时,您不必担心空格或首字母大写,但对于所有其他字母,页面名称仍然区分大小写,因此如果您键入
{{Message Box|heading = hello|message = goodbye}}
您将得到
因为是 “Box” 而不是 “box”。
回到示例... heading 和 message 是 Template:Message_box 的参数名称。模板的实际代码看起来像
<center class="metadata"> <table style="width: 60%; background: {{{backgroundcolor|transparent}}}; border: 1px solid #aaa; padding: 0.5em;"><tr> <td style="width: 70px;">[[Image:{{{image|Wikibooks-logo.svg}}}|60px|{{{alt|logo}}}]]</td> <td>'''{{{heading}}}'''<br /><small>{{{message}}}</small></td> </tr></table> </center>
哇,这太复杂了。所有用三对花括号括起来的内容都是参数。因此有 5 个参数,它们分别是 backgroundcolor、image、alt、heading 和 message。前 3 个参数包含管道字符。这些为参数创建默认值,因此即使我们只传递 heading 和 message 的值,背景仍然是透明的,显示的图像仍然是维基教科书徽标,并且该图像的备用文本仍然是“徽标”。如果参数没有默认值,并且您没有向它传递值,它只会显示参数名称,用 3 对花括号括起来,这就是为什么它第一次创建 {{{heading}}} 和 {{{message}}} 的原因。
但这并不意味着我们无法更改这些值。假设我们希望获得绿色背景,带有笑脸图像,并且备用文本为“微笑”,标题和消息与上次使用的一样。要获得此效果,您需要键入
{{Message box|backgroundcolor = green|image = Face-smile.svg|alt = smile|heading = hello|message = goodbye}}
您将获得
你好 再见 |
您传递给参数的参数顺序无关紧要,只要它们被命名。如果参数使用编号参数(如 {{{1}}}),则参数顺序很重要。如果参数是编号的,那么您需要将它放在正确的位置,因此如果它是 {{{1}}},它将是您传递的第一个值。
限制您使用模板可以实现的目标的唯一因素是您的想象力和您对 HTML 和 CSS(用于使事物看起来漂亮)以及对变量和解析器函数的了解。还有 模板限制,MediaWiki 软件为了避免服务器上的工作负载过大而设置的限制,但这只有当您转入一个转入一个又转入一个页面的页面时才会真正重要,并且可能只有当您是书籍作者,试图将所有页面整理到章节页面中,然后尝试将这些章节页面包含在印刷版本中时,或类似情况时才会困扰您。当您尝试包含一个包含其他页面的页面,并且它超出了包含限制时,将放置一个指向您想要转入的页面的链接到页面上,我认为 HTML 代码中还有一些错误消息作为注释生成。
编辑人员可以使用许多高级工具来创建更好的页面和模板。其中许多功能是 MediaWiki 软件的扩展。维基教科书偶尔会添加新的扩展。如果您能想到我们这里没有的功能,您可以在 Mediawiki.org 上查看可用扩展的列表。但是,在安装任何内容之前,您需要在 技术阅览室 获得社区的批准。
过去,许多维基教科书用户都要求添加一些扩展,但我们无法安装。这通常是因为性能问题:有些扩展占用了太多服务器资源。有时,这是由于安全性问题:有些扩展还没有经过严格的测试,无法在像维基教科书这样的大型网站上上线。以下是我们要求但无法获得的扩展和功能列表
- DPL
- 我们确实安装了 DPL 的旧版本,但新版本有更多选项和更强大的功能。不幸的是,所有这些功能都以增加服务器负载为代价。在该扩展的效率提高之前,我们不太可能在维基教科书上看到更新的版本。
- GNU LilyPond
- Lilypond 是一种扩展,允许使用各种基于 LaTeX 的标记,包括图形、音乐等。不幸的是,此扩展有多个组件,其中许多尚未经过严格的安全测试。
- StringFunctions
- 与解析器函数类似,这些是解析器钩子,可用于操作字符串数据。这包括分词、操作等。此扩展也需要过多的服务器资源,因此无法在维基教科书上安装。
维基文本由 MediaWiki 软件转换为 HTML。我们使用维基文本,因为它比纯 HTML 更易于阅读和编辑。但是,在许多情况下,我们需要使用 HTML 和 CSS 来执行各种任务。
以下是维基教科书中使用的一些常见的 CSS 类。在您自己的工作中使用这些类将有助于保持一切标准化,如果您试图复制复杂的样式,可以节省很多精力。
- PrettyTextBox
- PrettyTextBox 是一种 CSS 类,它生成一个带有灰色背景和灰色边框的框。此文本框的示例是
{{SideBox}}
和{{TextBox}}
。一个常见的实现是<div class="PrettyTextBox">...</div>
。 - wikitable 和 wikitable
- 这些类用于与上面的 PrettyTextBox 颜色主题类似的表格。常规表格单元格为灰色,标题单元格为深灰色,所有单元格周围都有灰色边框。此格式通常在许多地方使用,例如 阅览室。
- metadata、noprint
- 这些类会导致页面上的项目在您打印书籍时不显示。这对某些消息或备注模板很有用,这些模板更适合编写者而不是读者。
- printonly
- 与上面的类似,但相反。具有 printonly 类的对象仅在您打印页面时显示,但在您在线查看页面时不会显示。
- plainlinks
- 当您创建外部链接时,软件会自动在链接旁边包含一个小图标,以指示该链接指向哪种类型的资源。使用 plainlinks 类将隐藏这些小图标。
解析器函数功能强大但很复杂。它们最适合在模板命名空间中使用,在那里它们的复杂性可以隐藏在编辑书籍和页面的人员面前。在书籍页面中使用解析器函数将使代码更难以阅读和理解。因此,页面对于普通贡献者来说将更难编辑。我们拥有的解析器函数版本不是完整版本,也不是最新版本。我们版本的文档位于此处
我们没有解析器函数的“扩展”版本,也没有“StringFunctions”扩展,也没有任何其他相关的扩展。
访问科学、数学或工程主题页面,您可能会看到数学公式。这些公式使用专门为数学设计的 LaTeX 变体呈现。您可以在 meta:Help:Displaying a formula 上查看完整的标记帮助表。此页面的更完整版本可以在 meta 和维基百科上找到。
动态页面列表 (DPL) 是一种扩展,可以根据页面的类别和命名空间自动生成页面列表。我们版本的 DPL 的完整文档(不是最新版本,请参见上面的说明)位于
此功能主要用于组织页面,例如 维基教科书堆栈 以及其他地方。它在书籍中并不常见,但可以存在。
默认情况下,DPL 列表以垂直项目符号列表显示。但是,使用 CSS 类 DPLFlat
,我们可以强制列表水平显示。例如
<div class="DPLFlat"><dynamicpagelist>...</dynamicpagelist></div>
此用法在 {{New}}
中演示。