Skip to main content

Ankivalenz

Ankivalenz is a tool for generating Anki cards from HTML files. Read my blog post for more information on the "Why" of Ankivalenz.

Use with Quarto

Ankivalenz can be used with Quarto. Take a look at the repo for the quarto-ankivalenz extension for more information.

Tutorial

In this walk-through we will write our notes as Markdown files, use pandoc1 to convert them to HTML, and finally use Ankivalenz to generate an Anki deck with Anki cards extracted from our Markdown files.

Installation

Ankivalenz is distributed as a Python package, and requires Python 3.10+. To install:

$ pip3 install ankivalenz

Initialize project

Create a folder for your notes:

$ mkdir Notes
$ cd Notes

Ankivalenz needs a configuration file, containing the name and ID of the Anki deck. This can be generated with ankivalenz init:

$ ankivalenz init .

Write a note

Add the following to a file named Cell.md:

# Cell

## Types

- Prokaryotic ?:: does not contain a nucleus
- Eukaryotic ?:: contains a nucleus

Generate Anki deck

Convert it to HTML:

$ pandoc Cell.md > Cell.html

And run Ankivalenz:

$ ankivalenz run .

This generates a file Notes.apkg that can be imported to Anki. Open Anki and go to File -> Import, and find Notes.apkg.

Updating Anki deck

If you make changes to your notes, you can update the Anki deck by running ankivalenz run again. It is not possible to mark cards as deleted, so if you remove a note, the corresponding card will remain in the Anki deck. To work around this issue, all cards are tagged with a timestamp, and you can use the Anki browser to delete cards with an old timestamp. Running ankivalenz run will provide you with the filter needed to delete orphaned cards:

$ ankivalenz run .
- Added 3 notes to deck Biology in Biology.apkg
- Import the .apkg file into Anki (File -> Import)
- Find and delete orphaned notes with this filter (Browse):
    deck:Biology -tag:ankivalenz:updated:1666899823

Review

The new Anki deck will have two cards:

Question Answer Path
Prokaryotic does not contain a nucleus Cell > Types
Eukaryotic contains a nucleus Cell > Types

This is what the first note looks like in Anki:

Anki review

Syntax

Front/back cards

Ankivalenz supports front/back cards, where the front is the question and the back is the answer. To create a front/back card, add a new list item with the question, followed by ?:: and the answer:

- Color of the sun ?:: Yellow

You can flip the order of the question and answer by using ::? instead:

- Anwer ::? Question

Two-way cards

Two-way cards can be created with :::

- Side 1 :: Side 2

This will create two cards in Anki:

Front Back
Side 1 Side 2
Side 2 Side 1

Standalone questions/answers

Sometimes you want to create a note refering to the parent heading. This can be done with standalone questions/answers:

- Sun
  - ::? The star in our solar system

This will create a note with the answer "Sun" and the question "The star in our solar system". The other types of delimeters ("::" and "?::") can be used in the same way.

Cloze cards

Ankivalenz supports cloze deletion2, where the answer is hidden in the question. To create a cloze card, add a new list item with the question, using Anki's cloze syntax:

- The {{c1::sun}} is {{c2::yellow}}.

Nested lists

Lists can be nested:

- Solar System
  - Star ?:: Sun
  - Planet
    - Earth ?:: Blue
    - Mars ?:: Red

The headings for the nested lists become a part of the notes' paths:

Question Answer Path
Star Sun Solar System
Earth Blue Solar System > Planet
Mars Red Solar System > Planet

Math

If you are writing Markdown files, and use pandoc to convert them, the following syntax for math is supported:

- Inline math: $1 + 2$
- Display math: $$1 + 2$$

With the --mathjax flag, pandoc will generate the correct markup, using \( ... \) as delimeters for inline math, and \[ ... \] as delimeters for display math:

$ pandoc --mathjax Note.md > Note.html

Configuration

ankivalenz.json takes the following options:

Option Description
deck_name The name of the Anki deck.
deck_id The ID of the Anki deck.
input_path The path to the folder containing the HTML files.
  1. https://pandoc.org/

  2. https://docs.ankiweb.net/editing.html#cloze-deletion

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ankivalenz-0.6.0.tar.gz (10.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ankivalenz-0.6.0-py3-none-any.whl (9.6 kB view details)

Uploaded Python 3

File details

Details for the file ankivalenz-0.6.0.tar.gz.

File metadata

  • Download URL: ankivalenz-0.6.0.tar.gz
  • Upload date:
  • Size: 10.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.3.2 CPython/3.10.6 Linux/5.19.0-32-generic

File hashes

Hashes for ankivalenz-0.6.0.tar.gz
Algorithm Hash digest
SHA256 7df9d64b1984394eecf2d44a19ddbcc281c294c720d557370898dfcc333dfd94
MD5 dfdf0999fbbe2d22de0befcd4946cacd
BLAKE2b-256 622f4494b508a0a3057a4eeb584d8c4bc9654153605706b67c5f6e1799b6ccc2

See more details on using hashes here.

File details

Details for the file ankivalenz-0.6.0-py3-none-any.whl.

File metadata

  • Download URL: ankivalenz-0.6.0-py3-none-any.whl
  • Upload date:
  • Size: 9.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.3.2 CPython/3.10.6 Linux/5.19.0-32-generic

File hashes

Hashes for ankivalenz-0.6.0-py3-none-any.whl
Algorithm Hash digest
SHA256 2c517acb74c2eec2b39b2fa907905b0aad0f9b1c5218e99fc3a9bd1f73a12924
MD5 0ba568b527267810d681a79cfb03ffcb
BLAKE2b-256 ae026b6993586e457ed2659c2dbc7ca5a4863ae6efc4cc3c0ff96ff50cea19fe

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page