Difference between revisions of "Template:Anchor/doc"
m |
m |
||
Line 59: | Line 59: | ||
| <code>&#61;</code> | | <code>&#61;</code> | ||
| {{tlx|{{=}}}} | | {{tlx|{{=}}}} | ||
− | | equals | + | | equals sign |
|} | |} | ||
− | * Anchor names that contain any character shown in the table will not work as expected. However, any of these characters can be replaced with the codes. The pipe symbol and | + | * Anchor names that contain any character shown in the table will not work as expected. However, any of these characters can be replaced with the codes. The pipe symbol and equals sign can be worked around with {{tnull|!}} and {{tlc|{{=}}}}, respectively. Markup code such as {{tag|sup|o}} and {{tag|sub|o}} (superscript and subscript) cannot be used. Most other characters, including white space and punctuation, are not a problem. |
* Anchor names must be unique on a page, and must not duplicate any heading titles. Duplicate anchors will not work as expected since the <code><nowiki>#Location</nowiki></code> links go to the first anchor with that name. They result in invalid HTML. | * Anchor names must be unique on a page, and must not duplicate any heading titles. Duplicate anchors will not work as expected since the <code><nowiki>#Location</nowiki></code> links go to the first anchor with that name. They result in invalid HTML. |
Revision as of 14:56, 20 July 2020
The template Template:Tl inserts one or more invisible HTML fragment identifiers (anchor names) in a page. Those locations can then be linked to using [[#Location|...]]
syntax. Note that #Location
here is not a browser instruction like #redirect
—the word “Location” can be any word you wish to associate with any part of an article in which you decide to place the Template:Tlx template, and can be entirely arbitrary; also, the first letter of the location is usually capitalised to reflect the common capitalisation used in section headers.
Usages
{{anchor|Foo|Foo bar}}
== Examples ==
#Examples, #Foo and #Foo bar all work.
Best practices
Reasons for the above being best practice are detailed in the following additional, numbered examples, as well as in § Limitations:
- Template:Tlc could be linked to with
[[#Foo|...]]
from within the same article (let’s call this article “Qux”), or it could be linked to with[[Qux#Foo|...]]
from other articles and from redirects.
- Anchors can be more suitable for inter‐article linking than section titles are, because anchors are more stable. For example a section title
== Foo ==
within an article titledQux
:
== {{anchor|Foo bar}} Foo ==
- Here, links via
[[Qux#Foo bar]]
would remain valid even if the section were renamed. A drawback of this approach (as detailed in § Limitations) is that having a template in the section header causes problems with the edit summary window each time that a section edit is done for this section. Note: The anchor is placed before the section name; otherwise browsers may hide the section title from view. Also, the anchor name (Foo bar
) should be different than the section (Foo
) to avoid invalid HTML.
- Within section titles, it may be preferable to simply use direct HTML, which may be achieved by substitution like this:
== {{subst:anchor|Foo bar}} Foo ==
- which is saved into the article as:
== <span id="Foo bar"></span> Foo ==
- This provides the stable, linkable anchor, but without the edit problem. The note above still applies. See § Limitations for details.
- The template can be used to create multiple anchors with a single call. For example:
{{anchor|Foo|Bar|baz}}
- will create three anchors that can then be linked to with
[[#Foo]]
,[[#Bar]]
and[[#baz]]
.
Limitations
Character | Code | Template | Meaning |
---|---|---|---|
" | " "
|
double quotation mark | |
# | #
|
hash | |
| | |
|
Template:Tnull | pipe |
= | =
|
Template:Tlx | equals sign |
- Anchor names that contain any character shown in the table will not work as expected. However, any of these characters can be replaced with the codes. The pipe symbol and equals sign can be worked around with Template:Tnull and Template:Tlc, respectively. Markup code such as
and
(superscript and subscript) cannot be used. Most other characters, including white space and punctuation, are not a problem.
- Anchor names must be unique on a page, and must not duplicate any heading titles. Duplicate anchors will not work as expected since the
#Location
links go to the first anchor with that name. They result in invalid HTML.
- Anchor links are case‐sensitive in some browsers, so treat all anchor links as case‐sensitive when creating links to them. For example, if you create the anchor with
=== {{anchor|Bar}} Baz ===
, link to it with[[pagename#Bar]]
, not[[pagename#bAR]]
. However, because some browsers are not case‐sensitive, do not create section titles or anchors that differ only in case from others on the page. That is, do not create both=== {{anchor|Baz}} Abcd ===
and=== {{anchor|bAZ}} Efgh ===
.
- If a template is inside a section title then the template code will appear in the edit summary window each time a section edit of that section begins, as in "
/* {{anchor|Issues}}Limitations */ New issue
". The editor must manually fix the section title part of the edit summary window, or when the section is saved, the browser may not return to the section and the section link of that edit in the history page doesn’t work. When using anchor in a section title, consider substituting the template, resulting in<span id="..."></span>
being saved.
Use in tables
Anchors may be used within tables, subject to certain restrictions. The Template:Tlc template may be used in the caption and cells of a table, but not those portions of a table that are outside the caption and cells. It is used on the table’s caption thus:
|+ {{anchor|FooX}} A table caption
and the following forms of cell are valid:
! {{anchor|Foo1}} A header cell ! style="background:white;" | {{anchor|Foo2}} A header cell with styling | {{anchor|Foo3}} A data cell | rowspan=2 | {{anchor|Foo4}} A data cell spanning two rows
You need to ensure that the Template:Tlc is not in that portion of the markup intended for the classes, styles etc. Thus, Template:Tlc cannot be placed anywhere on lines that begin with {|
(start of table) or |-
(new row), and the following forms of cell are not valid:
! {{anchor|Foo1}} | A header cell ! style="background:white;" {{anchor|Foo2}} | A header cell with styling | {{anchor|Foo3}} | A data cell | rowspan=2 {{anchor|Foo4}} | A data cell spanning two rows
If it is necessary for an anchor to be in any of these positions, a different technique is used: the id=
attribute. This is placed in that portion of the markup where the classes, styles etc. may be used, as follows:
{| id=FooX class=wikitable |- id=FooY ! id=Foo1 | A header cell ! style="background:white;" id=Foo2 | A header cell with styling | id=Foo3 | A data cell | rowspan=2 id=Foo4 | A data cell spanning two rows
The id=
attribute may appear before, between or after any other attributes that may be present, but only one id=
attribute may be used in each of these areas.