コンテンツにスキップ

Anki の Basic と Cloze カードを生成する

Anki で1枚ずつ追加する代わりに、コードから Basic(質問と解答)と Cloze(穴埋め)のカードを生成します。Basic ノートは表面と裏面を持ちます。Cloze ノートは、サポートされる穴埋め番号ごとに1枚のカードを生成します。この Rust の例では、2件のノートから3枚のカードを作成します。Python と Node.js にも同じ Note.basic と Note.cloze のコンストラクターがあります。Python API と Node API を参照してください。

リポジトリのルートから実行します。

ターミナルウィンドウ
cargo run --locked -p ankiforge --example docs_workflow -- target/docs-examples

target/docs-examples/cards.apkg を Anki で開きます。Basic の質問は hola です。Cloze のカードは Madrid と Spain をそれぞれ隠します。

次の関数は完全な実行プログラムから抜き出したものです。verify ヘルパーは、成功した出力のノート・カード・メディア数を確認します。

fn cards(output: &Path) -> anyhow::Result<()> {
let mut project = Project::new("docs-spanish")?.default_deck("Spanish");
project.add("hola", Note::basic("hola", "hello"))?;
project.add(
"capital",
Note::cloze("{{c1::Madrid}} is in {{c2::Spain}}.")
.field("back_extra", "A city and its country."),
)?;
let built = project.build(BuildOptions::to(output.join("cards.apkg")))?;
verify(&built, 2, 3, 0)?;
Ok(())
}

Project::new の第1引数は安定した名前空間です。各 add 呼び出しには、ソースレコードの安定キーが必要です。同じキーを別のノートに再使用すると失敗します。内容から自動でキーを割り当てることはありません。同じキーのまま解答を変えた場合、前回の配布物を基準に更新をビルドすると、同じ論理ノートとして扱われます。

テキスト、フィールド、カードの識別情報

「テキスト、フィールド、カードの識別情報」のセクション

Basic と Cloze の文字列はどちらも Text です。意図的な HTML には Content::html を使います。Cloze の穴埋め構文は Text 内でも認識されます。back_extra は組み込み Cloze の追加フィールドキーです。テキスト、HTML、画像、音声のいずれも、同じ Note::field メソッドで設定します。

{{c1::answer}} または {{c1::answer::hint}} を使います。通常の文だけでは Cloze の問題は生成されません。対応する穴埋め番号は1〜500です。番号を変えるとカードの識別情報が変わる場合があります。このような変更は比較と更新ポリシーで確認してください。

次に、メディア、独自のモデル、画像穴埋めを追加できます。

Markdown を表示