Anki: 解答しない穴埋めを非表示にする
ラテン語の曲用表を Anki で暗誦したい。
次のようなカードAが望ましい。
次のようなカードBは望ましくない。
Anki の空欄補充問題の仕様には,Bのようなカードが作成されざるを得ない事情がある。
次のようなノートを作ると,c1 の箇所と c2 の箇所の穴埋め問題のカードが2枚生成される。
Она́ {{c1::идёт::идти́}} на {{c2::вы́ставку::вы́ставка}}.
このとき,「答える方でない穴埋め」は単に問題文扱いされている。
そのため,たとえば曲用表の各セルを順に c1,c2,…と指定していったとして,さらに工夫しなければ,全てのセルが常に表示される状態に陥る。冒頭のBの状態である。
これは最小情報原則から言っても到底健全な状態ではない。
HTML と CSS を用いて,1枚のノートでこれを解決する。
解決
CSS の visibility プロパティを用いる。
Anki の空欄の箇所には内部で cloze クラスが指定されている。c1,c2,… と複数の空欄を有するカードでは,c1 を補充する問題では c1 の空欄部分のみが,c2 を補充する問題では c2 の空欄部分のみが cloze クラスを追加された状態になっている。
このため,c1 の空欄を解答する際に c2 の箇所を非表示にしておきたい(e.g. 変化表の他のセルを非表示にしたい)場合,次のようにする。
①スタイルシートで,非表示を適用するクラス(hyouji)を記述する。
.hyouji { visibility: hidden; }
② hyouji と cloze の両方が指定された要素を表示するようにする。
.hyouji .cloze { visibility: visible; }
③必要な箇所に hyouji クラスを指定する。*1
<th><i>Nom.</i></th> <td></td> <td><span class="hyouji">{{c5::nātiōnēs::nātiō}}</span></td> </tr> <tr> <th><i>Gen.</i></th> <td><span class="hyouji">{{c1::nātiōnis::nātiō}}</span></td> <td><span class="hyouji">{{c6::nātiōnum::nātiō}}</span></td> </tr> <tr> <th><i>Dat.</i></th> <td><span class="hyouji">{{c2::nātiōnī::nātiō}}</span></td> <td><span class="hyouji">{{c7::nātiōnibus::nātiō}}</span></td> </tr> . . .
このようにして,c1 を答えるときには c1 だけ,c2 を答えるときには c2 だけ表示される問題が1枚のカードから生成できる。
補足など
Anki の空欄補充問題の作り方と仕様に関しては以下のページにある程度詳しい。{{c1::nātiōnis::nātiō}} 式の記法など。参考にされたい。
rs.luminousspice.com
ここからはまた今度書きます。
*1:なお,単数主格は空欄にしてある。単数主格を提示して単数主格に曲用させる問題には意味がない。