欄位取代 Field Replacements
- 基本取代 Basic Replacements
- 換行 Newlines
- 欄位文字轉語音 Text to Speech for individual fields
- 靜態文字和多個欄位文字轉語音 Text to Speech for multiple fields and static text
- 特殊欄位 Special Fields
- 提示欄位 Hint Fields
- 辭典連結 Dictionary Links
- 清除 HTML 標籤 HTML Stripping
- 從右至左書寫 Right To Left Text
- 注音 Ruby Characters
- 媒體檔與 LaTeX 方程式 Media & LaTeX
- 檢查答案 Checking Your Answer
基本取代 Basic Replacements
最基本的模板長這樣:
{{正面}}
當你用花括號包住文字時,Anki 會尋找名為括號中文字的欄位,並取代上欄位中的實際內容。
欄位名稱分大小寫。如果你的欄位名稱是 Front
,模板中則不能寫作 {{front}}
,否則將無法正常運作。
除了欄位,你還可以在模板中加入普通文字。若你在背各國首都,並在筆記類型中建立了「國家」欄位,你可以把正面模板改成這樣:
{{國家}}的首都是?
這是預設的背面模板:
{{FrontSide}}
<hr id=answer>
{{背面}}
這樣表示,顯示正面的內容,然後顯示一條分隔線,最後顯示「背面」欄位。
「id=answer」表示問題和答案的界線。當你在一張較長的卡片上點選「顯示答案」時,Anki 會自動滾動至答案部分(在螢幕較小的行動裝置上相當實用)。如無需答案前的橫線,可改用段落或 div 等其他 HTML 元素。
換行 Newlines
因為卡片模板跟網頁一樣,所以換行時需要使用特殊的指令。如果你的模板如下:
一
二
在預覽時,你將看到: 一 二
要換行,請在行末加入代碼 <br>:
一<br>
二
代碼「br」來自「換行」的英文「(line) br(eak)」。
欄位間要換行也一樣,例如
{{欄位 1}}<br>
{{欄位 2}}
欄位文字轉語音 Text to Speech for individual fields
僅 Anki 2.1.20+、AnkiMobile 2.0.56+ 及 AnkiDroid 2.17+ 版本支援這個功能。
要使用美國英語唸出「正面」欄位中的內容,你可以在卡片模板中寫出:
{{tts en_US:正面}}
在 Windows、macOS 和 iOS 上,Anki 會使用系統內建的語音。Linux 上沒有內建語音,但你可使用附加元件來加入語音,像是這個附加元件。
要檢視所有可用的語言/語音,請在卡片模板中寫下:
{{tts-voices:}}
若所需語言有多種聲音可用,你可以將這些聲音列成清單,Anki 會使用清單中第一個可用的聲音。比如:
{{tts ja_JP voices=Apple_Otoya,Microsoft_Haruka:欄位}}
這樣設定,則在 Apple 裝置上會使用 Otoya,在 Windows 裝置上會使用 Haruka。
部分 TTS 聲音還能調整速度(speed=):
{{tts fr_FR speed=0.8:另一個欄位}}
速度和聲音都可省略,但必須包含語言。
在 Mac 上,你可以自訂可用的聲音:
-
開啟「系統設定」。
-
按一下「輔助使用」。
-
按一下「語音內容」
-
按一下「系統聲音」,然後在下拉式選單中選擇「管理聲音」...
聲音的品質不一,建議多嘗試幾個聲音再做出選擇。只有 Apple 內建軟體才能使用 Siri 聲音,因此安裝後也不能在 Anki 中使用。安裝完成後,你需要重新啟動 Anki 才能選用新的聲音。
在 Windows 上,有些聲音也不能被其他應用程式使用,比如 Cortana。
在克漏字筆記類型中,你可以加入 cloze-only
篩選器,這樣 TTS 就只會朗讀空格中的內容:
{{tts en_US:cloze-only:文字}}
僅 Anki 2.1.29+、AnkiMobile 2.0.65+ 及 AnkiDroid 2.17+ 版本支援「cloze-only」篩選器。
靜態文字和多個欄位文字轉語音 Text to Speech for multiple fields and static text
僅 Anki 2.1.50+、AnkiMobile 2.0.84+ 及 AnkiDroid 2.17+ 版本支援這個功能。
要郎讀模板中的靜態文字或多個欄位,請輸入:
[anki:tts lang=zh_TW]朗讀這些文字。還有{{欄位 1}}和{{欄位2}}[/anki:tts]
模板上的其他文字。這行不在標籤內,所以不會被讀出來。
特殊欄位 Special Fields
你可以在模板中加入以下特殊欄位:
筆記標籤:{{Tags}}
筆記類型:{{Type}}
卡片所屬牌組:{{Deck}}
卡片所屬子牌組:{{Subdeck}}
卡片旗標:{{CardFlag}}
卡片類型(如「反向」):{{Card}}
正面模板內容(僅限背面模板使用):{{FrontSide}}
「FrontSide」中的音訊不會被自動播放。要在卡片正背面都自動播放音訊,你需要把音訊欄位單獨加入背面模板。
跟普通欄位一樣,特殊欄位的名稱也區分大小寫——比如筆記標籤應為 {{Tags}}
,不能輸入為 {{tags}}
。
提示欄位 Hint Fields
你可以隱藏卡片正面或背面上的欄位,且可在需要的時候選擇顯示。被隱藏的欄位叫做「提示欄位」。新增提示前,請注意,越容易回答的問題會越難記住。請前往 https://super-memory.com/articles/20rules.htm 了解「最少資訊原則 (minimum information principle)」。
首先,請先建立一個提示欄位。如果不知道怎麼新增欄位,請參閱〈自訂欄位〉章節。
假設你建立了一個「我的欄位」,要把欄位加入模板時,依以下格式:
{{hint:我的欄位}}
在卡片上,這會被取代成一個標著「hint」的連結;按一下連結,欄位中的內容就會出現。
在問題面顯示提示後,若按下顯示答案,則提示會再次隱藏。如果不想在答案面隱藏提示,請在背面模板移除 {{FrontSide}}
並手動加入欄位。
目前無法使用音訊作為提示——沒有按下「hint」連結也會照樣播放音訊。
要自訂提示的樣式或行為,你將需要自己建置一種提示欄位。我們無法幫你學習 HTML 和 CSS 語言,但你可以參考以下程式碼:
{{#背面}}
<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">{{背面}}</div>
{{/背面}}
辭典連結 Dictionary Links
你可以利用欄位取代來建立辭典連結。假設你在學習語言,你常用的線上辭典可使用 URL 進行搜尋:
http://example.com/search?q=單字
你可以新增一個這樣的連結:
{{單字}}
<a href="http://example.com/search?q={{單字}}">檢索辭典</a>
複習使用這個模板的卡片時,只需按一下「檢索辭典」連結即可搜尋該卡片對應的單字。請繼續閱讀下一部分來了解潛在的問題。
清除 HTML 標籤 HTML Stripping
跟模板一樣,欄位也是使用 HTML 碼來儲存內容的。在上面的辭典連結中,若「單字」欄位內容為「word」且不包含格式,則 HTML 原始碼仍為「word」。但如果你加入了格式,則會同時加入 HTML 原始碼,若「word」加上了粗體,HTML 原始碼將會是「<b>myword</b>」。
因此,在辭典連結或類似的情形中可能會出現問題。依上述例子,辭典連結可能會變成:
<a href="http://example.com/search?q=<b>word</b>">檢索辭典</a>
因為多出了「<b>」等無關字元,在辭典中很可能搜尋不到任何結果。
為了解決這一問題,Anki 提供了在取代時清除欄位格式的功能。只要在欄位名稱前輸入「text:」,Anki 就會清除所有格式。依以下格式設定連結,即便欄位文字存在格式也能正常搜尋:
<a href="http://example.com/search?q={{text:單字}}">檢索辭典</a>
從右至左書寫 Right To Left Text
如果你在學習的語言是從右至左書寫,你需要像這樣調整模板:
<div dir=rtl>{{有 RTL 文字的欄位}}</div>
注音 Ruby Characters
日本語[にほんご]
假設你在「單字」欄位中寫入了以上文字,如果模板上的欄位沒有加上篩選器,則 {{單字}}
會顯示為 日本語[にほんご]
。你需要在模板名稱前加上 furigana
篩選器才能自動將注音放到字上方:
{{furigana:單字}}
以下是一些範例:
原文 | 顯示效果 |
---|---|
日本語[にほんご] | |
水 獺[ㄊㄚˋ] | 水 |
水獺[ㄊㄚˋ] | |
世[よ]の 中[なか] | |
世[よ]の中[なか] |
注意第 2 個例子中的「獺」和第 4 個例子中的「中」前面都有一個半形空格。這是為了表示注音應顯示在空格後的文字上方。如未加入空格,則會像第 3 和第 5 個例子中那樣,「ㄊ」可能會跑到「水」上面,而「な」可能會顯示在「の」上面。
其他注音篩選器 Additional Ruby Character Filters
除了振假名篩選器 furigana
,你還可以選擇只顯示注音或原文。使用假名篩選器 kana
時將只顯示注音,使用漢字篩選器 kanji
則會移除注音。
原文 | 欄位篩選器 | 顯示效果 |
---|---|---|
日本語[にほんご] | {{furigana:欄位名稱}} | |
日本語[にほんご] | {{kana:欄位名稱}} | にほんご |
日本語[にほんご] | {{kanji:欄位名稱}} | 日本語 |
媒體檔與 LaTeX 方程式 Media & LaTeX
因執行速度所限,Anki 不會掃描模板有無引用媒體檔。因此在模板上直接加入媒體會導致一些後果。
靜態音檔/影像 Static Sounds/Images
要在每張卡片上都加入同樣的音檔或影像:
-
重新命名檔案,在開頭加上一個底線,如「_logo.jpg」。底線表示檔案被模板引用,且應在共用牌組時被匯出。
-
在正面或背面模板中引用這個媒體檔:
<img src="_logo.jpg">
引用欄位 Field References
媒體引用中不能包含欄位取代。問題有:複習時可能無法正常顯示、檢查未被使用的媒體檔無法被偵測到、無法正常匯出/匯入等。無法正常運作的例子:
<img src="{{單字}}.jpg">
[sound:{{例句}}]
[latex]{{欄位一}}[/latex]
請將媒體引用放入欄位內容。請參閱〈匯入媒體檔〉章節來進一步了解。
檢查答案 Checking Your Answer
要檢查你的答案,最簡單的方式是使用「基本型(輸入答案)」筆記類型。
若要修改已有筆記類型,假設你的模板如下:
{{中文}}
{{FrontSide}}
<hr id=answer>
{{英文}}
要輸入英文並檢查答案,請修改卡片正面模板:
{{中文}}
{{type:英文}}
在要檢查的欄位前加入 type:
。因為背面模板有「FrontSide」欄位,所以無需再次加入 {{type:英文}}
。
複習畫面中將會顯示一個文字框,輸入答案後按下 Enter 鍵或顯示答案按鈕後,Anki 會對比你給出的答案和正確答案。文字框的字型大小是你在「欄位」編輯畫面中設定的大小。
答案檢查結果僅供參考,你可以依實際情況自由選擇評價按紐。
一張卡片只能加入一個文字對比。加入多個 {{type:欄位}}
將無法正常運作。文字框只能顯示為一行,因此不適合用於包含多行文字的欄位。
答案檢查結果使用等寬字型,這樣你輸入的答案和正確答案中的字母可以一一對齊。若要覆蓋使用的字型,請在樣式表底部加入:
code#typeans { font-family: "字型名稱"; }
加入的程式碼會影響答案檢查結果的 HTML 原始碼:
<code id=typeans>...</code>
進階使用者還可以使用 CSS class「typeGood」、「typeBad」和「typeMissed」來覆蓋預設的檢查結果文字顏色。AnkiMobile 支援「typeGood」和「typeBad」兩個 class,但不支援「typeMissed」。
要覆蓋文字框的字型大小但不更改「欄位」對話框中的設定,你可以使用 !important
來覆蓋預設的行內 (inline) 樣式:
#typeans { font-size: 50px !important; }
克漏字卡片也可以輸入答案。請在卡片正背面模板中都加入 {{type:cloze:文字}}
,像這樣:
{{cloze:文字}}
{{type:cloze:文字}}
{{背面額外內容}}
因為克漏字類型不使用「FrontSide」欄位,所以需要在正背兩面都加入。
若一張卡片中包含了多個克漏字空格,顯示正確答案時各空格內容將以半形逗號和空格「, 」隔開。
輸入答案文字框不會在瀏覽器預覽中顯示,只會在複習畫面或卡片類型視窗中顯示。
在 ankiweb.net 上複習時也不會顯示輸入答案文字框。