5

captureのモジュールを使用して、org-mode学習したい新しい単語のデータベースを作成し、モジュールを使用してdrillそれらを学習します (フラッシュ カード スタイル)。

org-capture-templatesは以下を追加しました:

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

これは、私がここから借りたかなり単純なテンプレートです。うまく機能しますが、制限が多すぎます。残念ながら、私は初心者でelispあり、改善する方法がわかりません。

上記のテンプレートは、次の点で改善する必要があると思います。

見出し現在、最初の入力文字列は (新しい) 単語であり、見出しは固定されています。見出しが同じ (入力) 単語である可能性はありますか? 次の結果が望ましいと思います。

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

実際には、さらに良い方法は、3 つの入力文字列を持つことです。

  1. foo見出しとなる新しい単語 (例: )。
  2. 2 番目が空の場合、(1) と同じ文字列が取得されます。それ以外の場合は、文字列を (1) の文字列に連結します。たとえば、2 番目の入力として持つと、barが生成されfoo barます。エントリーの内容になります。
  3. answerサブ見出しに含まれる単語の定義。

重複(これをもう一度参照してください) 後でfooもう一度キャプチャしようとすると、それを知りたいので、既存のエントリを編集するように指示されます - すべての入力をスキップします。

並べ替えキャプチャした後、単語のリストを並べ替えるとよいと思います。各エントリの見出しが単語自体であることを考えると、これはそれほど難しいことではありません。この場合、おそらくorg-sort-entries関数を使用できます。

これはかなり大きな問題であることは承知していますが、ここで解決できれば、多くのユーザーにとって非常に役立つと思います。


編集:


@juan_g の提案を使用して、テンプレートを改善したところ、次のようになりました。

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

2 番目の入力のデフォルト値を 1 番目の入力に設定できませんでした。私は何かを試しまし%^{Extended word (may be empty)|%\1}たが、それは^A役に立ちません。

いずれにせよ、この改良版はもう使えそうです。

4

2 に答える 2

2

入力の質問について、Org Mode Manual: 9.1.3.2 Template expandには、 %\1 特別なエスケープ コードがあります。

%\n n 番目の %^{prompt} で入力されたテキストを挿入します。ここで、na は 1 から始まる番号です。

重複の質問には、おそらく Emacs Lisp コーディングが必要になるでしょう。

並べ替えについては、Cc ^ (org-sort) を参照してください。

ところで、org-drillは、SuperMemo の間隔反復アルゴリズムに基づいた、実に興味深いパッケージのようです。

于 2013-02-02T23:37:35.363 に答える