2013-02-02 5 views
5

Ich möchte das capture Modul von org-mode verwenden, um eine Datenbank von neuen Wörtern zu erstellen, die ich lernen möchte, und dann verwenden Sie das drill-Modul, um sie zu lernen (Flash-Karten-Stil) .Kombinieren Org-Modus Capture-und Drill-Module, um das Vokabular zu lernen

In meinem org-capture-templates Ich habe folgendes:

("v" "Vocabulary" entry 
       (file+headline (concat org-directory "/vocab.org") 
           "Vocabulary") 
       "* Word :drill:\n%^ \n** Answer \n%^") 

Dies ist eine ziemlich naive Vorlage, die ich from here entlehnt. Es funktioniert gut, aber es ist zu begrenzt. Leider bin ich ziemlich neu zu elisp und ich weiß nicht, wie man es verbessert.

Ich denke, die oben Vorlage in den folgenden es Aspekten verbessert werden muss:

Überschrift Derzeit ist die erste Eingabezeichenfolge ist das (neu) Wort und die Überschrift festgelegt ist. Wie kann die Überschrift das gleiche (Eingabe-) Wort sein? Ich denke, dass das folgende Ergebnis ist wünschenswert:

* Vocabulary 
** Foo :drill: 
Foo 
*** Answer 
What is foo 

Eigentlich eine noch bessere Möglichkeit 3 ​​Eingabezeichenfolgen zu haben wäre.

  1. Das neue Wort (zum Beispiel foo), die die Überschrift sein.
  2. Wenn die zweite leer ist, dann erhält sie die gleiche Zeichenfolge wie (1). Andernfalls verknüpft sie die Zeichenfolge mit der von (1). Z.B. als zweite Eingabe bar würde foo bar ergeben. Dies wird der Inhalt des Eintrags sein.
  3. Die Definition des Wortes, die in die answer Unterüberschrift kommen sollte.

Vervielfältigungen (siehe wieder this) Wenn zu einem späteren Zeitpunkt versuche ich foo wieder zu erfassen, würde ich es wissen möchte, und den bereits vorhandenen Eintrag bearbeiten gerichtet werden - alle Eingänge zu überspringen.

Sortierung Nach dem Capturen denke ich, es wäre nett, die Liste der Wörter zu sortieren. Dies sollte nicht zu schwer sein, da die Überschrift jedes Eintrags das Wort selbst ist. In diesem Fall kann man wahrscheinlich die org-sort-entries Funktion verwenden.

Ich weiß, das ist eine ziemlich große Frage, aber ich denke auch, dass, wenn es hier gelöst werden kann, es für viele Benutzer von großem Nutzen sein wird.


Edits:


Mit @juan_g Vorschläge, verbesserte ich meine Vorlage und jetzt ist es:

("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}") 

Ich habe es nicht geschafft den Standardwert des zweiten einzustellen Eingabe, um die erste zu sein. Ich habe versucht, etwas wie %^{Extended word (may be empty)|%\1}, aber es gibt ^A, die nicht hilfreich ist.

In jedem Fall scheint diese verbesserte Version bereits verwendbar zu sein.

Antwort

2

über die Eingabe-Frage, in Org Mode Manual: 9.1.3.2 Template expansion gibt es die% \ 1 spezielle escape code:

% \ n Bitte geben Sie den Text an dem n-ten% eingegeben^{prompt}, wobei Anzahl na, ausgehend von 1.

Die Duplikationsfrage würde wahrscheinlich einige Emacs Lisp-Codierung benötigen.

Zum Sortieren siehe C-c^(org-sort).

BTW, org-drill scheint in der Tat ein wirklich interessantes Paket, basierend auf SuperMemo spaced Repetition-Algorithmen.

0

Sie benötigen ein zusätzliches "\", daher funktioniert% \\ 1 wie erwartet.