Am 10.05.2009 um 14:32 schrieb Otared Kavian:
Hi all,
I have to write a letter to a few dozens candidates in which some parts are not identical. I may have the list of the persons, and the changing part for each of them in a file (named for instance "list- of-candidates.tex") on which each line corresponds to one person and the fields are sperated by commas (or any other suitable character). What would be the best way of coding this in ConTeXt?
Here is the example I have in mind:
%%% begin the body of the letter
Dear \MmeOrSir\ \FirstName\ \FamilyName,
We have received your application and we thank you for your interest in our institution. \AnswerToApplication.
With our best regards, etc…
%%% end the body of the letter
The four commands \MmeOrSir, \FirstName, \FamilyName, \AnswerToApplication should correspond to the columns 1 through 4 of each line of the file "list-of-candidates.tex" as follows:
%%% begin list-of-candidates.tex Madam , Joan , of Arc , {You will be interviewed very soon} Mr , Groucho , Marx , {We are sorry, but this position is only for non smoking candidates}
\endinput %%% end list-of-candidates.tex
Thank you for help: OK
\unprotect \definemessageconstant {filecontents} \startmessages all library: filecontents title: filecontents 1: Overwriting file -- 2: Writing file -- \stopmessages \def\startfilecontents {\begingroup \protectbuffersfalse \dostartfilecontents} \def\dostartfilecontents[#1]% {\doiffileexistselse{#1} {\showmessage\m!filecontents{1}{#1}} {\showmessage\m!filecontents{2}{#1}}% \beforesplitstring#1\at.\to\filename \aftersplitstring #1\at.\to\extension \let\f!temporaryextension\extension \dostartbuffer[\filename][startfilecontents][stopfilecontents]} \def\stopfilecontents {\doifmode{mkiv}{\savebuffer[\filename]\ctxlua{file.copy("\jobname- \filename.tmp","\filename.\f!temporaryextension")}}% \endgroup} \ifx\savebuffer\undefined \def\savebuffer[#1] {\ctxlua{buffers.save("#1")}} \fi \protect \startfilecontents[data.dat] Madam, Joan, of Arc, {You will be interviewed very soon} Mr, Groucho, Marx, {We are sorry, but this position is only for non smoking candidates} \stopfilecontents \usemodule[database,letter] \define[4]\createletter {\startletter[opening={Dear #1 #2 #3,}] We have received your application and we thank you for your interest in our institution.\endgraf #4 \stopletter} \defineseparatedlist [LETTER] [command=\createletter, separator={,}] \starttext \processseparatedfile[LETTER][data.dat] \stoptext Wolfgang