ntg-context - mailing list for ConTeXt users
 help / color / mirror / Atom feed
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
___________________________________________________________________________________


      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).