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 つの入力文字列を持つことです。
foo
見出しとなる新しい単語 (例: )。- 2 番目が空の場合、(1) と同じ文字列が取得されます。それ以外の場合は、文字列を (1) の文字列に連結します。たとえば、2 番目の入力として持つと、
bar
が生成されfoo bar
ます。エントリーの内容になります。 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
役に立ちません。
いずれにせよ、この改良版はもう使えそうです。