Hello, I need to convert an exam written in ConTeXt to an ascii text file like the following: NewQuestion,MC, Title,Which is gem, QuestionText,Which one of the following is regarded as a gem? Points,1, Difficulty,1, Image,, Option,0,Feldspar,, Option,100,Ruby,, Option,0,Sodium chloride,, Option,0,Quartz,, Hint,,,, Feedback,,,, Before I go to the trouble of creating a parser to read the ConTeXt input and write the desired output I'm wondering if this can be done with ConTeXt itself. Sorry if this is way OT. Thanks, Roger
On Tue, 16 Feb 2010, Roger Mason wrote:
Hello,
I need to convert an exam written in ConTeXt to an ascii text file like the following:
NewQuestion,MC, Title,Which is gem, QuestionText,Which one of the following is regarded as a gem? Points,1, Difficulty,1, Image,, Option,0,Feldspar,, Option,100,Ruby,, Option,0,Sodium chloride,, Option,0,Quartz,, Hint,,,, Feedback,,,,
Before I go to the trouble of creating a parser to read the ConTeXt input and write the desired output I'm wondering if this can be done with ConTeXt itself.
Can you show a small example of the corresponding tex source? Aditya
Hello Aditya,
Aditya Mahajan
On Tue, 16 Feb 2010, Roger Mason wrote:
Hello,
I need to convert an exam written in ConTeXt to an ascii text file like the following:
Before I go to the trouble of creating a parser to read the ConTeXt input and write the desired output I'm wondering if this can be done with ConTeXt itself.
Can you show a small example of the corresponding tex source?
\def\mcquestionnumber{14} \mcquestionheader A ruby is a gem of corundum coloured by\crlf {$A$}: Rutile\crlf{$B$}: Calcium (Ca)\crlf{$C$}: Chromium (Cr)\crlf{$D$}: Iron (Fe) and Titanium (Ti)\crlf \mcquestionfooter And the desired output is... NewQuestion,MC, Title,Ruby coloured by, QuestionText,A ruby is a gem of corundum coloured by Points,1, Difficulty,1, Image,, Option,0,Rutile,, Option,0,Calcium (Ca),, Option,100,Chromium (Cr),, Option,0,Iron (Fe) and Titanium (Ti),, Hint,,,, Feedback,,,, Maybe a regexp would do, followed by a bit of hand editing, but if there is a way of doing this in ConTeXt that would be very convenient. Thanks, Roger
Hi Roger, On Tue, 16 Feb 2010, Roger Mason wrote:
Aditya Mahajan
writes: On Tue, 16 Feb 2010, Roger Mason wrote:
I need to convert an exam written in ConTeXt to an ascii text file like the following:
Before I go to the trouble of creating a parser to read the ConTeXt input and write the desired output I'm wondering if this can be done with ConTeXt itself.
Can you show a small example of the corresponding tex source?
\def\mcquestionnumber{14}
\mcquestionheader A ruby is a gem of corundum coloured by\crlf {$A$}: Rutile\crlf{$B$}: Calcium (Ca)\crlf{$C$}: Chromium (Cr)\crlf{$D$}: Iron (Fe) and Titanium (Ti)\crlf
\mcquestionfooter
If you are willing to add more markup, then TeX can do the parsing for
you.
\startquestion[title={Ruby coloured by}, points=1, difficulty=1]
A ruby is a gem of corundum colored
\startoptions
\option Rutile
\option Calcium
\correctoption Chrumium
\option Iron and Titanium
\stopoptions
\starthint
....
\stophint
\startfeedback
...
\stopfeedback
\stopquestion
You can create a mode for ascii output that redefines all the environments
to *typeset* the correct output, which you can then convert to text using
pdftotext.
Another option is to write everything in XML (it is almost the same ...)
And the desired output is...
NewQuestion,MC, Title,Ruby coloured by, QuestionText,A ruby is a gem of corundum coloured by Points,1, Difficulty,1, Image,, Option,0,Rutile,, Option,0,Calcium (Ca),, Option,100,Chromium (Cr),, Option,0,Iron (Fe) and Titanium (Ti),, Hint,,,, Feedback,,,,
Maybe a regexp would do, followed by a bit of hand editing, but if there is a way of doing this in ConTeXt that would be very convenient.
If this is something that you need to do only a few types, anything quick and dirty will suffice. But for the long run it makes sense to have a more detailed markup and then you do not need to worry about the correctness of the conversion. Aditya
Hello Aditya,
Aditya Mahajan
If you are willing to add more markup, then TeX can do the parsing for you.
\startquestion[title={Ruby coloured by}, points=1, difficulty=1] A ruby is a gem of corundum colored \startoptions \option Rutile \option Calcium \correctoption Chrumium \option Iron and Titanium \stopoptions \starthint .... \stophint \startfeedback ... \stopfeedback \stopquestion
You can create a mode for ascii output that redefines all the environments to *typeset* the correct output, which you can then convert to text using pdftotext.
Another option is to write everything in XML (it is almost the same ...)
<text> A ruby .. </text> <options> <option> ... </option> <option> ... </option> <option correct="yes"> ... </option> <option> ... </option> </option> <hint> .... </hint> <feedback> ... </feedback> </question> With a few setup commands, ConTeXt can directly typeset an xml file. Parsing the xml file to generate ascii text can be done using your favourite programming language (or using ConTeXt by typesetting the desired output and using pdftotext).
Thank you very much. I will work on this over the next week and decide which method I like best. I really appreciate you taking the time to help. Best wishes, Roger
participants (2)
-
Aditya Mahajan
-
Roger Mason