Skip to main content

抽认卡生成器。你不会忘记任何事...

项目描述


阅读 Docs 文档

从文本文件(TSV 和 Markdown)生成 Anki 卡片。使用 Google 翻译从单词列表中自动创建卡片。

<中心> </中心>

文本文件易于维护,而apkg文件则不然。您可以轻松地将文本文件存储在git等版本控制系统中,这样您就可以轻松跟踪更改并与他人协作。

Mnemocards 带有一些预先设计的格式:

  • 语言卡片(最后一张图片的第一行):专为学习语言而设计。有两种类型的语言卡:
    • 词汇卡(右):以 2 种语言显示的卡,您的母语和您正在学习的语言。这种类型的卡片让您可以直接从谷歌翻译器自动生成发音音频。此外,如果您正在学习日语,您可以使用ふりがな(假名,汉字顶部的小平假名字符)!
    • 表情卡(左):当你已经知道一门语言并想掌握它时,有时翻译成你的语言已经不够了,但你想用你正在学习的语言写句子,并用相应的语言解释你在学习。
  • Markdown 卡片(第二行):从*.cards文件生成的卡片。此文件格式是专门为使用 Mnemocards 创建卡片而创建的。除了一对卡片的开始和结束标记之外,这些文件的语法是纯 Markdown。您可以在此类卡片中使用图像、乳胶和数学。
  • 自动生成的卡片(下图):这些卡片是从一个简单的文件中全自动生成的,*.txt其中包含您所学语言的单词(或短语)列表。使用谷歌翻译将每个单词翻译成您自己的语言,然后使用 词汇卡进行格式化模板。每张卡片都会包含您在 Google 翻译页面上看到的所有内容 - 单词本身、主要翻译、其他同义词翻译、发音、定义(以原始单词的语言,带有例句)。对于某些单词(和大多数短语),谷歌翻译会缺少一些项目,但只有一个主要翻译。此外,您可以生成发音音频 - 无论在 Google 翻译页面上具有文本发音的单词如何,它都会起作用,并且也可以为短语生成。如果您从日语单词和短语创建自动生成的卡片 - 您也可以自动生成假名!
<中心> </中心>

目录

要求

  • PyAudio 是 Python 依赖项之一,需要安装 PortAudio-dev。在类 Ubuntu 系统(仿生)中使用 apt install portaudio19-dev=19.6.0-1build1. 也许该软件包的任何其他版本都可以正常工作,但我正在使用的那个版本没有问题。如果您有任何问题,请删除该版本并尝试使用最后一个版本。
  • Python 3pyproject.toml. 你至少需要pip>=19.
  • 如果你想自动导入生成的 apkgs,你应该安装Anki
  • 如果你想从你的存储库或 gist 生成卡片,你应该安装Git。将其安装在类似 Ubuntu 的系统中apt install git。此外,为了使用 GitHub API,您应该有一个文件和 API 密钥以及 gists/repository 权限。只有私有仓库才需要仓库权限。

安装

使用 PyPi 包pip

pip install -U pip  # pip >= 19 is needed
pip install mnemocards

Mnemocards 使用Poetry进行打包和依赖管理,所以如果你想.whl从源代码生成一个文件,你所要做的就是:

poetry build

然后你应该能够在任何 Python 环境中安装轮文件 pip>=19

