テンプレート:Anchor

テンプレートの解説[表示] [編集] [履歴] [キャッシュを破棄]


テンプレート {{anchor}} は、ページ内に1つまたは複数の不可視のアンカー名(HTMLのフラグメント識別子)を挿入します。

基本的な書式は {{anchor|アンカー名}} で、ページ内の任意の箇所に使用できます。また、見出し内で使用する場合は {{subst:anchor|アンカー名}} を使います。複数の値を {{anchor|アンカー名1|アンカー名2|アンカー名3}} のように指定することもできます。同一ページ内でアンカーにリンクするには、[[#アンカー名|表示テキスト]] の形式を使ってください。 複数のアンカーを一度に指定するには |アンカー名1|アンカー名2|アンカー名3 のようにします。詳細は w:Help:セクション § セクションへのリンク を参照してください。

なお、#アンカー名 は、通常ページ内のセクションにジャンプするために MediaWiki ソフトウェアによって使用されますが、#REDIRECT のような wikitext の命令ではありません。

アンカーはセクションと組み合わせて使うと便利です。セクションに名前をつけてリンクする場合、そのセクション名が変更されるとリンクが機能しなくなりますが、アンカーを使えばこれを回避できます。アンカー名は任意に設定できますが、見出しと同様、英数字の場合は先頭の文字は大文字にするのが一般的です。(詳細は Manual of Style § Section headings を参照してください)。

基本的な書式

編集

アンカー名は複数指定可能で、「|」で区切ります。これは "humor" と "humour" のようなスペル違いの代替リンク先を定義したい場合などに有用です。

一般に、リンク先がセクション見出しである場合、アンカーはそのセクション見出しの末尾に展開して挿入する必要があります。以下のように書きます:

== セクション見出し{{subst:anchor|アンカー名}} ==

この記述は、記事内では次のように保存されます:

== セクション見出し<span class="wst-anchor" id="アンカー名"> </span> ==

アンカー名は大文字・小文字を区別します。そのため、[[#Anchor name]][[#Anchor Name]] は別物です。アンカーを作成する際は、通常、先頭を大文字にし、見出しと同じ書式に従うようにしてください(詳しくは スタイルマニュアル: 見出し を参照)。

制限事項

編集
文字 コード テンプレート マジックワード 意味
" &quot;
&#34;
(二重)引用符
# &#35;
&num;
{{hash}} 番号記号
| &#124;
&vertbar;
{{pipe}} {{!}} バーティカルバー
= &#61;
&equals;
{{=}} イコール記号
  • 上記の表にある文字をアンカー名に含めると、正しく機能しない可能性があります。ただし、それぞれに対応する「&#」形式のコードに置き換えることで使用可能です。また、パイプ記号とイコール記号については、それぞれ {{!}}{{=}} を使って回避できます。<sup><sub>(上付き・下付き)などのマークアップは使用できません。それ以外の多くの文字(空白や句読点など)は問題ありません。
  • アンカー名はページ内で一意でなければなりません。セクション見出しと同名のアンカーを設定しても機能しません。なぜなら、#場所リンクはその名前を持つ最初のアンカーにジャンプするためです。重複するアンカーがあると無効なHTMLになり、W3C Markup Validation Service で検出されます。
  • 一部のブラウザではアンカーリンクの大文字・小文字が区別されるため、すべてのブラウザでの互換性を考慮して、常に大文字・小文字を区別するものとして作成するのが望ましいです。たとえば、=== Baz{{subst:anchor|Bar}} === と記述した場合、リンク先は [[ページ名#Bar]] にするべきであり、[[ページ名#bAR]] は避けてください。また、ブラウザによっては区別しないものもあるため、同一ページ内で異なる大文字・小文字のみの違いを持つアンカーやセクション名を作らないようにしてください。つまり、=== Abcd{{subst:anchor|Baz}} ====== Efgh{{subst:anchor|bAZ}} === を同時に存在させるべきではありません。
  • セクションタイトル内にテンプレートが未展開(substなし)のまま残っている場合(絶対にしてはいけません)、そのテンプレートコードがセクション編集のたびに編集要約欄に表示されてしまいます。たとえば、/* Limitations{{anchor|Issues}} */ New issue のようになります。この場合、編集者は編集要約からアンカーテンプレートを手動で削除する必要があり、そうしないと保存後にそのセクションに正しく戻れなかったり、履歴ページでセクションリンクが機能しなかったりします。

表内での使用

編集

アンカーは一定の制限の下で、表の中でも使用できます。{{anchor}} テンプレートは、表のキャプションおよびセル内で使用可能ですが、キャプションやセルの外側の部分では使用できません。セクション見出しとは異なり、表内ではsubst展開せずに使用できます。以下は表のキャプションでの使用例です:

|+ {{anchor|FooX}} 表のキャプション

次のようなセル内での使用も可能です:

! {{anchor|Foo1}} ヘッダーセル
! style="background:white;" |{{anchor|Foo2}} スタイル付きヘッダーセル
|{{anchor|Foo3}} データセル
| rowspan="2" |{{anchor|Foo4}} 2行にまたがるデータセル

ただし、{{anchor}} はクラスやスタイルなどを指定するマークアップ部分には配置できません。したがって、次のように **行頭にある** {|(表の開始)や |-(新しい行)の行には配置できません。また、次のような書き方も無効です:

! {{anchor|Foo1}} | ヘッダーセル
! style="background: white;" {{anchor|Foo2}} | スタイル付きヘッダーセル
| {{anchor|Foo3}} | データセル
| rowspan="2" {{anchor|Foo4}} | 2行にまたがるデータセル

このような位置にアンカーが必要な場合は、別の方法、つまり id= 属性を使います。この属性は、クラスやスタイルなどを指定する部分に配置できます。以下はその例です:

{| id="FooX" class="wikitable"
|- id="FooY"
! id="Foo1" | ヘッダーセル
! style="background: white;" id="Foo2" | スタイル付きヘッダーセル
| id="Foo3" | データセル
| rowspan="2" id="Foo4" | 2行にまたがるデータセル

id= 属性は、他の属性の前・中・後どこに配置しても構いませんが、1つの属性セット内に複数の id= を書くことはできません。

また、垂直方向中央揃えされたセル(これは表の既定)で、セルの先頭に {{anchor}} を配置すると、アンカーへのリンクがセルの上端ではなく、内容の始まり部分にジャンプしてしまいます。そのため、行のコードの先頭に id= を指定することで、スクロールの必要を回避できます。

見出しでの展開を推奨する理由

編集

アンカーは、見出し内に未展開のまま残すべきではありません。これはw:Wikipedia:MSHに違反し、技術的な問題を引き起こします。より具体的には、{{anchor}} を展開せずに使用すると、アンカーがセクション名の一部としてページの編集履歴に含まれるようになります。

見出しの中にアンカーを配置する利点を示すため、以下のアンカーは「基本的な書式」セクション見出しに配置されています:

== 基本的な書式<span class="anchor" id="Foo"></span><span class="anchor" id="In-Foo"></span> ==

このアンカーが実際に文書ページ上で使われているため、#基本的な書式#Foo#In-Foo へのリンクはすべて機能し、その効果をテストできます。

対照として、#Under-Foo という名前のアンカーが「基本的な書式」セクション見出しの下に配置されています。これにリンクしてみると、一部のウェブブラウザではジャンプ先でセクションタイトルが隠れてしまうことが確認できます:

== 基本的な書式 ==
{{anchor|Under-Foo}}

さらに、#Above-Foo というアンカーが見出しの上に配置されています。これは標準的なデスクトップスキンでは正しく機能しますが、技術的にはセクションの中ではなくその前にあるため、モバイルビューでは該当セクションが展開されません。

{{anchor|Above-Foo}}
== 基本的な書式 ==

解説と例

編集

このテンプレートの推奨される使い方が最善である理由について、以下に代表的な例を挙げて解説します。詳細は§ 制限事項セクションでも詳しく説明されています。

アンカーへの基本的なリンク

編集

次のようにテンプレートを使うと:

{{anchor|Foo}}

同じページ内では [[#Foo|表示テキスト]] のようにリンクできます。
別のページやリダイレクトページからは次のようにリンクします:

[[Qux#Foo|表示テキスト]]

ここで「Qux」はリンク先ページの名前です。リンクの表示テキスト部分("表示テキスト")は任意です。

セクション見出し変更への耐性

編集

セクションタイトルは編集によって変更される可能性があります。そのため、直接見出しにリンクすると、リンク切れになるリスクがあります。 これを防ぐために、セクション見出しにアンカーを追加することが推奨されます。たとえば:

=={{anchor|Foo bar}}Foo==

このようにすれば、たとえ見出しが変更されても、[[ページ名#Foo bar]] のようなリンクは引き続き有効です。

ただし、この方法には§ 制限事項で述べたように注意点もあります。たとえば、見出しにテンプレートがあると、編集要約に問題が発生することがあります。その回避策として、アンカーを見出しの前に配置する方法があります。この方法では、ブラウザでジャンプした際に見出しが隠れることも防げます。

テンプレート:Emアンカー名とセクション見出しのテキストが同一だと、HTMLのIDが重複してしまい、ページが無効になります。必ず別の名前を使用してください。

編集履歴や動作の問題を回避するには

編集

テンプレートを未展開のままセクション見出し内に使うと、編集時の要約欄にテンプレートのコードが現れ、混乱を招きます。 そのため、以下のように subst展開 を使って展開することが強く推奨されます:

== {{subst:anchor|Foo bar}} ==

このように記述すると、保存時には次のように展開されます:

== Foo {{anchor|Foo bar}}}} ==

この方法なら、安定してリンク可能なアンカーを提供しつつ、編集時の問題を回避できます。 前述の注意点はここでも適用されます。詳しくは§ 制限事項を参照してください。

現実的な使用例:架空の言語記事

編集

たとえば「Yish Yash language」という記事があり、以下のようなセクションがあるとします:

== The placement of the tongue when producing Yish Yash vowel sounds ==

このセクションにリンクしたい場合、他の記事から以下のように書きます:

[[Yish Yash language#The placement of the tongue when producing Yish Yash vowel sounds|Yish Yash tongue placement]]

ところが、以下のように、後に見出しが変更された場合は元のリンクは無効になります。

== Yish Yash vowels and the tongue ==

これを防ぐため、見出しにアンカーを埋め込みます:

== Yish Yash vowels and the tongue{{subst:anchor|Tongue}}==

すると、他の記事からのリンクは以下のように書き換えることで維持できます。

[[Yish Yash language#Tongue|Yish Yash tongue placement]]

これにより、セクションのタイトルが変更されても、リンクが正しい場所に飛ぶようになります。読者が自分で該当セクションを探し回らずに済むため、Wikiの記事間リンクの安定性と可読性が大幅に向上します。

テンプレートデータ

編集
これはビジュアルエディターテンプレートウィザードにより使用されるテンプレートのためのTemplateData文書です。

Anchor

ページ内にHTMLアンカーを追加します。同じページ内では [[#アンカー名]]、他のページからは [[リンク先ページ名#アンカー名]] の形式でリンクします。ページ内のすべてのアンカー名は一意でなければなりません。"(二重引用符)・#・|・= の各文字は使用しないでください。

テンプレートパラメーター[テンプレートデータを編集]

このテンプレートは、パラメーターを1行で記述することが推奨されています。

パラメーター説明状態
最初のアンカー1

アンカーの名前

Anchor name 1
文字列必須
2番目のアンカー2

2番目のアンカーの名前

文字列省略可能
3番目のアンカー3

3番目のアンカーの名前

文字列省略可能
4番目のアンカー4

5つ以上のアンカーを追加したい場合は、ソース編集をご利用ください。

文字列省略可能

関連項目

編集
  • {{Anchor comment}} — コメント付きアンカー
  • {{Anchored list}} — アンカー付きリスト
  • {{Shortcut}} — ショートカットリンク用テンプレート
  • {{Visible anchor}} — アンカー名を可視化するテンプレート
  • {{Section link}} — セクションへのリンク用テンプレート