-
Q:/A:: basic card. Either field can continue onto later lines. -
C:: cloze. Each[answer]becomes its own card;[answer|hint]shows the hint. Write\[and\]for literal brackets. Brackets inside`code`are always literal. -
Images:
, with the path relative to the deck file: from a deck incards,../mediais the collection’smediafolder. Use.jpg>)for paths with spaces or parentheses. An image can also be a cloze answer:[|flag]. -
Sounds use the same syntax:
. Links to audio files (mp3,m4a,wav,flacand other formats macOS can play) show as play buttons. A card’s sounds play when it appears, and the answer’s when it is shown; press R to replay. Turn autoplay off in Settings (⌘,). -
Math:
$…$inline and$$…$$for display, in TeX, turned into MathML by Temml and drawn by WebKit in the system’s math font. Brackets and|inside math are literal, so they never start a cloze. A$only starts math before a non-space ($5 and $10stays text); write\$for a literal one. -
Code: fenced blocks (
```python…```or~~~) are highlighted by Shiki in any of its 200+ languages, with GitHub’s light and dark themes. Each language’s grammar loads the first time a card uses it. Blank lines andQ:lines inside a block stay part of the card. Brackets in code are literal, so a cloze gap in a code block or`span`is written{{answer}}or{{answer|hint}}: - Chinese, Japanese and Korean text is set in Source Han Serif (Noto Serif CJK). Its fonts, about 6 MB per language, are downloaded from the Amgi releases on GitHub the first time a folder’s decks use Hangul, kana or Han characters; until then the Mac’s own serif stands in. Han characters take the forms of the Mac’s first Chinese, Japanese or Korean language in System Settings ▸ General ▸ Language & Region, or Simplified Chinese when there is none.
-
A card ends at a blank line or the next
Q:/C:outside a code block. Every other line is ignored.
Tags and deck settings
End a card with a line of tags. A file can start with TOML front matter between+++
lines: name is the deck’s display name and tags are added to every card in it.
#tag words counts, so a # Heading stays text. Pick a tag in the sidebar to browse
its cards across decks. Right-click a tag and choose Choose Icon… to give it an emoji:
type to search by name or keyword, use the arrow keys to move, and press Return to
choose. Icons are kept in .amgi.sqlite.
Notes with fields
BesidesQ: and A:, a card can come from a note: named fields, such as a word, its
meaning, its audio and an example sentence, that make one or more cards. Which fields a
note has, and which cards it makes, is its note type: a file in the note-types
folder at the root of the collection.
@, then its fields:
- Fields can come in any order and continue onto later lines. The note ends at a blank
line, a
Q:orC:, or the next@line. Tags go on its last lines, as on any card. - Each rule in
cardsmakes one card: the fields before->on the front, the ones after it on the back, in that order. The note above makes two cards. - With
=>instead of->, as in"Meaning => Word", you type the answer: the first back field the note fills. A box under the question takes it, Return shows the answer, and what you typed is shown against it, with wrong letters struck out and missing ones marked. Changing a rule between->and=>keeps its cards’ history. - Put an audio field right after the field it belongs to, as in
"Meaning -> Word, Word Audio": a sound after text plays from a button at the end of that text. - Empty or missing fields are left out of a card, so a note without
Audioshows just the word. A card is made only when it has a front field and a back field to show. - Without
cards, the first field is the front and the rest the back. - Notes of any types and
Q:/C:cards can share a deck. Field names are case-sensitive, and a line such asMeaning: …outside a note, or an@line inside aQ:orC:card, is just text. - A card is identified by its front, like a
Q:card with the same question. Editing back fields, reordering a note’s lines or renaming a field keeps its history; editing a front field starts that card over. Suspending a card suspends its whole note. - Problems in a note type, such as a rule naming a field that isn’t in
fields, are reported at its file; an@line naming a note type that doesn’t exist says so.
Suspending cards
A card tagged#suspended never comes up for study, and isn’t counted as due or new;
tags = ["suspended"] in a deck’s front matter suspends the whole deck. Suspend Card
in the toolbar while studying, or right-clicking cards while browsing, adds or removes the
tag in the file for you. Tags aren’t part of a card’s identity, so it keeps its history.
Pick the suspended tag in the sidebar to see them all.