该项目提供了基于模板的披肩实现:
这仅是通过卡模板中的JavaScript和Anki内置(很棒)选择性卡生成功能的新颖应用来实现的。最大的好处是,您可以从现有笔记中生成披肩卡,您可能已经拥有卡。它不依赖Anki的披肩注释类型或任何其他便笺类型,这意味着您不必将卡迁移到新的便笺类型。它与Anki桌面,Ankimobile和Ankidroid兼容。
入门很容易。您可以下载共享甲板,也可以按照指令手动设置模板。
但是,使用JavaScript和卡模板复制ANKI功能并不是目标。目标是无尽的灵活性。您可以根据此处的说明添加新字段和卡模板,将其固定卡添加到任何现有的注释类型(“披肩所有物品”)中。您也可以完全使用它们作为指南来完全修改模板。
使用默认设置,这复制了Anki的披肩功能。但是,该模板是高度可配置的,可以让您做一些您无法轻松做的事情。以下是模板和这种方法的一些有用特征的摘要。
[...]或[hint]替换了每个clozed值。这些模板可让您自定义。例如,您可以使用下划线,并使格式为___ 。或者,您可以随时包括___ [hint]中的提示。同样,您可以更换每个非空间字符的3个字符的固定数量。因此,您可以拥有((c1::ab cdef::hint))成为__ ____ [hint] 。((c1::`a`bc `d`ef))被渲染为a__ d__ 。您可以选择性地揭示内容的任何部分,而不仅仅是一开始。请注意,您也可以执行a((c1::bc)) d((c1::ef)) ,但是背部语法可能更方便。还提供了一个可选的插件,该插件可以自动化一些遵循此方法时需要的其他(最小)手动工作。
入门有两个选择:
还建议安装插件,以使您更容易编辑披肩卡,但不需要。
与Anki的披肩模板类似,您需要一个字段才能包含披肩内容。出于惯例,如果您想以后要使用该插件,最好将字段名称结束。假设您将其命名为ExpressionCloze ,如说明中所建议的。与Anki的披肩模板相似的方式,在此字段中输入了披肩内容。唯一的区别是,您使用((c1::text)) {{c1::text}} 。然后,您需要字段才能启用每张披肩卡。因此,假设您想支持三个clozes。您将添加fields ExpressionCloze1 , ExpressionCloze2和ExpressionCloze3 。您输入要进入这些字段的任何文本以启用相应的披肩卡。插件使用1 。
例如,假设您想为IK Heb Honger表达式中的每个单词创建披肩卡。您会这样写字段:
有关此示例的HTML渲染,请参见前后卡示例。
由于每个披肩字段的非空值为1 ,因此将为c1至c3中的每一个生成一张卡。如果您从ExpressionCloze3中删除了1则仅对c1和c2生成卡。
让我们挖掘一切的工作原理。前面引用的说明具有以下第一张披肩卡的模板。请注意,卡的正面的整个内容都被基于ExpressionCloze和ExpressionCloze1条件标签包围。这意味着,由于Anki卡生成的工作方式,这两个字段都必须不发空才能创建卡。因此,如果这些字段中的任何一个都是空的,则未生成相应的卡。符合脚本只需查看data-card的值以终止的数字,然后相应地更新Cloze <div>中的内容。因此,如果data-card的值是ExpressionCloze2 ,则它知道隐藏((c2::text))并显示其他。
{{#ExpressionCloze}}
{{#ExpressionCloze1}}
<div id="cloze" data-card="{{Card}}" data-cloze-show-before="all" data-cloze-show-after="all">
{{ExpressionCloze}}
</div>
{{Meaning}}
<script>
// .. ommitted ...
</script>
{{/ExpressionCloze1}}
{{/ExpressionCloze}}
这些模板还支持在Anki系统中的缩写删除中的提示。例如,对于下面的示例, heb将被[verb]而不是[...]替换。
((c1::Ik)) ((c2::heb::verb)) ((c3::honger)).
有关如何手动设置卡模板的完整详细信息,请参阅说明。另外,您可以将共享甲板用作起点,并将指令用作如何修改它以满足您的需求的参考。
该模板具有多种设置,用于控制如何渲染覆盖删除。有关详细信息,请参见配置。
该插件做了两件事,使您更容易遵循此方法时更容易编辑Cloze Deletions:
[...]按钮挂钩,因此除了基于Anki的披肩类型外,您还可以在其他笔记上使用它。ExpressionCloze字段(或类似命名字段)的编辑同步到其他字段ExpressionCloze1 , ExpressionCloze2等,以启用相应的披肩卡。 [...]按钮在基于Anki的披肩类型的一种注释类型之一上使用时的行为相同。但是,如果字段名称像ExpressionCloze一样披肩结束,则它将包裹所选的文本,例如((c1::text)) 。这与Anki的正常行为相同,除非它使用括号而不是卷曲括号。
[...]按钮具有一个有用的功能,如果您在Cloze in Cloze的空字段中按焦点,则将其从另一个字段中复制带有相同名称的文本,减去cloze后缀。例如,如果您在专注于ExpressionCloze浮动时单击按钮,则它将从Expression中复制文本。
您也可以在不使用[...]按钮的情况下修改披肩字段。该插件监视更改并标识((c1::text))之类的模式。它使相应的披肩场是空的,要么根据披肩缺失的存在,要么包含1 。例如,如果您用((c1::Ik)) ((c2::heb)) ((c3::honger)). ExpressionCloze然后,它将填充1 ExpressionCloze1 , ExpressionCloze2和ExpressionCloze3 。如果您将其编辑为((c1::Ik)) ((c2::heb)) honger.然后它将使ExpressionCloze3为空。
该插件在编辑下的浏览器中添加了两个操作 - > cloze nothing。他们俩都在浏览器中选择的任何音符上运行。
这会自动从整个领域披肩。例如,假设您有一个名为ExpressionCloze和Expression字段。如果ExpressionCloze为空,则此动作会导致Expression复制到ExpressionCloze中,并将其制成像((c1::content))的披肩。它还更新了ExpressionCloze1导致生成披肩卡。当您有很多笔记内容简短的内容时,这很有用。将它们批量覆盖比一一更有效。
请注意,这本质上是在使用披肩制作生产卡(即以您的母语含义,以您正在学习的语言产生表达式)。那么,为什么不只是制作生产卡模板而不是使用披肩呢?在某些情况下,这可能比使用披肩更有效。但是,披肩有用的原因有两个:
基本上,这只是确保披肩字段与负责卡生成的相应字段保持同步。例如,如果ExpressionCloze具有((c1::Ik)) ((c2::heb)) ((c3::honger)).然后,这将确保ExpressionCloze1 , ExpressionCloze2和ExpressionCloze3各自填充1 。但是,如果存在,则ExpressionCloze4将空白。使用插件时,通常不需要使用此操作,因为插件可确保在更改内容时更新这些字段。但是,如果您进行导入或在使用插件之前编辑注释,则可以用来修复以同步为单位的字段。
安基已经对披肩拥有内置的支持。那为什么要披肩呢?
优点:
缺点:
type:前缀以启用答案中的类型。 卡模板与Anki桌面,Ankimobile和Ankidroid兼容。
该插件可与Anki Desktop 2.1一起使用。我没有添加2.0支持的计划。
我尚未测试插件与其他披肩插件(例如Cloze(隐藏)和披肩重叠器的交互作用。如果您遇到问题,请提出问题,我会尽力解决问题。
据报道,以下插件与此插件具有兼容性问题:
除了从Anki的Cloze System本身中汲取灵感外,还有一些相关的Anki Cloze插件,为此处找到的功能提供了一些灵感。感谢所有作者对Anki的思想以及这些有助于发展新想法的插件。
版权2019-2021 Matthew Hayes
根据Apache许可证(版本2.0(“许可”)获得许可;除了符合许可外,您不得使用此文件。您可以在
http://www.apache.org/licenses/license-2.0
除非适用法律要求或以书面形式同意,否则根据许可证分配的软件是按照“原样”分发的,没有任何明示或暗示的任何形式的保证或条件。请参阅许可证,以获取执行许可条款和限制的特定语言。