模板:Anchor
更多操作
{{Anchor}}模板用于在页面中插入一个或更多的不可见锚点名(HTML片段标识符)。
基础格式是 {{Anchor|锚点名}}。要链接至位于同一页面中的锚点时, 使用 [[#锚点名称|显示文本]]。要链接至别的页面的锚点时, 使用 [[条目名称#锚点名称|显示文本]]。查阅wikipedia:Help:Section_linking以获取更多信息。
注意, #锚点名称 不是像 #REDIRECT 那样的浏览器指令。
锚点对章节最有用, 因为如果章节被重命名, 则指向该章节的链接将不起作用。但是, 可以根据需要在条目的任何地方使用锚点。锚点名称可以是任意的, 但第一个字母通常应该大写以与标题样式保持一致 (有关更多信息, 请参阅 wikipedia:Manual_of_Style:Section_headers) 。
基础格式
你可以定义一个或更多锚点名称, 以 "|" 分隔。这对于不同拼写方式很有用, 比如 "humor" 和 "humour" 。
一般来说, 在章节标题末尾替换引用一个锚点:
== 章节标题{{subst:Anchor|锚点名}} ==
这在条目中会被保存为:
== 章节标题<syntaxhighlight inline="" lang="text"></syntaxhighlight> ==
锚点名区分大小写, 所以 [[#Anchor name]] 和 [[#Anchor Name]] 不相同。在创建锚点时, 一般来说首字母要大写, 并遵循与标题相同的大写原则 (更多信息见 wikipedia:Manual_of_Style:Headers)。但这和中文有什么关系呢?
局限性
| 字符 | 代码 | 替代模板 | 含义 |
|---|---|---|---|
| " | " "
|
不适用 | (双) 引号 |
| # | #
|
{{hash}} | 井号 |
| | | |
|
{{!}} (魔术字) | 管道符 |
| = | =
|
{{=}} | 等号 |
- 包含右表中任何字符的锚点名都不会如预期般工作。但是, 这些字符都可以使用表中的 "
&#" 代码替代。或者, 管道符 (|) 和等号 (=) 可以分别使用 {{!}} 和 {{=}} 来替代。不能使用<sup>和<sub>(上下标) 一类的标记代码。绝大多数其他字符, 包括空格和标点符号, 都不会造成问题。 - 锚点名在一个页面中必须是唯一的, 且不能与任何标题相同。锚点名相同的锚点不会如预期般工作, 因为
#位置总会链接至多个锚点中的第一个。你可以为一个页面运行W3C 标记验证服务来检查相同的锚点名。 - 锚点链接在部分浏览器中是大小写敏感的。所以在创建连接到锚点的链接时, 请一律把它们作为大小写敏感来对待。例如: 如果你使用
=== Baz{{subst:anchor|Bar}} ===创建了一个锚点, 链接到它时使用[[pagename#Bar]], 而不要使用[[pagename#bAR]]。然而, 因为一些浏览器大小写不敏感, 不要在创建多个只有字母大小写不同的标题和/或锚点。即, 不要在同一页中创建=== Abcd{{subst:anchor|Baz}} ===和=== Efgh{{subst:anchor|bAZ}} ===。- 创建时不应使用奇怪的大小写规范, 推荐使用与标题相同的规范。
- 当然中文请随意。
- 如果模板在章节标题中未被替换引用 (这是不应该做的) , 那么每次该章节开始编辑时, 模板代码就会出现在编辑摘要窗口中, 如
/* 局限性{{Anchor|问题}} */ 新问题。编者必须手动从编辑摘要窗口中删除锚点模板, 否则当他们保存章节后, 浏览器可能不会返回该章节, 并且该编辑在历史页面中的章节链接将无法工作。
在表格中使用
锚点可以被使用于表格中, 但受到了一些限制。{{Anchor}} 模板仅能用于表头和单元格中。不像章节标题那样, 在表格中不需要以替换引用的方式使用此模板。它用于表格标题的方式如下:
|+ {{anchor|FooX}} 表头
以下形式的单元格是有效的:
! {{anchor|Foo1}} 标题单元格
! style="background: white;" |{{anchor|Foo2}} 带有样式的标题单元格
| {{anchor|Foo3}} 数据单元格
| rowspan="2" |{{anchor|Foo4}} 占用两行的数据单元格
您需要确保 {{Anchor}} 不在用于CSS类、样式等的标记部分。因此, {{Anchor}}不能放置在以 {| (表格开始标记) 或 |- (新行标记) 开头的行上, 并且以下形式的单元格无效:
! {{anchor|Foo1}} | 标题单元格
! style="background: white;" {{anchor|Foo2}} | 带有样式的标题单元格
| {{anchor|Foo3}} | 数据单元格
| rowspan="2" {{anchor|Foo4}} | 占用两行的数据单元格
如果锚需要位于这些位置中的任何一个,则使用一种不同的方式 — id= 属性。它可以放置在标记中CSS类、样式等可能被使用的部分, 如下所示:
{| id="FooX" class="wikitable"
|- id="FooY"
! id=Foo1 | 标题单元格
! style="background: white;" id="Foo2" | 带有样式的标题单元格
| id="Foo3" | 数据单元格
| rowspan="2" id="Foo4" | 占用两行的数据单元格
id= 属性可以出现在任何其他属性之前、之间或之后, 但在每个区域中只能使用一个 id= 属性。
标题中替换引用的基本原理
为了说明为什么在标题中替换是首选的, 下面的锚被放置在基本格式部分的标题中:
== Basic format<span class="anchor" id="Foo"></span><span class="anchor" id="In-Foo"></span> ==
因为锚点实际上是在这个文档页面上使用的, 链接 #基础格式, #Foo 和 #In-Foo 都可以工作, 可以测试看看效果。
作为对比,一个名为 #Under-Foo 的锚点也被放置在基本格式的章节标题下面, 可以点击它来说明当跳转到链接的目标时, 这个位置是如何隐藏章节标题的:
== Basic format ==
{{anchor|Under-Foo}}
另一个名为 #Above-Foo 的锚被放置在章节标题的上方。这个锚确实可以正常工作, 但因为从技术上讲, 锚不在节中, 而是在节之前, 这使得编辑违背了直觉。
{{anchor|Above-Foo}}
== Basic format ==
锚点被放置在标题中时应被替换引用, 因为这违反了 wikipedia:MOS:HEADINGS, 并导致技术上的复杂性。
说明和示例
以下附加的、编号的示例和§ 局限性章节详细说明了上述为最佳实践的原因:
{{anchor|Foo}}
可以链接到同一条目 (我们把这篇条目叫做 "Qux") 内的[[#Foo|...]]部分,
或者, 它可以使用[[Qux#Foo|...]]以从其他页面链接到此部分, 或重定向到此部分 (这里 "Foo" 后面的省略号代表wiki条目中的链接文本, 当然, 可以是任何东西) 。- 比起章节标题, 锚点更适合用于跨条目链接, 因为它更稳定。例如, 在一篇名为
Qux的wiki条目中, 章节标题== Foo ==:
=={{anchor|Foo bar}}Foo ==
在这里, 即使章节标题被更改为== {{anchor|Foo bar}} On foo and its many friends ==
, 链接[[Qux#Foo bar]]依然有效。
这种方法的一个缺点是 (详见 § 局限性 章节) , 如果章节标题中包含模板, 每次进行章节编辑时, "编辑摘要" 窗口都会出现问题。显而易见的解决方案是在章节名称前放置锚点。这也可以阻止浏览器在跳转至目标章节时将章节标题隐藏在窗口之外。
注意: 锚点名 (Foo bar) 应与章节标题 (Foo) 不同以避免产生无效HTML。 - 在章节标题中,最好只使用直接HTML,这可以通过如下替换引用实现:
=={{subst:anchor|Foo bar}}Foo ==
它会在条目中被保存为:==Foo =={{anchor|Foo bar}}
这可以在没有编辑问题的情况下提供稳定、可链接的锚点。上述注释仍然适用。关于详细信息, 请参见§ 局限性 - 此模板可以在单次调用中创建多个锚点。例如:
{{anchor|Foo|Bar|baz}}
将创建三个分别可以被[[#Foo]],[[#Bar]]和[[#baz]]链接到的锚点。
模板数据
在页面中添加 HTML 锚点。 使用 [[#某些页面的锚点]] 或 [[你要链接到的页面#那页面中的锚点]]。同一页面上的每个锚点都必须不同的。不要使用这些字符: " , # , | 和 =.
| 参数 | 描述 | 类型 | 状态 | |
|---|---|---|---|---|
| 第 1 个锚点 | 1 | 锚点名
| 字符串 | 必需 |
| 第 2 个锚点 | 2 | 锚点名 | 字符串 | 可选 |
| 第 3 个锚点 | 3 | 锚点名 | 字符串 | 可选 |
| 第 4 个锚点 | 4 | 要添加更多锚点, 请使用源代码编辑 | 字符串 | 可选 |