* Multiple letters @ 2009-05-10 12:32 Otared Kavian 2009-05-10 13:01 ` Wolfgang Schuster 0 siblings, 1 reply; 3+ messages in thread From: Otared Kavian @ 2009-05-10 12:32 UTC (permalink / raw) To: mailing list for ConTeXt users 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 ___________________________________________________________________________________ If your question is of interest to others as well, please add an entry to the Wiki! maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context webpage : http://www.pragma-ade.nl / http://tex.aanhet.net archive : https://foundry.supelec.fr/projects/contextrev/ wiki : http://contextgarden.net ___________________________________________________________________________________ ^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: Multiple letters 2009-05-10 12:32 Multiple letters Otared Kavian @ 2009-05-10 13:01 ` Wolfgang Schuster 2009-05-10 13:29 ` Otared Kavian 0 siblings, 1 reply; 3+ messages in thread From: Wolfgang Schuster @ 2009-05-10 13:01 UTC (permalink / raw) To: mailing list for ConTeXt users 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 ___________________________________________________________________________________ If your question is of interest to others as well, please add an entry to the Wiki! maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context webpage : http://www.pragma-ade.nl / http://tex.aanhet.net archive : https://foundry.supelec.fr/projects/contextrev/ wiki : http://contextgarden.net ___________________________________________________________________________________ ^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: Multiple letters 2009-05-10 13:01 ` Wolfgang Schuster @ 2009-05-10 13:29 ` Otared Kavian 0 siblings, 0 replies; 3+ messages in thread From: Otared Kavian @ 2009-05-10 13:29 UTC (permalink / raw) To: mailing list for ConTeXt users Dear Wolfgang, Many thanks! As usual you are clear and sharp… Your code works and does exactly what I need… Moreover I learned from it several "clean" tricks in order to use the way one can write macros in ConTeXt. I have just to understand different parts of the code in order to wikify it. Best regards: OK On 10 mai 09, at 15:01, Wolfgang Schuster wrote: > > 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 > > ___________________________________________________________________________________ > If your question is of interest to others as well, please add an > entry to the Wiki! > > maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context > webpage : http://www.pragma-ade.nl / http://tex.aanhet.net > archive : https://foundry.supelec.fr/projects/contextrev/ > wiki : http://contextgarden.net > ___________________________________________________________________________________ ___________________________________________________________________________________ If your question is of interest to others as well, please add an entry to the Wiki! maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context webpage : http://www.pragma-ade.nl / http://tex.aanhet.net archive : https://foundry.supelec.fr/projects/contextrev/ wiki : http://contextgarden.net ___________________________________________________________________________________ ^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2009-05-10 13:29 UTC | newest] Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2009-05-10 12:32 Multiple letters Otared Kavian 2009-05-10 13:01 ` Wolfgang Schuster 2009-05-10 13:29 ` Otared Kavian
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).