2013-02-02 4 views
5

voglio usare il modulo capture di org-mode per creare un database di parole nuove che voglio imparare, e quindi utilizzare il modulo drill per impararli (schede flash stile) .combinare i moduli in modalità di cattura e trapano org per imparare il vocabolario

Nel mio org-capture-templates ho aggiunto il seguente:

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

Si tratta di un modello piuttosto ingenua che ho preso in prestito from here. Funziona bene ma è troppo limitato. Purtroppo sono piuttosto nuovo a elisp e non so come migliorarlo.

Penso che il modello di cui sopra deve essere migliorata nei seguenti aspetti là:

Headline Attualmente la prima stringa di input è la parola (nuovo) e il titolo è fisso. Come può il titolo essere la stessa parola (input)? Penso che il seguente risultato sia desiderabile:

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

In realtà, un modo ancora migliore sarebbe avere 3 stringhe di input.

  1. La nuova parola (ad esempio foo) che sarà il titolo.
  2. Se il secondo è vuoto, ottiene la stessa stringa di (1). Altrimenti, concatena la stringa a quella di (1). Per esempio. avendo come secondo input bar darebbe foo bar. Questo sarà il contenuto della voce.
  3. La definizione della parola che dovrebbe comparire nel sottotitolo answer.

Duplicazioni (rivedo this) Se ad un certo punto poi cerco di catturare foo ancora una volta, mi piacerebbe conoscerlo, e di essere diretto per modificare la voce già esistente - saltare tutti gli ingressi.

Ordinamento Dopo l'acquisizione, penso che sarebbe bello ordinare l'elenco di parole. Questo non dovrebbe essere troppo difficile dato che il titolo di ogni voce è la parola stessa. In questo caso si può probabilmente usare la funzione org-sort-entries.

So che questa è una domanda piuttosto grande ma penso anche che se può essere risolto qui sarà di grande utilità per molti utenti.


Modifiche:


Utilizzando @juan_g suggerimenti, ho migliorato il mio modello e ora è:

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

io non sono riuscito a impostare il valore di default del secondo input per essere il primo. Ho provato qualcosa come %^{Extended word (may be empty)|%\1} ma restituisce ^A che non è utile.

In ogni caso, questa versione migliorata sembra essere già utilizzabile.

risposta

2

Circa la questione di input, in Org Mode Manual: 9.1.3.2 Template expansion, c'è il% \ 1 del codice di escape speciale:

% \ n Inserire il testo immesso al% ennesima^{pronto}, dove na il numero, a partire da 1.

La domanda di duplicazione probabilmente avrebbe richiesto la codifica Emacs Lisp.

Per l'ordinamento, vedere C-c^(org-sort).

BTW, org-drill sembra davvero un pacchetto davvero interessante, basato sugli algoritmi di ripetizione distanziati di SuperMemo.

0

È necessario un ulteriore "\", pertanto% \\ 1 funziona come previsto.