Anki: 解答しない穴埋めを非表示にする

ラテン語の曲用表を Anki で暗誦したい。
次のようなカードAが望ましい。

f:id:askrnmr:20210826134301p:plainf:id:askrnmr:20210826134305p:plain
端的で,速やかに処理できる。

次のようなカードBは望ましくない。

f:id:askrnmr:20210826134747p:plainf:id:askrnmr:20210826134743p:plain
煩雑で,速やかに処理できない。

Anki の空欄補充問題の仕様には,Bのようなカードが作成されざるを得ない事情がある。


次のようなノートを作ると,c1 の箇所と c2 の箇所の穴埋め問題のカードが2枚生成される。

Она́ {{c1::идёт::идти́}} на {{c2::вы́ставку::вы́ставка}}.

このとき,「答える方でない穴埋め」は単に問題文扱いされている。

f:id:askrnmr:20210826154212p:plainf:id:askrnmr:20210826150702p:plain

そのため,たとえば曲用表の各セルを順に 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:なお,単数主格は空欄にしてある。単数主格を提示して単数主格に曲用させる問題には意味がない。