diff options
author | Karl Berry <karl@freefriends.org> | 2009-02-19 01:23:44 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2009-02-19 01:23:44 +0000 |
commit | 5b6f93171d7172ec05d3db7011cd737f9897ca44 (patch) | |
tree | 6d5953a2ac4f60d50dd5479762795db8c75c462d | |
parent | 7e7a92f942d6f82e15d160d4787dfcdc46cd2b86 (diff) |
context-letter update, really (18feb09)
git-svn-id: svn://tug.org/texlive/trunk@12183 c570f23f-e606-0410-a88d-b1316a301751
3 files changed, 283 insertions, 187 deletions
diff --git a/Master/texmf-dist/tex/context/interface/third/t-letter.xml b/Master/texmf-dist/tex/context/interface/third/t-letter.xml index 7992e7ad07a..c8302c7fe8b 100644 --- a/Master/texmf-dist/tex/context/interface/third/t-letter.xml +++ b/Master/texmf-dist/tex/context/interface/third/t-letter.xml @@ -3,6 +3,11 @@ <cd:interface xmlns:cd="http://www.pragma-ade.com/commands" name="context" language="en" version="2006.08.02"> <cd:define name="lettersection"> + <cd:constant type="letterhead"/> + <cd:constant type="dateline"/> + <cd:constant type="referenceline"/> + <cd:constant type="specialnotation"/> + <cd:constant type="insideaddress"/> <cd:constant type="title"/> <cd:constant type="subject"/> <cd:constant type="opening"/> @@ -12,18 +17,25 @@ </cd:define> <cd:define name="letterlayer"> - <cd:constant type="letternext"/> - <cd:constant type="lettermain"/> <cd:constant type="head"/> <cd:constant type="foot"/> + <cd:constant type="nexthead"/> + <cd:constant type="nextfoot"/> + <cd:constant type="lefthead"/> + <cd:constant type="leftfoot"/> + <cd:constant type="righthead"/> + <cd:constant type="rightfoot"/> <cd:constant type="address"/> <cd:constant type="backaddress"/> <cd:constant type="reference"/> + <cd:constant type="location"/> <cd:constant type="topmark"/> <cd:constant type="botmark"/> <cd:constant type="cutmark"/> <cd:constant type="endmark"/> <cd:constant type="usermark"/> + <cd:constant type="letternext"/> + <cd:constant type="lettermain"/> </cd:define> <cd:command name="setupletterstyle:layout" file="t-letter.tex"> @@ -42,11 +54,11 @@ </cd:command> <cd:command name="setupletterstyle:option" file="t-letter.tex"> - <cd:sequence> + <cd:sequence > <cd:string value="setupletterstyle"/> </cd:sequence> <cd:arguments> - <cd:keywords> + <cd:keywords optional="yes"> <cd:constant type="option"/> </cd:keywords> <cd:assignments list="yes"> @@ -100,30 +112,7 @@ </cd:arguments> </cd:command> -<cd:command name="setupletterstyle:text" file="t-letter.tex"> - <cd:sequence> - <cd:string value="setupletterstyle"/> - </cd:sequence> - <cd:arguments> - <cd:keywords list="yes"> - <cd:constant type="header"/> - <cd:constant type="footer"/> - </cd:keywords> - <cd:assignments list="yes"> - <cd:parameter name="lefttext"> - <cd:constant type="cd:text"/> - </cd:parameter> - <cd:parameter name="middletext"> - <cd:constant type="cd:text"/> - </cd:parameter> - <cd:parameter name="righttext"> - <cd:constant type="cd:text"/> - </cd:parameter> - </cd:assignments> - </cd:arguments> -</cd:command> - -<cd:command name="setupletterstyle:section" file="t-letter.tex"> +<cd:command name="setuplettersection" file="t-letter.tex"> <cd:sequence> <cd:string value="setupletterstyle"/> </cd:sequence> @@ -147,11 +136,30 @@ <cd:parameter name="color"> <cd:constant type="cd:name"/> </cd:parameter> + <cd:parameter name="leftmargin"> + <cd:constant type="cd:dimension"/> + </cd:parameter> + <cd:parameter name="rightmargin"> + <cd:constant type="cd:dimension"/> + </cd:parameter> + <cd:parameter name="alternative"> + <cd:constant type="cd:name"/> + </cd:parameter> + <cd:parameter name="separator"> + <cd:constant type="cd:name"/> + </cd:parameter> + <cd:parameter name="command"> + <cd:constant type="cd:oneargument"/> + </cd:parameter> + <cd:parameter name="optimize"> + <cd:constant type="yes"/> + <cd:constant type="no" default="yes"/> + </cd:parameter> </cd:assignments> </cd:arguments> </cd:command> -<cd:command name="setupletterstyle:frame" file="t-letter.tex"> +<cd:command name="setupletterlayer:layer" file="t-letter.tex"> <cd:sequence> <cd:string value="setupletterstyle"/> </cd:sequence> @@ -159,7 +167,24 @@ <cd:keywords list="yes"> <cd:resolve name="letterlayer"/> </cd:keywords> - <cd:keywords> + <cd:keywords optional="yes"> + <cd:constant type="layer"/> + </cd:keywords> + <cd:assignments list="yes"> + <cd:inherit name="setuplayer"/> + </cd:assignments> + </cd:arguments> +</cd:command> + +<cd:command name="setupletterlayer:frame" file="t-letter.tex"> + <cd:sequence> + <cd:string value="setupletterstyle"/> + </cd:sequence> + <cd:arguments> + <cd:keywords list="yes"> + <cd:resolve name="letterlayer"/> + </cd:keywords> + <cd:keywords optional="yes"> <cd:constant type="frame"/> </cd:keywords> <cd:assignments list="yes"> @@ -168,7 +193,7 @@ </cd:arguments> </cd:command> -<cd:command name="setupletterstyle:layer" file="t-letter.tex"> +<cd:command name="setupletterlayer:option" file="t-letter.tex"> <cd:sequence> <cd:string value="setupletterstyle"/> </cd:sequence> @@ -176,11 +201,49 @@ <cd:keywords list="yes"> <cd:resolve name="letterlayer"/> </cd:keywords> - <cd:keywords> - <cd:constant type="layer"/> + <cd:keywords optional="yes"> + <cd:constant type="option"/> </cd:keywords> <cd:assignments list="yes"> - <cd:inherit name="setuplayer"/> + <cd:parameter name="state"> + <cd:constant type="start" default="yes"/> + <cd:constant type="stop"/> + <cd:constant type="first"/> + <cd:constant type="next"/> + <cd:constant type="left"/> + <cd:constant type="right"/> + <cd:constant type="leftpage"/> + <cd:constant type="rightpage"/> + <cd:constant type="page"/> + <cd:constant type="subpage" default="yes"/> + </cd:parameter> + <cd:parameter name="symbol"> + <cd:constant type="cd:name"/> + </cd:parameter> + <cd:parameter name="style"> + <cd:resolve name="style"/> + </cd:parameter> + <cd:parameter name="color"> + <cd:constant type="cd:name"/> + </cd:parameter> + <cd:parameter name="alternative"> + <cd:constant type="cd:name"/> + </cd:parameter> + <cd:parameter name="separator"> + <cd:constant type="cd:name"/> + </cd:parameter> + <cd:parameter name="leftmargin"> + <cd:constant type="cd:dimension"/> + </cd:parameter> + <cd:parameter name="rightmargin"> + <cd:constant type="cd:dimension"/> + </cd:parameter> + <cd:parameter name="spacebefore"> + <cd:constant type="cd:dimension"/> + </cd:parameter> + <cd:parameter name="spaceafter"> + <cd:constant type="cd:dimension"/> + </cd:parameter> </cd:assignments> </cd:arguments> </cd:command> diff --git a/Master/texmf-dist/tex/context/third/letter/base/t-correspondence.tex b/Master/texmf-dist/tex/context/third/letter/base/t-correspondence.tex index 61cbb35508c..01694a9875b 100644 --- a/Master/texmf-dist/tex/context/third/letter/base/t-correspondence.tex +++ b/Master/texmf-dist/tex/context/third/letter/base/t-correspondence.tex @@ -1,6 +1,6 @@ %D \module %D [ file=t-correspondence, -%D version=2008.02.13, +%D version=2008.02.17, %D title=\CONTEXT\ User Module, %D subtitle=Correspondence, %D author=Wolfgang Schuster, @@ -54,6 +54,7 @@ \setinterfaceconstant {toaddress} {toaddress} \setinterfaceconstant {enclosure} {enclosure} \setinterfaceconstant {copy} {copy} + \setinterfaceconstant {ps} {ps} \setinterfaceconstant {postscript} {postscript} \setinterfaceconstant {attention} {attention} \setinterfaceconstant {distribution} {distribution} @@ -73,6 +74,7 @@ \setinterfaceconstant {subject} {subject} \setinterfaceconstant {cc} {cc} \setinterfaceconstant {enclosure} {enclosure} + \setinterfaceconstant {encl} {encl} \setinterfaceconstant {phone} {phone} \setinterfaceconstant {fax} {fax} \setinterfaceconstant {email} {email} @@ -85,93 +87,94 @@ \stopinterface \startinterface all - \setinterfacevariable {secondpage} {secondpage} - \setinterfacevariable {foot} {foot} - \setinterfacevariable {topmark} {topmark} - \setinterfacevariable {botmark} {botmark} - \setinterfacevariable {cutmark} {cutmark} - \setinterfacevariable {endmark} {endmark} - \setinterfacevariable {option} {option} - \setinterfacevariable {foldmark} {foldmark} - \setinterfacevariable {usermark} {usermark} - \setinterfacevariable {layer} {layer} - \setinterfacevariable {firsthead} {firsthead} - \setinterfacevariable {nexthead} {nexthead} - \setinterfacevariable {lefthead} {lefthead} - \setinterfacevariable {righthead} {righthead} - \setinterfacevariable {firstfoot} {firstfoot} - \setinterfacevariable {nextfoot} {nextfoot} - \setinterfacevariable {leftfoot} {leftfoot} - \setinterfacevariable {rightfoot} {rightfoot} - \setinterfacevariable {layout} {layout} - \setinterfacevariable {place} {place} - \setinterfacevariable {initialize} {initialize} - \setinterfacevariable {finish} {finish} - \setinterfacevariable {sequence} {sequence} - \setinterfacevariable {style} {style} - \setinterfacevariable {extension} {extension} - \setinterfacevariable {interface} {interface} - \setinterfacevariable {resume} {resume} - \setinterfacevariable {letter} {letter} - \setinterfacevariable {backaddress} {backaddress} - \setinterfacevariable {reference} {reference} - \setinterfacevariable {location} {location} - \setinterfacevariable {address} {address} - \setinterfacevariable {opening} {opening} - \setinterfacevariable {closing} {closing} - \setinterfacevariable {letternext} {letternext} - \setinterfacevariable {lettermain} {lettermain} - \setinterfacevariable {special} {special} - \setinterfacevariable {notation} {notation} - \setinterfacevariable {inside} {inside} - \setinterfacevariable {optimize} {optimize} - \setinterfacevariable {file} {file} - \setinterfacevariable {e} {e} - \setinterfacevariable {data} {data} - \setinterfacevariable {sender} {sender} - \setinterfacevariable {dispatch} {dispatch} - \setinterfacevariable {enclosure} {enclosure} - \setinterfacevariable {copy} {copy} - \setinterfacevariable {nobreak} {nobreak} - \setinterfacevariable {endgraf} {endgraf} - \setinterfacevariable {memo} {memo} - \setinterfacevariable {addressee} {addressee} - \setinterfacevariable {french} {french} - \setinterfacevariable {simplified} {simplified} - \setinterfacevariable {fullblock} {fullblock} - \setinterfacevariable {hanging} {hanging} - \setinterfacevariable {modified} {modified} - \setinterfacevariable {semiblock} {semiblock} - \setinterfacevariable {handle} {handle} - \setinterfacevariable {casual} {casual} - \setinterfacevariable {classic} {classic} - \setinterfacevariable {knuth} {knuth} - \setinterfacevariable {firstname} {firstname} - \setinterfacevariable {familyname} {familyname} - \setinterfacevariable {street} {street} - \setinterfacevariable {town} {town} - \setinterfacevariable {mobile} {mobile} - \setinterfacevariable {phone} {phone} - \setinterfacevariable {fax} {fax} - \setinterfacevariable {email} {email} - \setinterfacevariable {info} {info} + \setinterfacevariable {secondpage} {secondpage} + \setinterfacevariable {foot} {foot} + \setinterfacevariable {topmark} {topmark} + \setinterfacevariable {botmark} {botmark} + \setinterfacevariable {cutmark} {cutmark} + \setinterfacevariable {endmark} {endmark} + \setinterfacevariable {option} {option} + \setinterfacevariable {foldmark} {foldmark} + \setinterfacevariable {usermark} {usermark} + \setinterfacevariable {layer} {layer} + \setinterfacevariable {firsthead} {firsthead} + \setinterfacevariable {nexthead} {nexthead} + \setinterfacevariable {lefthead} {lefthead} + \setinterfacevariable {righthead} {righthead} + \setinterfacevariable {firstfoot} {firstfoot} + \setinterfacevariable {nextfoot} {nextfoot} + \setinterfacevariable {leftfoot} {leftfoot} + \setinterfacevariable {rightfoot} {rightfoot} + \setinterfacevariable {layout} {layout} + \setinterfacevariable {place} {place} + \setinterfacevariable {initialize} {initialize} + \setinterfacevariable {finish} {finish} + \setinterfacevariable {sequence} {sequence} + \setinterfacevariable {style} {style} + \setinterfacevariable {extension} {extension} + \setinterfacevariable {interface} {interface} + \setinterfacevariable {resume} {resume} + \setinterfacevariable {letter} {letter} + \setinterfacevariable {backaddress} {backaddress} + \setinterfacevariable {reference} {reference} + \setinterfacevariable {location} {location} + \setinterfacevariable {address} {address} + \setinterfacevariable {opening} {opening} + \setinterfacevariable {closing} {closing} + \setinterfacevariable {letternext} {letternext} + \setinterfacevariable {lettermain} {lettermain} + \setinterfacevariable {special} {special} + \setinterfacevariable {notation} {notation} + \setinterfacevariable {inside} {inside} + \setinterfacevariable {optimize} {optimize} + \setinterfacevariable {file} {file} + \setinterfacevariable {e} {e} + \setinterfacevariable {data} {data} + \setinterfacevariable {sender} {sender} + \setinterfacevariable {dispatch} {dispatch} + \setinterfacevariable {enclosure} {enclosure} + \setinterfacevariable {copy} {copy} + \setinterfacevariable {nobreak} {nobreak} + \setinterfacevariable {endgraf} {endgraf} + \setinterfacevariable {memo} {memo} + \setinterfacevariable {addressee} {addressee} + \setinterfacevariable {french} {french} + \setinterfacevariable {simplified} {simplified} + \setinterfacevariable {fullblock} {fullblock} + \setinterfacevariable {hanging} {hanging} + \setinterfacevariable {modified} {modified} + \setinterfacevariable {semiblock} {semiblock} + \setinterfacevariable {handle} {handle} + \setinterfacevariable {casual} {casual} + \setinterfacevariable {classic} {classic} + \setinterfacevariable {knuth} {knuth} + \setinterfacevariable {firstname} {firstname} + \setinterfacevariable {familyname} {familyname} + \setinterfacevariable {street} {street} + \setinterfacevariable {town} {town} + \setinterfacevariable {mobile} {mobile} + \setinterfacevariable {phone} {phone} + \setinterfacevariable {fax} {fax} + \setinterfacevariable {email} {email} + \setinterfacevariable {info} {info} + \setinterfacevariable {correspondence} {correspondence} \stopinterface \startinterface all - \setinterfaceelement {set} {set} - \setinterfaceelement {value} {value} - \setinterfaceelement {complex} {complex} - \setinterfaceelement {simple} {simple} - \setinterfaceelement {use} {use} - \setinterfaceelement {define} {define} - \setinterfaceelement {flush} {flush} + \setinterfaceelement {set} {set} + \setinterfaceelement {value} {value} + \setinterfaceelement {complex} {complex} + \setinterfaceelement {simple} {simple} + \setinterfaceelement {use} {use} + \setinterfaceelement {define} {define} + \setinterfaceelement {flush} {flush} \stopinterface % Placeholders for the messages: % % 1: letter|resume / interface|style|extension / filename % 2: letter|resume / interface|style|extension / filename -% 3: <number> / <number> +% 3: ‹number› / ‹number› \definemessageconstant {correspondence} @@ -301,7 +304,12 @@ {\getparameters[#2#3][#4]} \def\dosetupcorrespondencedescription[#1][#2][#3][#4]% - {\setupdescriptions[#2#3][#4]} + {\setupdescriptions[#1:#3][#4]} + +% used in the upcoming version +% +% \def\dosetupcorrespondencedescription[#1][#2][#3][#4]% +% {\getparameters[#1#3][#4]} \def\dosetupcorrespondencelayer[#1][#2][#3][#4]% {\dodosetupcorrespondencelayer[#1][#2][#3][\v!layer,\v!frame,\v!option][#4]} @@ -532,7 +540,7 @@ {\setvalue{#1:#2:#3}{\v!section}% \appendtovaluelist{#1!list!sections}{#3}}% \getparameters - [#2#3]% + [#2#3] [\c!before=, \c!after=, \c!align=, @@ -564,26 +572,88 @@ %D Descriptions +%D I use \CONTEXT's own description environment to format the appendices, +%D but the mechanism is to complex for such the cases I need in my module +%D and the code will be replaced in the future by my own code. + \def\definecorrespondencedescription[#1][#2]% {\setvalue{\s!do\e!define#1\v!description}{\dodefinecorrespondencedescription[#1][#2]}% \setvalue{\s!do\e!set #1\v!description}{\dosetcorrespondencedescription [#1][#2]}% \setvalue{\s!do\e!flush #1\v!description}{\doflushcorrespondencedescription [#1][#2]}} +% \def\dodefinecorrespondencedescription[#1][#2][#3]% +% {\setvalue{#2\v!option#3}{\v!yes}% +% \doifundefined{#1:#2:#3} +% {\setvalue{#1:#2:#3}{\v!description}% +% \appendtovaluelist{#1!list!descriptions}{#3}}% +% \definedescription +% [#1:#3] +% [\c!location=\v!top, +% \c!inbetween=\nowhitespace]} +% +% \def\dosetcorrespondencedescription[#1][#2][#3]% +% {\doiftext{\directsetup{#1:#3}} +% {\csname\e!start#1:#3\endcsname{\labeltext{#1:#3}} +% \directsetup{#1:#3}% +% \csname\e!stop #1:#3\endcsname}} +% +% \def\doflushcorrespondencedescription[#1][#2]% +% {\def\dodoflushcorrespondencedescription##1% +% {\doif{\correspondencestylevalue{#2}\v!option{##1}}\v!yes{\dosetcorrespondencedescription[#1][#2][##1]}}% +% \processcommacommand[\csname#1!list!descriptions\endcsname]\dodoflushcorrespondencedescription} + \def\dodefinecorrespondencedescription[#1][#2][#3]% {\setvalue{#2\v!option#3}{\v!yes}% - \doifundefined{#1:#2:#3} - {\setvalue{#1:#2:#3}{\v!description}% - \appendtovaluelist{#1!list!descriptions}{#3}}% - \definedescription - [#1#3] - [\c!location=\v!top, - \c!inbetween=\nowhitespace]} + \doifundefined{#1:#2:#3}{\setvalue{#1:#2:#3}{\v!description}}% + \getparameters + [#2#3] + [\c!location=\v!left, + \c!inbetween=\nowhitespace, + \c!before=\blank, + \c!after=\blank, + \c!width=\v!broad, + \c!distance=\zeropoint]} \def\dosetcorrespondencedescription[#1][#2][#3]% - {\doiftext{\directsetup{#1:#3}} - {\csname\e!start#1#3\endcsname{\labeltext{#1:#3}} - \directsetup{#1:#3}% - \csname\e!stop #1#3\endcsname}} + {\bgroup + \doifelsecorrespondencestylevalue{#2}{#3}\c!before + {\correspondencestylevalue{#2}{#3}\c!before} + \endgraf + \setbox\scratchbox\hbox{\labeltext{#1:#3}}% + \ifdim\wd\scratchbox>\zeropoint + \processaction + [\correspondencestylevalue{#2}{#3}\c!width] + [ \v!fit=>\scratchdimen\dimexpr\wd\scratchbox+\correspondencestylevalue{#2}{#3}\c!distance\relax, + \v!broad=>\scratchdimen\dimexpr\wd\scratchbox+1em\relax, + \s!unknown=>\scratchdimen\dimexpr\correspondencestylevalue{#2}{#3}\c!width+\correspondencestylevalue{#2}{#3}\c!distance\relax]% + \else + \processaction + [\correspondencestylevalue{#2}{#3}\c!width] + [ \v!fit=>\scratchdimen\zeropoint, + \v!broad=>\scratchdimen\zeropoint, + \s!unknown=>\scratchdimen\dimexpr\correspondencestylevalue{#2}{#3}\c!width+\correspondencestylevalue{#2}{#3}\c!distance\relax]% + \fi + \executeifdefined{\v!correspondence\v!description\correspondencestylevalue{#2}{#3}\c!location}\gobblethreearguments{#1}{#2}{#3}% + \doifelsecorrespondencestylevalue{#2}{#3}\c!after + {\endgraf\correspondencestylevalue{#2}{#3}\c!after} + \endgraf + \egroup} + +\setvalue{\v!correspondence\v!description\v!left}#1#2#3% + {\hangindent\scratchdimen + \hangafter\zerocount + \setbox\scratchbox\hbox\!!to\scratchdimen{\box\scratchbox\hss}% + \noindent\llap{\box\scratchbox}\directsetup{#1:#3}} + +\setvalue{\v!correspondence\v!description\v!top}#1#2#3% + {\box\scratchbox\par + \nobreak + \doifcorrespondencestylevalue{#2}{#3}\c!inbetween{\correspondencestylevalue{#2}{#3}\c!inbetween}% + \nobreak + \directsetup{#1:#3}} + +\setvalue{\v!correspondence\v!description\v!text}#1#2#3% + {\noindent\box\scratchbox\directsetup{#1:#3}} \def\doflushcorrespondencedescription[#1][#2]% {\def\dodoflushcorrespondencedescription##1% diff --git a/Master/texmf-dist/tex/context/third/letter/interface/default.nli b/Master/texmf-dist/tex/context/third/letter/interface/default.nli index 4809c7ebd70..4954da130b4 100644 --- a/Master/texmf-dist/tex/context/third/letter/interface/default.nli +++ b/Master/texmf-dist/tex/context/third/letter/interface/default.nli @@ -1,6 +1,6 @@ %D \module %D [ file=default, -%D version=2009.02.14, +%D version=2009.02.17, %D title=\CONTEXT\ Letter Interface, %D subtitle=Default Interface, %D author=Wolfgang Schuster, @@ -9,8 +9,6 @@ %D email=schuster.wolfgang@googlemail.com, %D license=Public Domain] -%M \loadsetups[t-letter.xml] - \unprotect %D \subject{Reference line} @@ -221,28 +219,6 @@ %D the opening and closing with the optional argument, the values are %D local in this case and not global like the values you could set with %D \tex{setupletter}. -%D -%D \showsetup{startletter} - -% \def\startletter -% {\bgroup\dodoubleempty\dostartletter} -% -% \def\dostartletter[#1][#2]% -% {\ifsecondargument -% \getparameters[\????ld][#1]% -% \doifundefinedelse{\????ld\????ld#2} -% {\setvalue{\????ld\c!toaddress}{#2}} -% {\setvalue{\????ld\c!toaddress}{\getvalue{\????ld\????ld#2}}}% -% \else\iffirstargument -% \doifassignmentelse{#1} -% {\getparameters[\????ld][#1]} -% {\doifundefinedelse{\????ld\????ld#1} -% {\setvalue{\????ld\c!toaddress}{#1}} -% {\setvalue{\????ld\c!toaddress}{\getvalue{\????ld\????ld#1}}}}% -% \fi\fi -% \def\stopletter -% {\directsetup{\v!letter:\v!place}\egroup}% -% \dostartbuffer[lettercontent][startletter][stopletter]} \long\def\dosetbuffer[#1]#2\endbuffer % added \long {\begingroup @@ -258,7 +234,7 @@ \getparameters[\????ld][#1]% \doifundefinedelse{\????ld\????ld#2} {\setvalue{\????ld\c!toaddress}{#2}} - {\setvalue{\????ld\c!toaddress}{\getvalue{\????ld\????ld#2}}}% + {\setvalue{\????ld\c!toaddress}{\getvalue{\????ld\????ld#2}}}% \else\iffirstargument \doifassignmentelse{#1} {\getparameters[\????ld][#1]} @@ -267,29 +243,25 @@ {\setvalue{\????ld\c!toaddress}{\getvalue{\????ld\????ld#1}}}}% \fi\fi \setbuffer[lettercontent]#3\endbuffer + \processlettervalues \directsetup{\v!letter:\v!place}\egroup} -% %D Patched version of the \tex{flushbufferline} macro for \MKII, -% %D the changes are definition as long and removing of \tex{string} -% %D in the argument of the last write block. -% -% \long\def\flushbufferline#1% -% {\iftmpblockstarted -% \ifsegmentatebuffer -% \ifemptybufferline -% \immediate\write\tmpblocks{\string\stopbufferparagraph }% -% \immediate\write\tmpblocks{\string\startbufferparagraph}% -% \else -% \immediate\write\tmpblocks{#1}% -% \fi -% \else -% \immediate\write\tmpblocks{#1}% -% \fi -% \else -% \doifsomething{#1} -% {\tmpblockstartedtrue -% \immediate\write\tmpblocks{#1}}% -% \fi} +\newtoks\letter!local!commands + +\def\processlettervalues + {\global\let\letter!list!descriptions\empty + \global \letter!local!commands \emptytoks + \def\opening##1{\doglobal\appendtoks\setvalue{\????ld\c!opening }{##1}\to\letter!local!commands}% + \def\closing##1{\doglobal\appendtoks\setvalue{\????ld\c!closing }{##1}\to\letter!local!commands}% + \def\ps ##1{\doglobal\appendtoks\setvalue{\????ld\c!postscript}{##1}\to\letter!local!commands\doglobal\appendtocommalist\c!postscript\letter!list!descriptions}% + \def\cc ##1{\doglobal\appendtoks\setvalue{\????ld\c!copy }{##1}\to\letter!local!commands\doglobal\appendtocommalist\c!copy \letter!list!descriptions}% + \def\encl ##1{\doglobal\appendtoks\setvalue{\????ld\c!enclosure }{##1}\to\letter!local!commands\doglobal\appendtocommalist\c!enclosure \letter!list!descriptions}% + \setbox\scratchbox\hbox{\getbuffer[lettercontent]}% + \flushtoks\letter!local!commands} + +\def\gobblelettervalues + {\def\dogobblelettervalues##1{\letcsnamecs\csname##1\endcsname\gobbleoneargument}% + \processcommalist[\c!opening,\c!closing,\c!ps,\c!cc,\c!encl]\dogobblelettervalues} %D \macros %D {startlettercontent} @@ -463,7 +435,7 @@ \stopsetups \startsetups[\v!letter:\v!content] -\lettervalue\c!content +\gobblelettervalues\lettervalue\c!content \stopsetups %D \subject{Closing and appendices} @@ -504,28 +476,19 @@ \dodefineletterdescription[\v!enclosure] \startsetups[\v!letter:\v!enclosure] -\processaction - [\lettervalue\c!enclosure] - [ \v!empty=>\vrule\!!height\zeropoint\!!depth\zeropoint\!!width\hsize\relax\ifvmode\nowhitespace\fi, - \s!unknown=>\lettervalue\c!enclosure] +\lettervalue\c!enclosure \stopsetups \dodefineletterdescription[\v!copy] \startsetups[\v!letter:\v!copy] -\processaction - [\lettervalue\c!copy] - [ \v!empty=>\vrule\!!height\zeropoint\!!depth\zeropoint\!!width\hsize\relax\ifvmode\nowhitespace\fi, - \s!unknown=>\lettervalue\c!copy] +\lettervalue\c!copy \stopsetups \dodefineletterdescription[\v!postscript] \startsetups[\v!letter:\v!postscript] -\processaction - [\lettervalue\c!postscript] - [ \v!empty=>\vrule\!!height\zeropoint\!!depth\zeropoint\!!width\hsize\relax\ifvmode\nowhitespace\fi, - \s!unknown=>\lettervalue\c!postscript] +\lettervalue\c!postscript \stopsetups \setvalue{\v!letter:\v!backaddress:\v!yes}% @@ -554,7 +517,7 @@ %D the elements. \defineblankmethod [\v!nobreak] {\penalty\plustenthousand} -\defineblankmethod [\v!endgraf] {\endgraf} +\defineblankmethod [\v!endgraf] {\endgraf } %D \subject{Additional settings} %D |