diff options
| author | eeeickythump <devnull@localhost> | 2010-09-17 12:13:40 +1200 |
|---|---|---|
| committer | eeeickythump <devnull@localhost> | 2010-09-17 12:13:40 +1200 |
| commit | 0e2040ba7e03aa23dc76eecc5b1df1f3d14be0b3 (patch) | |
| tree | cb6b146580cc6bcd0f9eda333dd7a8c8da647fa9 | |
| parent | 9cb409a1ba2556072f82bcaba5331b72e6876aad (diff) | |
| download | org-drill-0e2040ba7e03aa23dc76eecc5b1df1f3d14be0b3.tar.gz org-drill-0e2040ba7e03aa23dc76eecc5b1df1f3d14be0b3.zip | |
* Documentation added for multicloze cards and cram mode.1.4
* Multicloze card example added in 'spanish.org'.
| -rw-r--r-- | README.html | 217 | ||||
| -rw-r--r-- | README.org | 119 | ||||
| -rw-r--r-- | org-drill.el | 18 | ||||
| -rw-r--r-- | spanish.org | 16 |
4 files changed, 299 insertions, 71 deletions
diff --git a/README.html b/README.html index b8f23f2..75a7a43 100644 --- a/README.html +++ b/README.html @@ -7,7 +7,7 @@ lang="en" xml:lang="en"> <title>Org-Drill</title> <meta http-equiv="Content-Type" content="text/html;charset=utf-8"/> <meta name="generator" content="Org-mode"/> -<meta name="generated" content="2010-09-04 17:22:25 NZST"/> +<meta name="generated" content="2010-09-17 10:05:27 "/> <meta name="author" content="Paul Sexton"/> <meta name="description" content=""/> <meta name="keywords" content=""/> @@ -79,28 +79,30 @@ lang="en" xml:lang="en"> <h2>Table of Contents</h2> <div id="text-table-of-contents"> <ul> -<li><a href="#sec-1">1 Synopsis </a></li> -<li><a href="#sec-2">2 Installation and Customisation </a></li> -<li><a href="#sec-3">3 Demonstration </a></li> -<li><a href="#sec-4">4 Writing the questions </a> +<li><a href="#sec-1">Synopsis </a></li> +<li><a href="#sec-2">Installation and Customisation </a></li> +<li><a href="#sec-3">Demonstration </a></li> +<li><a href="#sec-4">Writing the questions </a> <ul> -<li><a href="#sec-4_1">4.1 Simple topics </a></li> -<li><a href="#sec-4_2">4.2 Cloze deletion </a></li> -<li><a href="#sec-4_3">4.3 Two-sided cards </a></li> -<li><a href="#sec-4_4">4.4 Multi-sided cards </a></li> -<li><a href="#sec-4_5">4.5 User-defined topic types </a></li> +<li><a href="#sec-4_1">Simple topics </a></li> +<li><a href="#sec-4_2">Cloze deletion </a></li> +<li><a href="#sec-4_3">Two-sided cards </a></li> +<li><a href="#sec-4_4">Multi-sided cards </a></li> +<li><a href="#sec-4_5">Multi-cloze cards </a></li> +<li><a href="#sec-4_6">User-defined topic types </a></li> </ul> </li> -<li><a href="#sec-5">5 Running the drill session </a></li> -<li><a href="#sec-6">6 Leeches </a></li> -<li><a href="#sec-7">7 Incremental reading </a></li> -<li><a href="#sec-8">8 Still to do </a></li> +<li><a href="#sec-5">Running the drill session </a></li> +<li><a href="#sec-6">Leeches </a></li> +<li><a href="#sec-7">Cram mode </a></li> +<li><a href="#sec-8">Incremental reading </a></li> +<li><a href="#sec-9">Still to do </a></li> </ul> </div> </div> <div id="outline-container-1" class="outline-2"> -<h2 id="sec-1"><span class="section-number-2">1</span> Synopsis </h2> +<h2 id="sec-1">Synopsis </h2> <div class="outline-text-2" id="text-1"> @@ -142,7 +144,7 @@ that use it, see: </div> <div id="outline-container-2" class="outline-2"> -<h2 id="sec-2"><span class="section-number-2">2</span> Installation and Customisation </h2> +<h2 id="sec-2">Installation and Customisation </h2> <div class="outline-text-2" id="text-2"> @@ -232,7 +234,7 @@ your <code>.emacs</code>: </div> <div id="outline-container-3" class="outline-2"> -<h2 id="sec-3"><span class="section-number-2">3</span> Demonstration </h2> +<h2 id="sec-3">Demonstration </h2> <div class="outline-text-2" id="text-3"> @@ -251,7 +253,7 @@ drill topics are written. </div> <div id="outline-container-4" class="outline-2"> -<h2 id="sec-4"><span class="section-number-2">4</span> Writing the questions </h2> +<h2 id="sec-4">Writing the questions </h2> <div class="outline-text-2" id="text-4"> @@ -282,7 +284,7 @@ recall purposes. </div> <div id="outline-container-4_1" class="outline-3"> -<h3 id="sec-4_1"><span class="section-number-3">4.1</span> Simple topics </h3> +<h3 id="sec-4_1">Simple topics </h3> <div class="outline-text-3" id="text-4_1"> @@ -314,17 +316,18 @@ be visible, but the contents of the subheading ("The Answer") will be hidden. </div> <div id="outline-container-4_2" class="outline-3"> -<h3 id="sec-4_2"><span class="section-number-3">4.2</span> Cloze deletion </h3> +<h3 id="sec-4_2">Cloze deletion </h3> <div class="outline-text-3" id="text-4_2"> <p> Cloze deletion can be used in any drill topic regardless of whether it is -otherwise 'simple', or one of the specialised topic types discussed below. To -use cloze deletion, part of the body of the topic is marked as <i>cloze text</i> by -surrounding it with single square brackets, [like so]. When the topic is -presented for review, the text within square brackets will be obscured. The -text is then revealed after the user presses a key. For example: +otherwise 'simple', or is one of the specialised topic types discussed +below. To use cloze deletion, one or more parts of the body of the topic is +marked as <i>cloze text</i> by surrounding it with single square brackets, [like +so]. When the topic is presented for review, the text within square brackets +will be obscured. The text is then revealed after the user presses a key. For +example: </p> @@ -384,7 +387,7 @@ and <font style="background-color: blue;" color="cyan"> </div> <div id="outline-container-4_3" class="outline-3"> -<h3 id="sec-4_3"><span class="section-number-3">4.3</span> Two-sided cards </h3> +<h3 id="sec-4_3">Two-sided cards </h3> <div class="outline-text-3" id="text-4_3"> @@ -441,7 +444,7 @@ not one of the first two 'sides' of the topic. </div> <div id="outline-container-4_4" class="outline-3"> -<h3 id="sec-4_4"><span class="section-number-3">4.4</span> Multi-sided cards </h3> +<h3 id="sec-4_4">Multi-sided cards </h3> <div class="outline-text-3" id="text-4_4"> @@ -476,17 +479,116 @@ the table The user will be shown the main text and either 'la mujer', <i>or</i> 'the woman', <i>or</i> a picture of a table. </p> - </div> </div> <div id="outline-container-4_5" class="outline-3"> -<h3 id="sec-4_5"><span class="section-number-3">4.5</span> User-defined topic types </h3> +<h3 id="sec-4_5">Multi-cloze cards </h3> <div class="outline-text-3" id="text-4_5"> <p> +Often, you will wish to create cards out of sentences that express several +facts, such as the following: +</p> +<blockquote> + +<p>The capital city of New Zealand is Wellington, which is located in the +South Island and has a population of about 400,000. +</p> +</blockquote> + + +<p> +There is more than one fact in this statement – you could create a single +'simple' card with all the facts marked as cloze text, like so: +</p> +<blockquote> + +<p>The capital city of [New Zealand] is [Wellington], which is located in +[the South Island] and has a population of about [400,000]. +</p> +</blockquote> + + +<p> +But this card will be difficult to remember. If you get just one of the 4 +hidden facts wrong, you will fail the card. A card like this is likely to +become a <a href="#sec-6">leech</a>. +</p> +<p> +A better way to express all these facts using 'simple' cards is to create +several cards, with one fact per card. You might end up with something +like this: +</p> + + + +<pre class="example">* Fact +The capital city of [New Zealand] is Wellington, which has a population of +about 400,000. + +* Fact +The capital city of New Zealand is [Wellington], which has a population of +about 400,000. + +* Fact +The capital city of New Zealand is Wellington, which has a population of +about [400,000]. + +* Fact +The capital city of [New Zealand] is Wellington, which is located in the +the South Island. + +* Fact +The capital city of New Zealand is [Wellington], which is located in +the South Island. + +* Fact +The capital city of New Zealand is Wellington, which is located in +[the South Island]. +</pre> + + + +<p> +However, this is really cumbersome. The 'multicloze' card type exists for this +situation. Multicloze cards behave like 'simple' cards, except that when there +is more than one area marked as cloze text, only one of the marked areas will +be hidden during review – the others all remain visible. The hidden text area +is chosen randomly at each review. +</p> +<p> +So, for the above example, we can actually use the original 'bad' simple card, +but change its card type to 'multicloze'. Each time the card is presented for +review, one of 'New Zealand', 'Wellington', 'the South Island' or '400,000' +will be hidden. +</p> + + + +<pre class="example">* Fact + :PROPERTIES: + :DRILL_CARD_TYPE: multicloze + :END: + +The capital city of [New Zealand] is [Wellington], which is located in +[the South Island] and has a population of about [400,000]. +</pre> + + + +</div> + +</div> + +<div id="outline-container-4_6" class="outline-3"> +<h3 id="sec-4_6">User-defined topic types </h3> +<div class="outline-text-3" id="text-4_6"> + + +<p> Finally, you can write your own elisp functions to define new kinds of topics. Any new topic type will need to be added to <code>org-drill-card-type-alist</code>, and cards using that topic type will need to have @@ -504,7 +606,7 @@ See the file <a href="spanish.html">spanish.org</a> for a full set of example ma </div> <div id="outline-container-5" class="outline-2"> -<h2 id="sec-5"><span class="section-number-2">5</span> Running the drill session </h2> +<h2 id="sec-5">Running the drill session </h2> <div class="outline-text-2" id="text-5"> @@ -564,8 +666,9 @@ numbers is (taken from <code>org-learn</code>): <p> You can press '?' at the prompt if you have trouble remembering what the numbers 0–5 signify. At any time you can press 'q' to finish the drill early -(your progress will be saved), or 'e' to finish the drill and jump to the -current topic for editing (your progress up to that point will be saved). +(your progress will be saved), 's' to skip the current item without viewing the +answer, or 'e' to finish the drill and jump to the current topic for editing +(your progress up to that point will be saved). </p> </div> @@ -573,11 +676,10 @@ current topic for editing (your progress up to that point will be saved). </div> <div id="outline-container-6" class="outline-2"> -<h2 id="sec-6"><span class="section-number-2">6</span> Leeches </h2> +<h2 id="sec-6"><a name="leeches" id="leeches"></a>Leeches </h2> <div class="outline-text-2" id="text-6"> - <p> From the Anki website, <a href="http://ichi2.net/anki/wiki/Leeches">http://ichi2.net/anki/wiki/Leeches</a>: </p> @@ -628,12 +730,33 @@ See <a href="http://www.supermemo.com/help/leech.htm">the SuperMemo website</a> </div> <div id="outline-container-7" class="outline-2"> -<h2 id="sec-7"><span class="section-number-2">7</span> Incremental reading </h2> +<h2 id="sec-7">Cram mode </h2> <div class="outline-text-2" id="text-7"> <p> +There are some situations, such as before an exam, where you will want to +revise all of your cards regardless of when they are next due for review. +</p> +<p> +To do this, run a <i>cram session</i> with the <code>org-drill-cram</code> command (<code>M-x org-drill-cram RET</code>). This works the same as a normal drill session, except +that all items are considered due for review unless you reviewed them within +the last 12 hours (you can change the number of hours by customising the +variable <code>org-drill-cram-hours</code>). +</p> + +</div> + +</div> + +<div id="outline-container-8" class="outline-2"> +<h2 id="sec-8">Incremental reading </h2> +<div class="outline-text-2" id="text-8"> + + + +<p> An innovative feature of the program SuperMemo is so-called "incremental reading". This refers to the ability to quickly and easily make drill items from selected portions of text as you read an article (a web page for @@ -651,8 +774,8 @@ Another important component of incremental reading is the ability to save your exact place in a document, so you can read it <i>incrementally</i> rather than all at once. There is a large variety of bookmarking packages for emacs which provide advanced bookmarking functionality: see the <a href="http://www.emacswiki.org/emacs/BookMarks">Emacs Wiki</a> for details. -Bookmarking exact webpage locations in an external browser is a bit more -difficult. For Firefox, the addon works well. +Bookmarking exact webpage locations in an external browser seems to be a bit +more difficult. For Firefox, the <a href="http://www.wired-marker.org/">Wired Marker</a> addon works well. </p> <p> An example of using Org-Drill for incremental reading is given below. First, @@ -739,7 +862,7 @@ vaccine.</font> <p> -Then you press the button you created when setting up <code>org=protocol</code>, which is +Then you press the button you created when setting up <code>org-protocol</code>, which is configured to activate the capture template "w: Capture web snippet". The selected text will be sent to Emacs, turned into a new fact using the template, and filed away for your later attention. @@ -751,9 +874,9 @@ multiple items when you edit it later in Emacs.) </p> <p> Once you have had enough of reading the article, save your place, then go to -your "fact" file in Emacs. You should see that all the pieces of text you -selected have been turned into drill items. Continuing the above example, you -would see something like: +your "fact" file in Emacs. You should see that each piece of text you selected +has been turned into a drill item. Continuing the above example, you would see +something like: </p> @@ -789,9 +912,9 @@ or give it different tags or properties, for example. </div> -<div id="outline-container-8" class="outline-2"> -<h2 id="sec-8"><span class="section-number-2">8</span> Still to do </h2> -<div class="outline-text-2" id="text-8"> +<div id="outline-container-9" class="outline-2"> +<h2 id="sec-9">Still to do </h2> +<div class="outline-text-2" id="text-9"> <ul> @@ -800,10 +923,6 @@ or give it different tags or properties, for example. single tag? Can use <code>org-make-tag-matcher</code>. </li> <li> -progress indicator during drill session: cumulative time, time spent thinking -about this card -</li> -<li> perhaps take account of item priorities, showing high priority items first </li> </ul> @@ -812,7 +931,7 @@ perhaps take account of item priorities, showing high priority items first <div id="postamble"> <p class="author"> Author: Paul Sexton </p> -<p class="date"> Date: 2010-09-04 17:22:25 NZST</p> +<p class="date"> Date: 2010-09-17 10:05:27 </p> <p class="creator">HTML generated by org-mode 7.01trans in emacs 23</p> </div> </div> @@ -1,5 +1,6 @@ # -*- mode: org; coding: utf-8 -*- #+STARTUP: showall +#+OPTIONS: num:nil #+TITLE: Org-Drill #+AUTHOR: Paul Sexton @@ -134,11 +135,12 @@ be visible, but the contents of the subheading ("The Answer") will be hidden. ** Cloze deletion Cloze deletion can be used in any drill topic regardless of whether it is -otherwise 'simple', or one of the specialised topic types discussed below. To -use cloze deletion, part of the body of the topic is marked as /cloze text/ by -surrounding it with single square brackets, [like so]. When the topic is -presented for review, the text within square brackets will be obscured. The -text is then revealed after the user presses a key. For example: +otherwise 'simple', or is one of the specialised topic types discussed +below. To use cloze deletion, one or more parts of the body of the topic is +marked as /cloze text/ by surrounding it with single square brackets, [like +so]. When the topic is presented for review, the text within square brackets +will be obscured. The text is then revealed after the user presses a key. For +example: #+BEGIN_EXAMPLE * Item :drill: @@ -244,6 +246,78 @@ the table The user will be shown the main text and either 'la mujer', /or/ 'the woman', /or/ a picture of a table. +** Multi-cloze cards + +Often, you will wish to create cards out of sentences that express several +facts, such as the following: + +#+BEGIN_QUOTE +The capital city of New Zealand is Wellington, which is located in the +South Island and has a population of about 400,000. +#+END_QUOTE + +There is more than one fact in this statement -- you could create a single +'simple' card with all the facts marked as cloze text, like so: + +#+BEGIN_QUOTE +The capital city of [New Zealand] is [Wellington], which is located in +[the South Island] and has a population of about [400,000]. +#+END_QUOTE + +But this card will be difficult to remember. If you get just one of the 4 +hidden facts wrong, you will fail the card. A card like this is likely to +become a [[leeches][leech]]. + +A better way to express all these facts using 'simple' cards is to create +several cards, with one fact per card. You might end up with something +like this: + +#+BEGIN_EXAMPLE +* Fact +The capital city of [New Zealand] is Wellington, which has a population of +about 400,000. + +* Fact +The capital city of New Zealand is [Wellington], which has a population of +about 400,000. + +* Fact +The capital city of New Zealand is Wellington, which has a population of +about [400,000]. + +* Fact +The capital city of [New Zealand] is Wellington, which is located in the +the South Island. + +* Fact +The capital city of New Zealand is [Wellington], which is located in +the South Island. + +* Fact +The capital city of New Zealand is Wellington, which is located in +[the South Island]. +#+END_EXAMPLE + +However, this is really cumbersome. The 'multicloze' card type exists for this +situation. Multicloze cards behave like 'simple' cards, except that when there +is more than one area marked as cloze text, only one of the marked areas will +be hidden during review -- the others all remain visible. The hidden text area +is chosen randomly at each review. + +So, for the above example, we can actually use the original 'bad' simple card, +but change its card type to 'multicloze'. Each time the card is presented for +review, one of 'New Zealand', 'Wellington', 'the South Island' or '400,000' +will be hidden. + +#+BEGIN_EXAMPLE +* Fact + :PROPERTIES: + :DRILL_CARD_TYPE: multicloze + :END: + +The capital city of [New Zealand] is [Wellington], which is located in +[the South Island] and has a population of about [400,000]. +#+END_EXAMPLE ** User-defined topic types @@ -289,12 +363,13 @@ numbers is (taken from =org-learn=): You can press '?' at the prompt if you have trouble remembering what the numbers 0--5 signify. At any time you can press 'q' to finish the drill early -(your progress will be saved), or 'e' to finish the drill and jump to the -current topic for editing (your progress up to that point will be saved). +(your progress will be saved), 's' to skip the current item without viewing the +answer, or 'e' to finish the drill and jump to the current topic for editing +(your progress up to that point will be saved). * Leeches - +# <<leeches>> From the Anki website, http://ichi2.net/anki/wiki/Leeches: @@ -325,6 +400,19 @@ card. See [[http://www.supermemo.com/help/leech.htm][the SuperMemo website]] for more on leeches. +* Cram mode + + +There are some situations, such as before an exam, where you will want to +revise all of your cards regardless of when they are next due for review. + +To do this, run a /cram session/ with the =org-drill-cram= command (=M-x +org-drill-cram RET=). This works the same as a normal drill session, except +that all items are considered due for review unless you reviewed them within +the last 12 hours (you can change the number of hours by customising the +variable =org-drill-cram-hours=). + + * Incremental reading @@ -343,8 +431,8 @@ Another important component of incremental reading is the ability to save your exact place in a document, so you can read it /incrementally/ rather than all at once. There is a large variety of bookmarking packages for emacs which provide advanced bookmarking functionality: see the [[http://www.emacswiki.org/emacs/BookMarks][Emacs Wiki]] for details. -Bookmarking exact webpage locations in an external browser is a bit more -difficult. For Firefox, the addon works well. +Bookmarking exact webpage locations in an external browser seems to be a bit +more difficult. For Firefox, the [[http://www.wired-marker.org/][Wired Marker]] addon works well. An example of using Org-Drill for incremental reading is given below. First, and most importantly, we need to define a couple of =org-capture= templates for @@ -409,7 +497,7 @@ on screening programs and vaccination, usually with Bacillus Calmette-GuĂ©rin vaccine.@</font> #+END_QUOTE -Then you press the button you created when setting up =org=protocol=, which is +Then you press the button you created when setting up =org-protocol=, which is configured to activate the capture template "w: Capture web snippet". The selected text will be sent to Emacs, turned into a new fact using the template, and filed away for your later attention. @@ -419,9 +507,9 @@ item -- since it contains several important facts -- then split it up into multiple items when you edit it later in Emacs.) Once you have had enough of reading the article, save your place, then go to -your "fact" file in Emacs. You should see that all the pieces of text you -selected have been turned into drill items. Continuing the above example, you -would see something like: +your "fact" file in Emacs. You should see that each piece of text you selected +has been turned into a drill item. Continuing the above example, you would see +something like: #+BEGIN_EXAMPLE ** Fact: 'Tuberculosis - Wikipedia, the Free Encyclopedia' :drill: @@ -448,6 +536,5 @@ or give it different tags or properties, for example. - =org-drill-question-tag= should use a tag match string, rather than a single tag? Can use =org-make-tag-matcher=. -- progress indicator during drill session: cumulative time, time spent thinking - about this card - perhaps take account of item priorities, showing high priority items first +- get tooltips to work for old/new/etc counts during review? diff --git a/org-drill.el b/org-drill.el index a0b0f1b..6b5ff06 100644 --- a/org-drill.el +++ b/org-drill.el @@ -581,17 +581,23 @@ the current topic." (format "%s %s %s %s %s" (propertize (number-to-string (length *org-drill-done-entries*)) - 'face `(:foreground ,org-drill-done-count-color)) + 'face `(:foreground ,org-drill-done-count-color) + 'help-echo "The number of items you have reviewed this session.") (propertize (number-to-string (+ (length *org-drill-again-entries*) (length *org-drill-failed-entries*))) - 'face `(:foreground ,org-drill-failed-count-color)) + 'face `(:foreground ,org-drill-failed-count-color) + 'help-echo (concat "The number of items that you failed, " + "and need to review again.")) (propertize (number-to-string (length *org-drill-mature-entries*)) - 'face `(:foreground ,org-drill-mature-count-color)) + 'face `(:foreground ,org-drill-mature-count-color) + 'help-echo "The number of old items due for review.") (propertize (number-to-string (length *org-drill-new-entries*)) - 'face `(:foreground ,org-drill-new-count-color)) + 'face `(:foreground ,org-drill-new-count-color) + 'help-echo (concat "The number of new items that you " + "have never reviewed.")) prompt)) (if (and (eql 'warn org-drill-leech-method) (org-drill-entry-leech-p)) @@ -1115,6 +1121,10 @@ agenda-with-archives (defun org-drill-cram (&optional scope) + "Run an interactive drill session in 'cram mode'. In cram mode, +all drill items are considered to be due for review, unless they +have been reviewed within the last `org-drill-cram-hours' +hours." (interactive) (let ((*org-drill-cram-mode* t)) (org-drill scope))) diff --git a/spanish.org b/spanish.org index 4f32563..387b37a 100644 --- a/spanish.org +++ b/spanish.org @@ -39,7 +39,7 @@ What is your name? (informal) llamar = to be named -** Grammar rules +** Grammar rules 1 # More simple cards -- here the question and answer are produced purely using # cloze deletion of test in [square brackets], without the need to hide any @@ -55,12 +55,24 @@ llamar = to be named *** Grammar Rule :drill: +To form the plural of a noun ending in a consonant, add [-es] to the end. + +*** Grammar Rule :drill: + To make the plural of an adjective ending in [a stressed vowel or a consonant other than -z], add /-es/. +** Grammar rules 2 + +# An example of a 'multicloze' card. One of the areas marked with square +# brackets will be hidden (chosen at random), the others will remain visible. + *** Grammar Rule :drill: + :PROPERTIES: + :DRILL_CARD_TYPE: multicloze + :END: -To form an adverb from an adjective, add [-mente] to the [feminine|gender] +To form [an adverb] from an adjective, add [-mente] to the [feminine|gender] form of the adjective. ** Vocabulary |
