结合组织模式捕获和钻取模块来学习词汇

时间:2013-02-02 21:18:45

标签: emacs elisp org-mode

我想使用capture的{​​{1}}模块创建我想要学习的新单词的数据库,然后使用org-mode模块学习它们(闪存卡)样式)。

在我的drill中,我添加了以下内容:

org-capture-templates

这是一个相当天真的模板,我借用了from here。它工作正常,但它太有限了。不幸的是,我对("v" "Vocabulary" entry (file+headline (concat org-directory "/vocab.org") "Vocabulary") "* Word :drill:\n%^ \n** Answer \n%^") 很新,我不知道如何改进它。

我认为上述模板必须在以下方面进行改进:

标题目前,第一个输入字符串是(新)字,标题是固定的。标题如何是相同(输入)字?我认为以下结果是可取的:

elisp

实际上,更好的方法是拥有3个输入字符串。

  1. 新标题(例如* Vocabulary ** Foo :drill: Foo *** Answer What is foo )将成为标题。
  2. 如果第二个为空,则它与(1)获得相同的字符串。否则,将字符串连接到(1)中的字符串。例如。作为第二个输入foo将产生bar。这将是条目的内容。
  3. 该词的定义应该出现在foo bar小标题中。
  4. 重复(请再次查看this)如果稍后我尝试再次捕获answer,我想知道它,并指示编辑已经现有条目 - 跳过所有输入。

    排序捕获后我觉得排序单词列表会很不错。鉴于每个条目的标题都是单词本身,这不应该太难。在这种情况下,可以使用foo函数。

    我知道这是一个相当大的问题,但我也认为如果能在这里解决它对许多用户来说都会有很大用处。


    编辑:


    使用@juan_g建议,我改进了我的模板,现在是:

    org-sort-entries

    我没有设法将第二个输入的默认值设置为第一个。我尝试了类似("v" "Vocabulary" entry (file+headline (concat org-directory "/vocab.org") "Vocabulary") "* %^{The word} :drill:\n %t\n %^{Extended word (may be empty)} \n** Answer \n%^{The definition}") 的内容,但它返回%^{Extended word (may be empty)|%\1},这没有帮助。

    无论如何,这个改进的版本似乎已经可用了。

2 个答案:

答案 0 :(得分:2)

关于输入问题,在Org Mode Manual: 9.1.3.2 Template expansion中,有%\ 1特殊转义码:

  

%\ n插入在nth%^ {prompt}输入的文本,其中n是一个数字,从1开始。

重复问题可能需要一些Emacs Lisp编码。

有关排序,请参阅C-c ^(org-sort)。

BTW,org-drill似乎确实是一个非常有趣的软件包,基于SuperMemo的间隔重复算法。

答案 1 :(得分:0)

您需要额外的“\”,因此%\\ 1按预期工作。