フィールド置換
- 基本的な置換
- 改行
- 個々のフィールドのテキスト読み上げ
- 複数のフィールドと静的テキストのテキスト読み上げ
- 特殊フィールド
- ヒントフィールド
- 辞書リンク
- HTMLの除去
- 右から左へのテキスト
- ルビ文字
- メディアとLaTeX
- 解答の確認
基本的な置換
最も基本的なテンプレートは次のようなものです:
{{Front}}
中括弧内にテキストを配置すると、Ankiはその名前のフィールドを探し、テキストをフィールドの実際の内容に置き換えます。
フィールド名は大文字小文字を区別します。Front
という名前のフィールドがある場合、{{front}}
と書いても正しく動作しません。
テンプレートはフィールドのリストに限定されません。テンプレートに任意のテキストを含めることもできます。例えば、首都を学習していて、「国」フィールドを持つノートタイプを作成した場合、次のような表面テンプレートを作成できます:
{{Country}}の首都は何ですか?
デフォルトの裏面テンプレートは次のようになります:
{{FrontSide}}
<hr id=answer>
{{Back}}
これは「表面にあるテキストを表示し、次に区切り線、そして裏面フィールドを表示する」という意味です。
「id=answer」部分は、質問と解答の間の区切りがどこにあるかをAnkiに伝えます。これにより、長いカードで解答を表示を押したときに、Ankiが自動的に解答が始まる場所までスクロールできます(特に画面が小さいモバイルデバイスで便利です)。解答の始まりに水平線が必要ない場合は、代わりに段落やdivなどの別のHTML要素を使用できます。
改行
カードテンプレートはウェブページのようなもので、新しい行を作成するには特別なコマンドが必要です。例えば、テンプレートに次のように書いた場合:
one
two
プレビューでは実際には次のように表示されます:
one two
新しい行を追加するには、行の最後に<br>コードを追加する必要があります:
one<br>
two
brコードは「(line) br(eak)」(改行)を表します。
フィールドにも同じことが当てはまります。2つのフィールドをそれぞれ別の行に表示したい場合は、次を使用します:
{{Field 1}}<br>
{{Field 2}}
個々のフィールドのテキスト読み上げ
この機能にはAnki 2.1.20、AnkiMobile 2.0.56、またはAnkiDroid 2.17が必要です。
Ankiに米国英語の音声でFrontフィールドを読み上げさせるには、カードテンプレートに次を配置できます:
{{tts en_US:Front}}
Windows、macOS、iOSでは、AnkiはOSに組み込まれた音声を使用します。Linuxでは音声は組み込まれていませんが、このアドオンなどのアドオンによって音声を提供できます。
利用可能なすべての言語/音声のリストを表示するには、カードテンプレートに次を配置します:
{{tts-voices:}}
選択した言語をサポートする音声が複数ある場合、リストで希望する音声を指定でき、Ankiは最初に利用可能な音声を選択します。例えば:
{{tts ja_JP voices=Apple_Otoya,Microsoft_Haruka:Field}}
これはAppleデバイスではOtoyaを使用し、Windows PCではHarukaを使用します。
一部のTTS実装では、異なる速度を指定することが可能です:
{{tts fr_FR speed=0.8:SomeField}}
速度と音声の両方はオプションですが、言語は含める必要があります。
Macでは、利用可能な音声をカスタマイズできます:
-
システム環境設定画面を開きます。
-
アクセシビリティをクリックします。
-
スピーチをクリックします。
-
システム音声のドロップダウンをクリックし、カスタマイズを選択します。
一部の音声は他よりも良い音がするので、お好みのものを選ぶために実験してください。Siri音声はAppleアプリでのみ使用できることに注意してください。新しい音声をインストールしたら、新しい音声が利用可能になるようにAnkiを再起動する必要があります。
Windowsでは、Cortanaなどの一部の音声は選択できません。MicrosoftがこれらOSの音声を他のアプリケーションで利用できるようにしていないためです。
クローズノートタイプでは、cloze-only
フィルターを使用して、省略されたセクションのみをAnkiに読み上げさせることができます:
{{tts en_US:cloze-only:Text}}
cloze-onlyフィルターは、Anki 2.1.29以降、AnkiMobile 2.0.65以降、AnkiDroid 2.17以降でサポートされています。
複数のフィールドと静的テキストのテキスト読み上げ
この機能にはAnki 2.1.50以降、AnkiMobile 2.0.84以降、またはAnkiDroid 2.17以降が必要です。
TTSに複数のフィールドやテンプレートに含まれる静的テキストを読み上げさせたい場合は、次を使用できます:
[anki:tts lang=en_US] このテキストは読み上げられるべきです。ここに{{Field1}}と{{Field2}}があります[/anki:tts]
これはテンプレート上の他のテキストです。タグの外側にあるので読み上げられません。
特殊フィールド
テンプレートに含めることができる特殊フィールドがいくつかあります:
ノートのタグ:{{Tags}}
ノートのタイプ:{{Type}}
カードのデッキ:{{Deck}}
カードのサブデッキ:{{Subdeck}}
カードのフラグ:{{CardFlag}}
カードのタイプ(「Forward」など):{{Card}}
表面テンプレートの内容
(裏面テンプレートでのみ有効):{{FrontSide}}
FrontSideは、カードの表面にあった音声を自動的に再生しません。カードの表面と裏面の両方で同じ音声を自動的に再生したい場合は、裏面にも音声フィールドを手動で含める必要があります。
他のフィールドと同様に、特殊フィールド名は大文字小文字を区別します - 例えば、{{tags}}
ではなく{{Tags}}
を使用する必要があります。
ヒントフィールド
カードの表面または裏面にフィールドを追加することは可能ですが、明示的に表示するまで非表示にすることができます。これを_ヒントフィールド_と呼びます。ヒントを追加する前に、Ankiで質問に答えやすくすればするほど、実生活でその質問に遭遇したときに覚えている可能性が低くなることに留意してください。続行する前に、https://super-memory.com/articles/20rules.htmの「最小情報原則」についてお読みください。
まず、まだ行っていない場合は、ヒントを保存するフィールドを追加する必要があります。これを行う方法がわからない場合は、フィールドセクションを参照してください。
MyFieldというフィールドを作成したと仮定すると、次をテンプレートに追加することで、Ankiにカードに含めるがデフォルトで非表示にするように指示できます:
{{hint:MyField}}
これは「ヒントを表示」というラベルのリンクを表示します。クリックすると、フィールドの内容がカードに表示されます。(MyFieldが空の場合、何も表示されません。)
質問でヒントを表示してから解答を表示すると、ヒントは再び非表示になります。解答が表示されるときに常にヒントが表示されるようにしたい場合は、裏面テンプレートから{{FrontSide}}
を削除し、表示したいフィールドを手動で追加する必要があります。
現在、音声にヒントフィールドを使用することはできません — ヒントリンクをクリックしたかどうかに関係なく、音声は再生されます。
外観や動作をカスタマイズしたい場合は、ヒントフィールドを自分で実装する必要があります。これを行うためのサポートは提供できませんが、次のコードが開始点になるはずです:
{{#Back}}
<a class=hint href="#"
onclick="this.style.display='none';document.getElementById('hint4753594160').style.display='inline-block';return false;">
裏面を表示</a><div id="hint4753594160" class=hint style="display: none">{{Back}}</div>
{{/Back}}
辞書リンク
フィールド置換を使用して辞書リンクを作成することもできます。言語を学習していて、お気に入りのオンライン辞書が次のようなWeb URLを使用してテキストを検索できるとします:
http://example.com/search?q=myword
テンプレートで次のようにして自動リンクを追加できます:
{{Expression}}
<a href="http://example.com/search?q={{Expression}}">辞書で確認</a>
上記のテンプレートでは、復習中にリンクをクリックすることで、各ノートの表現を検索できます。ただし注意点があるので、次のセクションを参照してください。
HTMLの除去
テンプレートと同様に、フィールドはHTMLで保存されます。上記の辞書リンクの例で、表現にフォーマットなしで「myword」という単語が含まれていた場合、HTMLは同じ「myword」になります。しかし、フィールドにフォーマットを含めると、追加のHTMLが含まれます。例えば「myword」が太字の場合、実際のHTMLは「<b>myword</b>」になります。
これは辞書リンクなどで問題になる可能性があります。上記の例では、辞書リンクは次のようになります:
<a href="http://example.com/search?q=<b>myword</b>">辞書で確認</a>
リンク内の余分な文字は辞書サイトを混乱させる可能性が高く、一致するものが見つからない可能性があります。
これを解決するために、Ankiはフィールドが置換されるときにフォーマットを除去する機能を提供します。フィールド名の前にtext:を付けると、Ankiはフォーマットを含めません。したがって、フォーマットされたテキストでも機能する辞書リンクは次のようになります:
<a href="http://example.com/search?q={{text:Expression}}">辞書で確認</a>
右から左へのテキスト
右から左に読む言語を使用している場合は、次のようにテンプレートを調整する必要があります:
<div dir=rtl>{{FieldThatHasRTLTextInIt}}</div>
ルビ文字
一部の言語では、文字の発音を表示するためにテキストの上に注釈を使用することが一般的です。これらの注釈はルビ文字として知られています。 日本語では、これらは振り仮名として知られています。
Ankiでは、次の構文を使用してルビ文字を表示できます:
Text[Ruby]
上記のテキストがMyFieldに書かれているとします。デフォルトでは、単に{{Myfield}}
を使用すると、フィールドはそのまま表示されます。ルビ文字をテキストの上に適切に配置するには、テンプレートでfurigana
フィルターを次のように使用します:
{{furigana:MyField}}
以下にいくつかの例を示します:
生のテキスト | レンダリングされたテキスト |
---|---|
Text[Ruby] | |
日本語[にほんご] | |
世[よ]の 中[なか] | |
世[よ]の中[なか] |
3番目の例では、中の文字の前にスペースがあることに注意してください。これは、ルビテキストがその文字にのみ適用されることを指定するために必要です。 スペースがない場合、4番目の例に示すように、ルビテキストは「の」文字の上に誤って配置されます。
追加のルビ文字フィルター
furigana
フィルターに加えて、kana
とkanji
フィルターを使用して、ルビテキストの特定の部分のみを表示することもできます。kana
フィルターはルビテキストのみを表示し、kanji
フィルターはルビテキストを完全に削除します。
生のテキスト | フィールドフィルター | レンダリングされたテキスト |
---|---|---|
日本語[にほんご] | {{furigana:MyField}} | |
日本語[にほんご] | {{kana:MyField}} | にほんご |
日本語[にほんご] | {{kanji:MyField}} | 日本語 |
これらの名前も日本語から借用されています。 かなという用語は、単語の発音方法を説明するために使用される音声システムを表し、漢字という用語はその中国文字を表します。
メディアとLaTeX
Ankiはテンプレートでメディア参照をスキャンしません。そうすることが遅いためです。これはテンプレートにメディアを含めることに影響を与えます。
静的な音声/画像
すべてのカードで同じ画像や音声をカードに含めたい場合(例:各カードの上部にある会社のロゴ):
-
ファイルの名前をアンダースコアで始まるように変更します。例:“_logo.jpg”。 アンダースコアは、ファイルがテンプレートで使用されており、デッキを共有する際にエクスポートする必要があることをAnkiに伝えます。
-
表面または裏面のテンプレートにメディアへの参照を追加します:
<img src="_logo.jpg">
フィールド参照
フィールドへのメディア参照はサポートされていません。復習中に表示される場合とされない場合があり、未使用メディアのチェック、インポート/エクスポートなどで機能しません。機能しない例:
<img src="{{Expression}}.jpg">
[sound:{{Word}}]
[latex]{{Field 1}}[/latex]
代わりに、フィールドにメディア参照を含める必要があります。詳細については、インポートセクションを参照してください。
解答の確認
YouTubeでこの機能に関するビデオを見ることができます。
解答を確認する最も簡単な方法は、カード追加画面の左上にある「基本」をクリックし、「基本(解答入力)」を選択することです。
共有デッキをダウンロードして解答を入力したい場合は、そのカードテンプレートを変更できます。次のようなテンプレートがある場合:
{{Native Word}}
{{FrontSide}}
<hr id=answer>
{{Foreign Word}}
外国語を入力して正しいかどうかを確認するには、表面テンプレートを次のように編集する必要があります:
{{Native Word}}
{{type:Foreign Word}}
比較したいフィールドの前にtype:
を追加したことに注意してください。FrontSideはカードの裏面にあるため、解答入力ボックスも裏面に表示されます。
復習時、Ankiは解答を入力できるテキストボックスを表示し、Enterを押すか解答を表示すると、Ankiは正しかった部分と間違っていた部分を表示します。テキストボックスのフォントサイズは、(編集時の「フィールド」ボタンを介して)そのフィールドに設定したサイズになります。
この機能はカードの解答方法を変更しないため、どれだけよく覚えていたかどうかを決定するのは依然としてあなた次第です。
カードで使用できる入力比較は1つだけです。上記のテキストを複数回追加しても機能しません。また、単一行のみをサポートするため、複数行で構成されるフィールドとの比較には有用ではありません。
Ankiは解答比較に等幅フォントを使用するため、「入力した」セクションと「正解」セクションが整列します。解答比較のフォントをオーバーライドしたい場合は、スタイリングセクションの下部に次を配置できます:
code#typeans { font-family: "myfontname"; }
これは解答比較の次のHTMLに影響します:
<code id=typeans>...</code>
上級ユーザーは、cssクラス「typeGood」、「typeBad」、「typeMissed」でデフォルトの解答入力の色をオーバーライドできます。AnkiMobileは「typeGood」と「typeBad」をサポートしていますが、「typeMissed」はサポートしていません。
入力ボックスのサイズをオーバーライドしたいが、フィールドダイアログでフォントを変更したくない場合は、!important
を使用してデフォルトのインラインスタイルをオーバーライドできます:
#typeans { font-size: 50px !important; }
クローズ削除カードの解答を入力することも可能です。これを行うには、{{type:cloze:Text}}
を表面と裏面の両方のテンプレートに追加して、裏面が次のようになるようにします:
{{cloze:Text}}
{{type:cloze:Text}}
{{Extra}}
クローズタイプはFrontSideを使用しないため、クローズノートタイプでは両側に追加する必要があることに注意してください。
複数のセクションが省略されている場合は、テキストボックスで解答をコンマで区切ることができます。
解答入力ボックスは、ブラウザの「プレビュー」ダイアログには表示されません。カードタイプウィンドウで復習またはプレビューを見ると、表示されます。
ankiweb.netでカードを復習するときは、解答入力ボックスは表示されません。