From: Otared Kavian <otared@gmail.com>
To: mailing list for ConTeXt users <ntg-context@ntg.nl>
Subject: Re: Multiple letters
Date: Sun, 10 May 2009 15:29:51 +0200 [thread overview]
Message-ID: <E8E62786-BE10-4F05-AD72-7E3BB6D4EC20@gmail.com> (raw)
In-Reply-To: <C32FFCD4-5751-4111-8BF8-182CA0714B8F@gmail.com>
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
___________________________________________________________________________________
prev parent reply other threads:[~2009-05-10 13:29 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-05-10 12:32 Otared Kavian
2009-05-10 13:01 ` Wolfgang Schuster
2009-05-10 13:29 ` Otared Kavian [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=E8E62786-BE10-4F05-AD72-7E3BB6D4EC20@gmail.com \
--to=otared@gmail.com \
--cc=ntg-context@ntg.nl \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).