pip install dist/*.whl

如果您想贡献或开发,请像在任何其他 Python 项目中一样使用 Poetry。

:warning: 请记住至少有 19 版本的pip.

如果您不想安装软件包并设置所有需要的环境,请考虑使用 Docker 的选项。阅读本 README 的Docker 部分以了解更多信息。

生成卡片

进入该examples/目录并执行下一行,生成*.apkg该目录和所有子目录下的所有文件。

$ mnemocards generate -r .
Building ./computer_science/cards_config.json
        Building deck:  Computer Science  ID: 3778079933
Building ./japanese/cards_config.json
Creating audio file ./japanese/media/hiragana/10091493812914340822.mp3
Creating audio file ./japanese/media/hiragana/7304217433350980427.mp3
Creating audio file ./japanese/media/hiragana/3595385396154511079.mp3
Creating audio file ./japanese/media/hiragana/5000408949304965326.mp3
Creating audio file ./japanese/media/hiragana/2088116759824648408.mp3
Creating audio file ./japanese/media/katakana/13050069045466478331.mp3
Creating audio file ./japanese/media/katakana/4834734646036555229.mp3
Creating audio file ./japanese/media/katakana/4275246117432970461.mp3
Creating audio file ./japanese/media/katakana/8563378359496393897.mp3
Creating audio file ./japanese/media/katakana/10683512746176998599.mp3
        Building deck:  Japanese Scripts  ID: 46741143
Building ./english/cards_config.json
        Building deck:  English  ID: 376026414
Building ./gtrans_generated/from_words/cards_config.json
Creating audio file ./gtrans_generated/from_words/.media/16602724546385148562.mp3
Creating audio file ./gtrans_generated/from_words/.media/5309234024643684554.mp3
Creating audio file ./gtrans_generated/from_words/.media/16025915470194576015.mp3
Creating audio file ./gtrans_generated/from_words/.media/3362678031558458662.mp3
        Building deck:  English-Spanish googletranslated  ID: 2639255077
Building ./gtrans_generated/from_tsv/cards_config.json
Creating audio file ./gtrans_generated/from_tsv/.media/9906647659348914100.mp3
Creating audio file ./gtrans_generated/from_tsv/.media/93519578040143984.mp3
Creating audio file ./gtrans_generated/from_tsv/.media/17049437411425550802.mp3
Creating audio file ./gtrans_generated/from_tsv/.media/8896291257694557922.mp3
Creating audio file ./gtrans_generated/from_tsv/.media/933277714999002525.mp3
        Building deck:  Japanese-English googletranslated  ID: 2732900318
Writing packages to a file...
$ ls
computer_science  cs.apkg  english  english.apkg  gtrans_generated  gtrans_generated_from_tsv.apkg  gtrans_generated_from_words.apkg  japanese  japanese.apkg

现在您*.apkg在此目录中有 5 个文件,您可以手动或使用 Mnemocards 将它们导入 Anki(请参阅导入部分)。在生成过程中,为日文卡座创建了 10 个音频文件,为从 word 文件生成的英语-西班牙语卡座创建了 4 个音频文件,从 tsv 文件生成了另外 5 个用于日英卡座的音频文件。这些音频文件来自谷歌翻译。如果再次重复该命令,则不会再次下载音频,因此将新词添加到词汇表的过程会更快。

Mnemocards 命令附带您可以阅读添加--help 到任何命令的文档。例如,如果您想查看可以与generate 命令一起使用的所有选项,只需执行:

$ mnemocards generate --help
usage: mnemocards generate [-h] [--config-file CONFIG_FILE] [--recursive]
                           [--output-dir OUTPUT_DIR]
                           DATA_DIR

positional arguments:
  DATA_DIR              Directory with the configuration and text data to use
                        for generating the Anki cards.

optional arguments:
  -h, --help            show this help message and exit
  --config-file CONFIG_FILE, -f CONFIG_FILE
                        Configuration file to search in the DATA_DIR.
  --recursive, -r       Search recursively for configuration files in the
                        given DATA_DIR.
  --output-dir OUTPUT_DIR, -o OUTPUT_DIR
                        Output directory where the packages are going to be
                        saved. Current directory by default.

Anki*.apkg文件的生成过程基于配置文件的使用。默认情况下,配置文件被称为cards_config.json. 示例中有五种不同,cards_config.json每个目录中都有一种(computer_science/cards_config.jsonenglish/cards_config.json、 和 )japanese/cards_config.jsongtrans_generated/from_tsv/cards_config.jsongtrans_generated/from_words/cards_config.json

该命令中-r使用的选项generate指示 Mnemocards 递归搜索那些配置文件。如果您只想生成japanese.apkg使用 mnemocards generage japanese或移入examples/japanese并在那里执行mnemocards generate .

配置文件cards_config.json

配置文件包含要构建的包数量、卡组数量、卡组配置和数据的输入源(TSV 文件和 Markdown 文件)。

最基本的配置文件是:

{
    "packages": [
        {
            "name": "APKG_filename",
            "decks": [
                {
                    "id": "ad054cdc-160b-4b77-a8a5-4da79fe5d8a5",
                    "name": "Deck name",
                    "src": [
                        {
                            "type": "markdown",
                            "file": "my_file.cards"
                        }
                    ]
                }
            ]
        }
    ]
}

每个配置文件可以生成一个或多个*.apkg包。每个包可以包含一个或多个甲板。每个卡片组可以包含一个或多个源文本文件。

建议指定一个牌组 ID,否则将使用牌组名称的哈希,这意味着如果名称更改,该牌组将被 Anki 视为新牌组,失去任何学习进度。

除了卡片组 ID、名称和源文件之外,您还可以指定卡片组配置。看看这个例子:

{
    "id": "e9a0b7ba-641a-4af6-8631-be9854a4e9d8",
    "name": "My deck name",
    "config": {
        "id": "65bcc65b-b4de-4ce4-b5c1-a73a2f64b82d",
        "name": "My deck name (Configuration)",
        "timer": 1,  # Active timer
        "maxTaken": 30,  # Max seconds taken by the timer
        "new": {
            "bury": true,  # Bury related new cards
            "initialFactor": 1500,  # Initial ease factor
            "perDay": 5,  # Number of new cards per day
            "delays": [1, 10, 1440, 4320, 10080],  # Learning steps in minutes
        },
        "lapse": {
            "leechAction": 1  # Mark leech cards. Set to 0 to suspend.
        }
    }
}

请注意,添加到某些属性右侧的注释不是有效的 JSON 语法,它们仅在本教程中添加。您可以在 Ankidroid 文档中阅读所有可以使用的甲板配置选项。

src属性应该至少有一个文件,以便为该套牌生成一些卡片。 type并且file是两个必需的属性。根据类型,您可以添加更多属性。

markdown类型

{
    "type": "markdown",
    "file": "math.cards",
    "show_tags": true,
    "card_properties": {
        "tags": ["math"]
    }
}

除此之外typefile您还可以添加:

  • show_tags. 此标志设置为 true 将显示在markdown 卡片标题中的fromcards_config.json和 from属性的卡片标签顶部(如 *.cards 格式部分所述)。 默认为假。tags
  • card_properties. 应用于此文件中所有卡片的属性。例如:使用此属性可以避免在该文件内的所有卡片中设置标签。
    • tags. tag 属性是目前唯一可用的属性。它是一个标签数组。即使您只指定一个标签,您也应该使用一个包含一个元素的数组。

vocabulary类型

{
    "type": "vocabulary",
    "file": "hiragana.tsv",
    "header": true,
    "pronunciation_in_reverse": false,
    "card_color": "#33AA33",
    "furigana": false,
    "audio": {
        "lang": "ja",
        "media_dir": "media/hiragana"
    },
    "card_properties": {
        "tags": ["japanese", "hiragana"]
    }
},
  • header. TSV 文件的第一行是标题行,因此将被跳过。
  • pronunciation_in_reverse. 默认情况下,逆向显示词汇卡时,不显示发音。如果您想要发音,请将此选项设置为 true。一旦你按下显示答案按钮,它就会显示出来。
  • card_color. 十六进制的卡片背景颜色。
  • furigana. 如果您正在学习日语,也许您想在卡片中使用假名(汉字上的小平假名字符)。如果要使用它们,请将此标志设置为 true,默认为 false。在您的 TSV 文件中,您的注音假名必须写在括号之间,并且在汉字之前有一个空格。例如,日[に] 本[ほん] 語[ご]
  • audio. 如果你想生成你正在学习的语言的音频文件,你应该在这里指定语言。
    • lang. 用于使用 ISO 639-2 生成这些文件的语言。您可以在 Wikipedia 中找到所有语言的 ISO 639-2 表。如果在谷歌翻译中没有发音,这是行不通的。
    • media_dir. 存储音频文件的目录。第一次生成包后,将创建此文件夹并填充所有音频文件。如果你不删除这个文件夹,下次使用 Mnemocards 会快很多,因为它已经生成了所有的音频文件。
  • card_properties与 Markdown 卡片中的含义相同。

expression类型

{
    "type": "expression",
    "file": "expressions.tsv",
    "header": true,
    "card_color": "#AA3333",
    "card_properties": {
        "tags": ["english", "expressions"]
    }
}

header,card_colorcard_properties词汇卡中的含义相同。

autogenerate类型

{
    "type": "autogenerate",
    "file": "words.txt",
    "pronunciation_in_reverse": true,
    "card_color": "#f5f5f5",
    "lang": {
        "original": "en",
        "translation": "es"
    },
    "one_translation": false,
    "audio": true,
    "furigana": false,
    "furigana_type": "hepburn",
    "card_properties": {
        "tags": ["english","spanish", "autogenerated" ]
    }
}
  • file.
    此类型用于从文件中的单词列表自动生成卡片 *.txt。该文件应每行包含一个单词或短语,没有分隔符,例如行尾的.,
    这种类型也可用于从自动生成 *.tsv的文件中生成卡片 - 有关如何生成 TSV 文件的说明,请阅读该部分 Autogenerate TSV files with maketsv command
  • lang.
    您应该在此处指定自动翻译的语言。
    语言代码列表可在此处获得
    • original. 文件中单词语言的语言代码。
    • translation. 您的语言的语言代码。
  • one_translation.
    如果您想生成每个单词只有一个翻译的卡片,请使用此标志。否则卡片将提供替代翻译(如果在谷歌翻译中可用)
    。默认情况下为 false。
  • furigana.
    此标志的工作方式与vocabulary类型相同,但会自动生成假名。
    此标志仅在lang:original设置为日语 ( ja) 时有效。
    如果激活了假名,来自谷歌翻译的发音将从卡片中删除。
    默认为假。
  • furigana_type.
    您可以选择使用哪种音译类型来进行注音假名。hira平假名(如果您跳过此标志,默认设置)、kana片假名和罗马字的可用值 hepburn
  • audio.
    此标志的工作方式与类型略有不同vocabulary,必须设置为 true 才能工作。默认为假。
  • pronunciation_in_reverse, card_color,card_properties与词汇卡中的含义相同。

:warning: 由于 Google Translate API 的限制,该程序每 3 分钟只能下载 25 个单词的翻译。如果您autogenerate在超过 25 个单词的列表上使用类型,程序将每 25 个单词延迟 3 分钟,并且生成可能需要大量时间,具体取决于总单词数。

*.cards文件格式

卡片具有以下语法:

<<<
header
===
title
---
body
>>>

标题部分包含有关卡片的一些元数据(ID 和标签),标题是卡片的前部,而隐藏部分的正文是在您按下Anki 上的Show Answer按钮时显示的。

标题部分使用YAML语法,标题和正文部分使用 Markdown 语法。请注意分隔符===,并且---是用于生成标题的合法 Markdown 语法,因此建议在标题和正文中使用#and##代替。

header 和 body 不是必需的,所以下一个例子也是一张卡片:

<<<
title
>>>

但是,强烈建议为您的卡提供 ID。如果没有使用 ID,则将使用标题的哈希作为 ID。这意味着如果更改标题,卡 ID 也会更改(标题很容易因为拼写错误或您希望对卡进行的未来改进而更改)。具有不同 ID 的卡片被 Anki 视为不同的卡片,因此您将有重复的卡片,新卡片将失去任何进度。请使用 ID。ID 在标题中给出,建议使用 GUID:

<<<
id: 07924f36-ccfa-4b72-ac21-11f8b151d42f
===
# Title
---
Body
>>>

您可以在标题中定义的另一个合法属性是标签。使用逗号分隔的列表,其中包含要分配给该卡的所有标签的名称:

<<<
id: 07924f36-ccfa-4b72-ac21-11f8b151d42f
tags: tag1,tag2,tag3
===
# Title
>>>

在标题或正文的任何​​部分使用使用美元(例如:)的内联数学公式$x^2$和使用两美元(例如:)的多行公式。$$\sum_i x_i$$

您还可以使用<img>标签将图像添加到卡片中。目前![alt](url)不支持图像的 Markdown 语法。请注意,图像名称在 Anki 卡片组中的所有图像中应该是唯一的,因此请避免使用1.png或之类的名称example.png

TSV 词汇文件

TSV 词汇文件应包含接下来的列。目前,列应该是给定的 order

  • ID. 唯一标识注释的字符。这个数字不仅在文件中而且在整个集合中都必须是唯一的,这就是为什么我们建议使用 UUID(字母数字字符序列,例如:64012c71-9aea-4622-aac7-2595d6798737)。拥有 UUID 是能够更新卡片(进行拼写更正或使用额外信息改进它们)并且不丢失进度的必要条件。如果您需要在第一次编写时为您的卡生成 UUID,请使用命令mnemocards id

  • YourLanguageWord. 您想学习的单词,但使用您的母语或已知语言。

  • YourLanguageExplanation. 任何额外的细节来帮助你得到你正在寻找的词。一个明显的使用示例是,当您必须解释一个在您的语言中没有直接翻译的词时,或者当您的语言中的翻译是一个具有多个含义的词时。例如:在日本的平薄物体中使用不同的数字,因此一枚的翻译显然是“一”,但要进行反向翻译,我们需要像“一,在计算平薄物体时”这样的澄清。

  • LanguageYouLearnWord. 用您尝试学习的语言编写的单词。

  • LanguageYouLearnPronunciation. 在这里写下你如何发音你正在学习的语言的单词。如果您选择生成带有发音的音频,音频将被放置在这里。

  • LanguageYouLearnExplanation. 此解释将始终伴随您想学习的语言中的单词。它解释了这个词在写作中可以以哪些替代形式出现为同义词或变体。不要提供任何揭示单词含义的额外信息,因为它会出现在一些卡片的正面,您的目标是将翻译成您的语言。例如:英语“打,打人”到西班牙语“pegar,你也可以使用'golpear'”。

  • Tags. 您在此处编写的标签将添加到 cards_config.json.

这就是卡片中字段的显示方式。前卡格式:

YourLanguageWord
YourLanguageExplanation
---                            # After showing answer
LanguageYouLearnWord           # After showing answer
LanguageYouLearnPronunciation  # After showing answer
LanguageYouLearnExplanation    # After showing answer

反转卡格式:

LanguageYouLearnWord
LanguageYouLearnPronunciation  # After showing answer
LanguageYouLearnExplanation
---                            # After showing answer
YourLanguageWord               # After showing answer
YourLanguageExplanation        # After showing answer

对于日语,cards_config.jsonnamed 中有一个特殊的标志furigana。如果将此标志标记为真,则正面的汉字将单独显示,而背面的汉字将显示假名。这使得LanguageYouLearnPronunciation创建日文卡片时不需要该字段(当然,您始终可以在此处使用罗马字)。

maketsv使用命令自动生成 TSV 文件

您可以将自动生成的*.tsv文件用于autogenerated卡片类型而不是*.txt文件。如果您想在将它们收集到apkg文件之前查看自动生成的卡片,请使用此选项。

要创建这样的文件,请移动到包含*.txt要变成卡片的单词的文件所在的文件夹并执行命令mnemocards maketsv .

默认情况下,命令将搜索具有名称的文件words.txt,但您可以将其指向任何带有附加参数的文件-w name_of_file.txt

默认情况下,该命令将假定文件中的单词是英语并将它们翻译成西班牙语。要更改语言对,请使用参数 -l lang_lang,其中第一个lang值是单词的语言,第二个 lang值是您的语言。使用此页面中的语言代码

例如,将单词从日语翻译成英语的命令,收集在文件japanese.txt中将如下所示:

$ mnemocards maketsv -l ja_en -w japanese.txt

生成的文件将具有基于语言对的名称,在示例中为ja_en.tsv.

TSV 文件将具有与上述TSV 词汇文件相同的结构 。事实上,您可以使用带有 vocabulary类型配置的 TSV 文件来构建套牌。但我建议将它们与autogenerate类型配置一起使用,因为该文件将包含一些基本的 html,用于使卡片看起来像 Google 翻译网站。

生成 TSV 文件后,您可以手动调整列的值,然后将其用于生成卡组。

您可以通过使用访问maketsv命令的完整帮助mnemocards maketsv -h

表达式 TSV 文件

与词汇 TSV 文件类似,表达式 TSV 文件包含: 目前,列应按给定顺序排列

  • ID 唯一标识注释的字符。这个数字不仅在文件中而且在整个集合中都必须是唯一的,这就是为什么我们建议使用 UUID(字母数字字符序列,例如:64012c71-9aea-4622-aac7-2595d6798737)。拥有 UUID 是能够更新卡片(进行拼写更正或使用额外信息改进它们)并且不丢失进度的必要条件。如果您需要在第一次编写时为您的卡生成 UUID,请使用命令mnemocards id

  • Expression. 您想学习的表达方式。

  • Explanation. 如果需要,对表达式进行额外解释。

  • Meaning. 表达式的含义。

  • Example. 表达式的使用示例。

  • Tags. 您在此处编写的标签将添加到 cards_config.json.

这种类型的笔记只有一张正面卡片。前卡:

Expression
Explanation
---          # After showing answer
Meaning      # After showing answer
Example      # After showing answer

当然,这些类型的卡片是为了学习一门新语言而创建的,但只要此处描述的字段符合您的目的,它们就可以用于任何其他目的。

将卡片导入 Anki

使用命令mnemocards import --help获取有关导入*.apkg文件的说明。

$ mnemocards import --help
usage: mnemocards import [-h] [--profile-name PROFILE_NAME]
                         [--collection-path COLLECTION_PATH]
                         apkgs [apkgs ...]

positional arguments:
  apkgs                 List of packages to import.

optional arguments:
  -h, --help            show this help message and exit
  --profile-name PROFILE_NAME, -p PROFILE_NAME
                        If your collection is in the default location
                        (`~/.local/share/Anki2/`) you can specify only the
                        profile name. You cannot use this option as the same
                        time as `-c`.
  --collection-path COLLECTION_PATH, -c COLLECTION_PATH
                        Specify the full path of the collection file. If you
                        use this option with `-p` (profile name), the profile
                        name has preference over the full collection path.

导入*.apkg文件需要关闭Anki,否则无法写入集合文件。请记住,您需要打开 Anki 并将集合与 Web Anki 同步,才能在所有设备中查看更新的集合。

Git实用程序

为了保证我的卡片安全并集中我的知识数据库,我添加了一些实用程序来mnemocards同时克隆和推送许多Git存储库。

第一步是知道要克隆哪些存储库。我喜欢为我正在学习的每个主题创建一个新的私有存储库。例如:

  • 日语:在我的个人资料下,我有一个名为learning_japanese.
  • 编程:我有一个名为learning_programming.
  • 等等...

我的目标是以一种简单的方式克隆所有这些存储库,并使它们非常易于访问,这样每当我想到我想记住的东西时,我就不会因为懒惰而推迟它。正如我一直在学习的那样,我有很多存储库。为了自动执行此任务,我创建了mnemocards github命令。

执行下一个命令的结果是一个~/.mnemocards文件,其中包含所有带有 Anki 卡的存储库的列表以及我希望克隆它们的 PC 中的本地路径。

$ mnemocards github -i "guiferviz/learning_([^ _]*)" -d ~/learning
... some output ...
$ cat ~/.mnemocards
{
    "repos": [
        [
            "git@github.com:guiferviz/learning_japanese.git",
            "~/learning/japanese"
        ],
        [
            "git@github.com:guiferviz/learning_programming.git",
            "~/learning/programming"
        ]
    ]
}

要执行该命令,您需要一个包含 GitHub API 密钥的文件,该文件具有足够的权限来读取您的存储库。转到GitHub Tokens并生成一个具有读取存储库权限的新令牌。如果要读取私有存储库,请选择下一个权限:

如果您想使用该mnemocards github --gists选项,即克隆 gists 而不是存储库,您的 GitHub API 密钥应该具有不同的权限。我不使用 gists,因为它们不允许提交目录,并且我想让我的图像井井有条。

您还可以~/.mnemocards使用给定的示例手动创建文件并替换 URL 和本地路径。

手动创建或自动创建文件后,您可以使用下一个命令克隆所有存储库。如果您的 repo 已经被克隆,此命令还会从服务器中提取最后的更改。

mnemocards pull

要提交并推送存储库中的所有更改,请使用下一个命令。您的存储库中的所有内容都将被添加和提交,因此如果您不想包含所有文件,请在您的.gitignore 或手动推送所有存储库中添加排除模式。使用类似于“使用助记卡更新存储库”的默认提交消息进行提交。

mnemocards push

码头工人

一个Docker镜像可用,这样您就可以生成您的包,而无需在您的环境中安装 Mnemocards。目前你需要在本地安装Anki 。我为您构建的 Docker 映像已命名guiferviz/mnemocards,可在Mnemocards Docker Hub 存储库中找到。阅读docker/目录下的文档,了解如何执行镜像。

如果您想自己生成 Docker 镜像,您还将在docker/目录中找到所有信息(Dockerfile和构建命令)。

由于 Docker 镜像是在将新版本标签推送到 GitHub 存储库时自动生成的,因此使用 Docker 是在不同版本的 Mnemocards 之间切换的一种非常方便的方式。

VIM 用户

我是一个顽固的 VIM 用户,因此我创建了一个vim_syntax/cards.vim 语法文件。它不是太花哨,但它看起来比使用 Markdown 语法更好。

使用 Markdown 语法:

使用我自己的 Cards 语法:

在我的UltiSnips 片段中,我有一个可以生成具有唯一 ID、标题和正文的新卡片。

snippet card "Create a new card" b
<<<
id: `!p if not snip.c: snip.rv = get_uuid()`
===
# ${1}
---
${2}
>>>
endsnippet

get_uuid函数定义为:

def get_uuid():
    """Get an UUID string. """

    import uuid
    return str(uuid.uuid4())

我还使用Markdown Preview插件,这样我就可以在不生成包的情况下查看我的卡片的外观。它的*.cards格式并不完美,但总比没有好:)

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

mnemocards-0.1.5.tar.gz (53.6 kB 查看哈希

已上传 source

内置分布

mnemocards-0.1.5-py3-none-any.whl (41.5 kB 查看哈希

已上传 py3