diff options
author | Norbert Preining <preining@logic.at> | 2008-07-29 15:44:34 +0000 |
---|---|---|
committer | Norbert Preining <preining@logic.at> | 2008-07-29 15:44:34 +0000 |
commit | a712cd61df036f1f73973d714058bf23a2dc9617 (patch) | |
tree | a7e1e3423dbd534b2cafcf4faded8b526e3dc7b4 /Master/texmf-dist/tex/context | |
parent | da3015813795ccbeed28b90a4785b11406f441c5 (diff) |
add context-letter
git-svn-id: svn://tug.org/texlive/trunk@9882 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/context')
25 files changed, 3496 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/context/interface/third/letter.xml b/Master/texmf-dist/tex/context/interface/third/letter.xml new file mode 100644 index 00000000000..7992e7ad07a --- /dev/null +++ b/Master/texmf-dist/tex/context/interface/third/letter.xml @@ -0,0 +1,232 @@ +<?xml version="1.0" standalone="yes"?> + +<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="title"/> + <cd:constant type="subject"/> + <cd:constant type="opening"/> + <cd:constant type="content"/> + <cd:constant type="closing"/> + <cd:constant type="appendices"/> +</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="address"/> + <cd:constant type="backaddress"/> + <cd:constant type="reference"/> + <cd:constant type="topmark"/> + <cd:constant type="botmark"/> + <cd:constant type="cutmark"/> + <cd:constant type="endmark"/> + <cd:constant type="usermark"/> +</cd:define> + +<cd:command name="setupletterstyle:layout" file="t-letter.tex"> + <cd:sequence> + <cd:string value="setupletterstyle"/> + </cd:sequence> + <cd:arguments> + <cd:keywords list="yes"> + <cd:constant type="firstpage"/> + <cd:constant type="secondpage"/> + </cd:keywords> + <cd:assignments list="yes"> + <cd:inherit name="setuplayout"/> + </cd:assignments> + </cd:arguments> +</cd:command> + +<cd:command name="setupletterstyle:option" file="t-letter.tex"> + <cd:sequence> + <cd:string value="setupletterstyle"/> + </cd:sequence> + <cd:arguments> + <cd:keywords> + <cd:constant type="option"/> + </cd:keywords> + <cd:assignments list="yes"> + <cd:parameter name="marking"> + <cd:constant type="yes" default="yes"/> + <cd:constant type="no"/> + </cd:parameter> + <cd:parameter name="indenting"> + <cd:inherit name="setupindenting"/> + </cd:parameter> + <cd:parameter name="whitespace"> + <cd:inherit name="setupwhitespace"/> + </cd:parameter> + <cd:parameter name="backgroundcolor"> + <cd:constant type="cd:name"/> + </cd:parameter> + <cd:parameter name="backgroundimage"> + <cd:constant type="cd:file"/> + </cd:parameter> + <cd:parameter name="header"> + <cd:constant type="reset"/> + </cd:parameter> + <cd:parameter name="footer"> + <cd:constant type="reset"/> + </cd:parameter> + <cd:parameter name="before"> + <cd:constant type="cd:command"/> + </cd:parameter> + <cd:parameter name="after"> + <cd:constant type="cd:command"/> + </cd:parameter> + <cd:parameter name="pagenumber"> + <cd:constant type="cd:number"/> + </cd:parameter> + <cd:parameter name="bodyfont"> + <cd:constant type="5pt"/> + <cd:constant type="..."/> + <cd:constant type="12pt"/> + <cd:constant type="small"/> + <cd:constant type="big"/> + </cd:parameter> + <cd:parameter name="alternative"> + <cd:constant type="singlesided" default="yes"/> + <cd:constant type="doublesided"/> + </cd:parameter> + <cd:parameter name="state"> + <cd:constant type="start" default="yes"/> + <cd:constant type="stop"/> + </cd:parameter> + </cd:assignments> + </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:sequence> + <cd:string value="setupletterstyle"/> + </cd:sequence> + <cd:arguments> + <cd:keywords list="yes"> + <cd:resolve name="lettersection"/> + </cd:keywords> + <cd:assignments list="yes"> + <cd:parameter name="before"> + <cd:constant type="cd:command"/> + </cd:parameter> + <cd:parameter name="after"> + <cd:constant type="cd:command"/> + </cd:parameter> + <cd:parameter name="align"> + <cd:resolve name="align"/> + </cd:parameter> + <cd:parameter name="style"> + <cd:resolve name="style"/> + </cd:parameter> + <cd:parameter name="color"> + <cd:constant type="cd:name"/> + </cd:parameter> + </cd:assignments> + </cd:arguments> +</cd:command> + +<cd:command name="setupletterstyle: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> + <cd:constant type="frame"/> + </cd:keywords> + <cd:assignments list="yes"> + <cd:inherit name="setupframed"/> + </cd:assignments> + </cd:arguments> +</cd:command> + +<cd:command name="setupletterstyle:layer" 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> + <cd:constant type="layer"/> + </cd:keywords> + <cd:assignments list="yes"> + <cd:inherit name="setuplayer"/> + </cd:assignments> + </cd:arguments> +</cd:command> + +<cd:command name="useletterinterface" file="t-letter.tex"> + <cd:sequence> + <cd:string value="useletterinterface"/> + </cd:sequence> + <cd:arguments> + <cd:keywords list="yes"> + <cd:constant type="cd:name"/> + </cd:keywords> + </cd:arguments> +</cd:command> + +<cd:command name="useletterstyle" file="t-letter.tex"> + <cd:sequence> + <cd:string value="useletterstyle"/> + </cd:sequence> + <cd:arguments> + <cd:keywords list="yes"> + <cd:constant type="cd:name"/> + </cd:keywords> + </cd:arguments> +</cd:command> + +<cd:command name="useletterextension" file="t-letter.tex"> + <cd:sequence> + <cd:string value="useletterextension"/> + </cd:sequence> + <cd:arguments> + <cd:keywords list="yes"> + <cd:constant type="cd:name"/> + </cd:keywords> + </cd:arguments> +</cd:command> + +<cd:command name="letter" type="environment" file="default.nli"> + <cd:sequence> + <cd:string value="letter"/> + </cd:sequence> + <cd:arguments> + <cd:assignments optional="yes" list="yes"> + <cd:inherit name="setupletter"/> + </cd:assignments> + </cd:arguments> +</cd:command> + +</cd:interface> diff --git a/Master/texmf-dist/tex/context/third/letter/base/t-letter.tex b/Master/texmf-dist/tex/context/third/letter/base/t-letter.tex new file mode 100644 index 00000000000..3f3b8780da4 --- /dev/null +++ b/Master/texmf-dist/tex/context/third/letter/base/t-letter.tex @@ -0,0 +1,998 @@ +%D \module +%D [ file=t-letter, +%D version=2008.07.08, +%D title=\CONTEXT\ User Module, +%D subtitle=Framework for Letters, +%D author=Wolfgang Schuster, +%D date=\currentdate, +%D copyright=Public Domain] + +%M \loadsetups[cont-en.xml] +%M \loadsetups[letter.xml] + +%D \subject{Constants and Variables} + +\writestatus{loading}{Context User Module / Framework for Letters} + +\unprotect + +%D I use a few extra constants and variables in my module. + +\startconstants all + + graphic: graphic + head: head + foot: foot + backaddress: backaddress + topmark: topmark + botmark: botmark + cutmark: cutmark + endmark: endmark + usermark: usermark + foldmark: foldmark + extension: extension + interface: interface + backgroundimage: backgroundimage + whitespace: whitespace + optimize: optimize + nexthead: nexthead + nextfoot: nextfoot +\stopconstants + +\startvariables all + + letter: letter + secondpage: secondpage + backaddress: backaddress + foot: foot + topmark: topmark + botmark: botmark + cutmark: cutmark + endmark: endmark + reference: reference + location: location + option: option + address: address + foldmark: foldmark + usermark: usermark + opening: opening + closing: closing + layer: layer + letternext: letternext + lettermain: lettermain + special: special + notation: notation + inside: inside + nexthead: nexthead + nextfoot: nextfoot +\stopvariables + +%D Before we start the real module let us introduce two namespaces +%D for the style and content setup commands. + +\def\????ld{@@@@ld} % LetterData +\def\????ls{@@@@ls} % LetterStyle +\def\????lv{@@@@lv} % LetterValue + +\startmodule[letter] + +\setupmodule + [\c!style=cont-ltr, % default letter style + \c!extension=, % default letter extension + \c!interface=default] % default letter interface + +%D \subject{Setup commands} +%D +%D \macros{setupletterstyle} +%D +%D The layout for the first page could be set with the \mono{firstpage} +%D key and the layout for the second and all following pages with the +%D \mono{secondpage} key. You could use any key and value from +%D \tex{setuplayout} to set your own letter layout. +%D +%D \showsetup{setupletterstyle:layout} +%D +%D The header and footer texts for the letter is set with the \mono{header} +%D and \mono{footer} keys, the text itself I written as argument as one of +%D the three keys. The command itself has no option to use different texts +%D for odd and even pages (if you really want this in a letter) but you could +%D solve this with the macro \tex{doifoddpageelse}, I will give you a short +%D example below. +%D +%D \showsetup{setupletterstyle:text} +%D +%D This setups could produce somtimes a unwanted result is you use a doublesided +%D layout, because the values for \mono{lefttext} and \mono{righttext} change on +%D odd and even pages their position, e.g. \mono{righttext} will always go to the +%D outer margin and \mono{lefttext} to the inner margin. Let's you want the +%D pagenumber always on the right side you could use the following code, you could +%D adapt it to your own needs without problems. +%D +%D \starttyping +%D \setupletterstyle +%D [header] +%D [lefttext=\doifoddpageelse\donothing\pagenumber, +%D righttext=\doifoddpageelse\pagenumber\donothing] +%D \stoptyping + +\def\setupletterstyle + {\dotripleempty\dosetupletterstyle} + +\def\dosetupletterstyle[#1][#2][#3]% + {\ifthirdargument + \dodosetupletterstyle[#1][#2][#3]% + \else\ifsecondargument + \dodosetupletterstyle[#1][#2][]% + \else + \dodosetupletterstyle[\v!option][#1][]% + \fi\fi} + +\def\dodosetupletterstyle[#1][#2][#3]% + {\processallactionsinset + [#1] + [ \v!firstpage=>{\definelayout[\v!letter\v!firstpage][#2]}, + \v!secondpage=>{\definelayout[\v!letter\v!secondpage][#2]}, + \v!header=>{\dosetupletterheader[#2][#3]}, + \v!footer=>{\dosetupletterfooter[#2][#3]}, + \v!option=>{\dosetupletteroption[\v!option][#2]}, + \v!foldmark=>{\dododosetupletterstyle[\v!topmark,\v!botmark,\v!cutmark][#2][#3]}, + \s!unknown=>{\dododosetupletterstyle[#1][#2][#3]}]} + +%D Set the values for normal options. + +\def\dosetupletteroption[#1][#2]% + {\getparameters[\????ls#1][#2]} + +%D Setup of the layers and their frames. + +\def\dododosetupletterstyle[#1][#2][#3]% + {\def\dodododosetupletterstyle##1% + {\doifelsenothing{#3} + {\ExpandSecondAfter\doifinsetelse{##1}\letter!list!sections + {\dododododosetupletterstyle[##1][\v!option][#2]} + {\ExpandSecondAfter\doifinsetelse{##1}\letter!list!descriptions + {\setupdescriptions[\v!letter##1][#2]} + {\ExpandSecondAfter\doifinsetelse{##1}\letter!list!layers + {\dododododosetupletterstyle[##1][\v!layer,\v!frame,\v!option][#2]} + {\dosetupletteroption[##1][#2]}}}} + {\dododododosetupletterstyle[##1][#2][#3]}}% + \processcommacommand[#1]\dodododosetupletterstyle} + +\def\dododododosetupletterstyle[#1][#2][#3]% + {\def\dodododododosetupletterstyle##1% + {\processaction + [##1] + [ \v!layer=>{\dododododosetupletterstyle[#1][\v!layer\v!a,\v!layer\v!b][#3]}, + \v!layer\v!a=>{\setuplayer[\v!letter:#1][#3]}, + \v!layer\v!b=>{\getparameters[\????ls#1\v!layer][#3]}, + \v!frame=>{\getparameters[\????ls#1\v!frame][#3]}, + \v!option=>{\getparameters[\????ls#1][#3]}, + \s!unknown=>{\getparameters[\????ls#1##1][#3]}]}% + \processcommalist[#2]\dodododododosetupletterstyle} + +%D Setup for the header and footer texts. + +\newtoks\letter!toks!header +\newtoks\letter!toks!footer + +\def\dosetupletterheader[#1][#2]% + {\letter!toks!header\emptytoks + \doifelsenothing{#2} + {\letter!toks!header{\setupheader[\v!text][#1]}} + {\letter!toks!header{\setupheader[#1][#2]}}} + +\def\dosetupletterfooter[#1][#2]% + {\letter!toks!footer\emptytoks + \doifelsenothing{#1} + {\letter!toks!footer{\setupfooter[\v!text][#1]}} + {\letter!toks!footer{\setupfooter[#1][#2]}}} + +%D \macros +%D {setupletter} +%D +%D The \tex{setupletter} macro could be used from a interface, I define +%D only the macro and nothing else. You could also redefine the macro later +%D because it is not used from the raw interface. +%D +%D The first version of the \tex{setupletter} macro used two arguments +%D for each value: +%D +%D \starttyping +%D \def\setupletter +%D {\dodoubleempty\dosetupletter} +%D +%D \def\dosetupletter[#1][#2]% +%D {\ifsecondargument +%D \dodosetupletter[#1][#2]% +%D \else\iffirstargument +%D \dodosetupletter[\v!option][#1]% +%D \fi\fi} +%D +%D \def\dodosetupletter[#1][#2]% +%D {\def\dododosetupletter##1% +%D {\getparameters[\????ld##1][#2]}% +%D \processcommalist[#1]\dododosetupletter} +%D \stoptyping +%D +%D The next version use only one argument for normal values and use +%D the second argument only for settings on the reference line. + +\def\setupletter + {\dodoubleempty\dosetupletter} + +\def\dosetupletter[#1][#2]% + {\ifsecondargument + \dodosetupletter[#1][#2]% + \else + \dodosetupletter[#1][]% + \fi} + +\def\dodosetupletter[#1][#2]% + {\doifelsenothing{#2} + {\getparameters[\????ld][#1]} + {\def\dododosetupletter##1% + {\getparameters[\????ld##1][#2]}% + \processcommalist[#1]\dododosetupletter}} + +\definecomplexorsimple\setlettervalue + +\def\complexsetlettervalue[#1]#2% + {\setvalue{\????ld#1}{#2}} + +\def\simplesetlettervalue#1#2% + {\setvalue{\????ld#1}{#2}} + +%D A few extra macros to test for content of the letter values, don't rely +%D on them at the moment because they could change or I will remove, rename, +%D rewrite etc. them. +%D +%D With the change of the \tex{setupletter} command it was also necessary +%D to change the definition for lettervalue tests. +%D +%D \starttyping +%D \def\doiflettervalue#1#2% +%D {\doiftextelse{\lettervalue{#1}{#2}} +%D \firstofoneargument +%D \gobbleoneargument} +%D +%D \def\doifelselettervalue#1#2% +%D {\doiftextelse{\lettervalue{#1}{#2}} +%D \firstoftwoarguments +%D \secondoftwoarguments} +%D \stoptyping + +\def\doiflettervalue#1% + {\doiftextelse{\lettervalue{#1}} + \firstofoneargument + \gobbleoneargument} + +\def\doifelselettervalue#1% + {\doiftextelse{\lettervalue{#1}} + \firstoftwoarguments + \secondoftwoarguments} + +%D \subject{Interface, Style and Extension files} +%D +%D \macros +%D {useletterextension,useletterstyle,useletterinterface} +%D +%D This module provides different types of files beside the main module. +%D +%D Two of them could be used by the user while the third is only used in +%D this file but you're free to use but you should really now what you do. +%D +%D Each of the files has it's own file extension, you have to use if you +%D want to create such a file, this has the advantage to use the same name +%D for a collection of macros. + +\def\letter!suffix!style {nls} +\def\letter!suffix!extension{nle} +\def\letter!suffix!interface{nli} + +%D Let us begin now to talk about the different types of files. +%D +%D \subsubject{letter interface} +%D +%D The letter interface provides the connection between the user and the +%D inner macros, it is possible to write a letter without a interface but +%D you will loose many of the nice features. The features itself are defined +%D within the interface and try to help the user to write a letter in +%D a simpler than the raw interface. +%D +%D I want to show you the difference between the default interface and the +%D raw backend with a simple example, just a opening, the content and +%D a closing text. +%D +%D The example with the default interface looks like: +%D +%D \starttyping +%D \startletter +%D [opening=Hello User, +%D closing=Good luck with your own interface] +%D I will show you how you could write a letter with my letter module +%D and the difference between the default and the raw interface. The raw +%D interface is should be only used by a high level interface and not the +%D user but you're free to do it. +%D \stopletter +%D \stoptyping +%D +%D The same example with the raw interface looks like: +%D +%D \starttyping +%D \startsetups[letter:opening] +%D Hello User +%D \stopsetups +%D +%D \startsetups[letter:content] +%D I will show you how you could write a letter with my letter module +%D and the difference between the default and the raw interface. The raw +%D interface is should be only used by a high level interface and not the +%D user but you're free to do it. +%D \stopsetups +%D +%D \startsetups[letter:closing] +%D Good luck with your own interface +%D \stopsetups +%D \stoptyping +%D +%D The interface itself is loaded with the \tex{useletterinterface} +%D command but you could also use the optional argument for \tex{usemodule} +%D to load it. The first is only used in this file but it makes sense +%D to use it also in a wrapper file for your own interface. +%D +%D \showsetup{useletterinterface} + +\def\useletterinterface + {\dosingleargument\douseletterinterface} + +\def\douseletterinterface[#1]% + {\def\dodouseletterinterface##1% + {\readfile{##1.\letter!suffix!interface}\donothing\donothing}% + \processcommacommand[#1]\dodouseletterinterface} + +%D \subsubject{letter extension} +%D +%D The second filetype this module supports are letterextensions, you +%D could use it to save macros and other values you want to use in many +%D without the need to put it always in the real letter. +%D +%D A few reasons for a letterextension file are: +%D +%D \startitemize[packed,intro] +%D \item The letter head from your company, +%D \item your own macro for the reference line, +%D \item labels you need in different files (see \mono{label.nle}), +%D \item \unknown +%D \stopitemize +%D +%D The syntax to load a letterextension file is the same as for a interface +%D and you could also argument for \tex{usemodule}. +%D +%D \showsetup{useletterextension} + +\def\useletterextension + {\dosingleargument\douseletterextension} + +\def\douseletterextension[#1]% + {\def\dodouseletterextension##1% + {\readfile{##1.\letter!suffix!extension}\donothing\donothing}% + \processcommacommand[#1]\dodouseletterextension} + +%D \subsubject{letter styles} +%D +%D After I mentioned above how to load a interface and extension +%D I will now come to the most important extension for the module. +%D +%D Letter styles are used to change the layout of the letter, +%D set the values for layers and enable and disable common options. +%D Although it is possible to do all these things in the letter itself +%D it is better to save often used settings in a extra file you could +%D load on demand and share between your letters. +%D +%D You could load a style file in the same way as the other to files, +%D the first is \tex{useletterstyle} and the second the optional argument +%D for \tex{usemodule}. +%D +%D \showsetup{useletterstyle} + +\def\useletterstyle + {\dosingleargument\douseletterstyle} + +\def\douseletterstyle[#1]% + {\def\dodouseletterstyle##1% + {\readfile{##1.\letter!suffix!style}\donothing\donothing}% + \processcommacommand[#1]\dodouseletterstyle} + +%D \macros +%D {letterstylevalue,lettervalue} +%D +%D The two commands \tex{letterstylevalue} and \tex{lettervalue} could +%D be used to access the values for the keys used in the letterstyle +%D settings and the letter values for information. + +%D The rest of module contains only internal macros and other settings, +%D you don't need them as a normal user but you look at the default. + +\def\letterstylevalue#1#2% + {\csname\????ls#1#2\endcsname} + +%D The old definition of \tex{lettervalue} required two arguments. +%D +%D \starttyping +%D \def\lettervalue#1#2% +%D {\csname\????ld#1#2\endcsname} +%D \stoptyping +%D +%D The new definition needs only one arguments because \tex{setupletter} +%D needs only one argument for the values in the new version. + +\def\lettervalue#1% + {\csname\????ld#1\endcsname} + +\let\letter!list!layers\empty + +\def\letter!list!marking + {\v!topmark,\v!botmark,\v!cutmark,\v!endmark,\v!usermark} + +\def\dodefineletterlayer[#1]% + {\ExpandSecondAfter\doifelse{#1}\v!foldmark + {\def\dodododefineletterlayer##1{\dododefineletterlayer[##1]}% + \processcommacommand[\letter!list!marking]\dodododefineletterlayer} + {\dododefineletterlayer[#1]}} + +\def\dododefineletterlayer[#1]% + {\setvalue{\????ls\v!option#1}{\v!yes}% + \doifnotinset{#1}\letter!list!layers + {\appendtocommalist{#1}\letter!list!layers}% + \presetlocalframed[\????ls#1\v!frame]% + \definelayer + [\v!letter:#1] + [\c!width=\paperwidth, + \c!height=\paperheight]% + \setupletterstyle + [#1][\v!option] + [\c!symbol=, + \c!offset=\zeropoint, + \c!leftmargin=\zeropoint, + \c!rightmargin=\zeropoint]% + \setupletterstyle + [#1][\v!frame] + [\c!frame=\v!off, + \c!align=\v!right, + \c!offset=\zeropoint, + \c!strut=\v!yes]% + \setupletterstyle + [#1][\v!layer] + [\c!state=\v!start, + \c!offset=\zeropoint, + \c!preset=\v!left\v!top]} + +\def\dosetletterlayer[#1]% + {\doifinsetelse{#1}{\v!topmark,\v!botmark,\v!cutmark,\v!endmark,\v!usermark} + {\doifelsenothing{\letterstylevalue{#1}\c!symbol} + {\dodosetletterlayer[#1][\setups{letter:#1}]} + {\dodosetletterlayer[#1][\letterstylevalue{#1}\c!symbol]}} + {\dodosetletterlayer[#1][\setups{letter:#1}]}} + +\def\dodosetletterlayer[#1][#2]% + {\setlayer[\v!letter:#1] + {\localframed[\????ls#1\v!frame] + {\doadaptleftskip {\letterstylevalue{#1}\c!leftmargin}% + \doadaptrightskip{\letterstylevalue{#1}\c!rightmargin}% + \doattributes{\????ls#1}\c!style\c!color{#2}}}} + +\let\letter!list!sections\empty + +\def\dodefinelettersection[#1]% + {\setvalue{\????ls\v!option#1}{\v!yes}% + \doifnotinset{#1}\letter!list!sections + {\appendtocommalist{#1}\letter!list!sections}% + \setupletterstyle + [#1] + [\v!option] + [\c!before=, + \c!after=, + \c!align=, + \c!leftmargin=\zeropoint, + \c!rightmargin=\zeropoint, + \c!alternative=\v!a, + \c!style=, + \c!color=]} + +\def\dosetlettersection[#1]% + {\begingroup + \edef\@@lettersection{#1}% + \doifelsenothing{\letterstylevalue\@@lettersection\c!before} + \endgraf + {\letterstylevalue\@@lettersection\c!before}% + \doadaptleftskip {\letterstylevalue\@@lettersection\c!leftmargin}% + \doadaptrightskip{\letterstylevalue\@@lettersection\c!rightmargin}% + \doifsomething{\letterstylevalue\@@lettersection\c!align} + {\setupalign[\letterstylevalue\@@lettersection\c!align]}% + \dostartattributes{\????ls#1}\c!style\c!color\empty + \setups[letter:#1]% + \dostopattributes + \doifelsenothing{\letterstylevalue\@@lettersection\c!after} + \endgraf + {\endgraf\letterstylevalue\@@lettersection\c!after}% + \endgroup} + +\let\letter!list!descriptions\empty + +\def\dodefineletterdescription[#1]% + {\setvalue{\????ls\v!option#1}{\v!yes}% + \doifnotinset{#1}\letter!list!descriptions + {\appendtocommalist{#1}\letter!list!descriptions}% + \definedescription + [\v!letter#1] + [\c!location=\v!top, + \c!inbetween=\nowhitespace]} + +\def\dosetletterdescription[#1]% + {\doiftext{\setups[letter:#1]} + {\csname\e!start\v!letter#1\endcsname{\labeltext{\v!letter:#1}} + \setups[letter:#1]% + \csname\e!stop \v!letter#1\endcsname}} + +\def\doflushletterdescription + {\def\dodoflushletterdescription##1% + {\doif{\letterstylevalue\v!option{##1}}\v!yes{\dosetletterdescription[##1]}}% + \processcommacommand[\letter!list!descriptions]\dodoflushletterdescription} + +%D \subject{Placement of the content} +%D +%D Enable the layouts for the first and second page. + +\startsetups[letter:layout] + + \setuplayout[\v!letter\v!firstpage] + + \appendtoks\setuplayout[\v!letter\v!secondpage]\to\everyaftershipout + +\stopsetups + +%D Header for the first page, you could use it to place the logo from your +%D company or your own address and name. + +\dodefineletterlayer[\v!head] + +\startsetups[letter:place:head] + + \dosetletterlayer[\v!head] + +\stopsetups + +%D Address + +\dodefineletterlayer[\v!address] + +\startsetups[letter:place:address] + + \dosetletterlayer[\v!address] + +\stopsetups + +%D Could be used to place a backaddress above the normal address. + +\dodefineletterlayer[\v!backaddress] + +\startsetups[letter:place:backaddress] + + \dosetletterlayer[\v!backaddress] + +\stopsetups + +%D Reference line + +\dodefineletterlayer[\v!reference] + +\startsetups[letter:place:reference] + + \dosetletterlayer[\v!reference] + +\stopsetups + +%D Location field + +\dodefineletterlayer[\v!location] + +\startsetups[letter:place:location] + + \dosetletterlayer[\v!location] + +\stopsetups + +%D Footer block, you could use it to place information about your company +%D but take care set \mono{repeat=yes} if you want to place it on every page, +%D you should disable the footer for the second and following pages inb this +%D case. + +\dodefineletterlayer[\v!foot] + +\startsetups[letter:place:foot] + + \dosetletterlayer[\v!foot] + +\stopsetups + +%D Two additional layers from Hans Hagen's own letter module, it provide +%D for users who used \mono{m-letter.tex} and want to switch to my module. +%D +%D I need they also for my pragma letter interface. + +\dodefineletterlayer[\v!lettermain] + +\startsetups[letter:place:lettermain] + + \dosetletterlayer[\v!lettermain] + +\stopsetups + +\dodefineletterlayer[\v!letternext] + +\startsetups[letter:place:letternext] + + \dosetletterlayer[\v!letternext] + +\stopsetups + +%D Layer to set head and foot blocks at the second and all following pages. + +\dodefineletterlayer[\v!nexthead] + +\startsetups[letter:place:nexthead] + + \dosetletterlayer[\v!nexthead] + +\stopsetups + +\dodefineletterlayer[\v!nextfoot] + +\startsetups[letter:place:nextfoot] + + \dosetletterlayer[\v!nextfoot] + +\stopsetups + +%D Letterhead, american only + +\dodefinelettersection[\v!letter\v!head] + +\startsetups[letter:place:\v!letter\v!head] + + \dosetlettersection[\v!letter\v!head] + +\stopsetups + +%D Date Line, american only + +\dodefinelettersection[\v!date\v!line] + +\startsetups[letter:place:\v!date\v!line] + + \dosetlettersection[\v!date\v!line] + +\stopsetups + +%D Reference Line, american only + +\dodefinelettersection[\v!reference\v!line] + +\startsetups[letter:place:\v!reference\v!line] + + \dosetlettersection[\v!reference\v!line] + +\stopsetups + +%D Special Notation, american only + +\dodefinelettersection[\v!special\v!notation] + +\startsetups[letter:place:\v!special\v!notation] + + \dosetlettersection[\v!special\v!notation] + +\stopsetups + +%D Inside Address, american only + +\dodefinelettersection[\v!inside\v!address] + +\startsetups[letter:place:\v!inside\v!address] + + \dosetlettersection[\v!inside\v!address] + +\stopsetups + +%D Title + +\dodefinelettersection[\v!title] + +\startsetups[letter:place:\v!title] + + \dosetlettersection[\v!title] + +\stopsetups + +%D Subject + +\dodefinelettersection[\v!subject] + +\startsetups[letter:place:\v!subject] + + \dosetlettersection[\v!subject] + +\stopsetups + +%D Opening + +\dodefinelettersection[\v!opening] + +\startsetups[letter:place:\v!opening] + + \dosetlettersection[\v!opening] + +\stopsetups + +%D Letter content + +\dodefinelettersection[\v!content] + +\startsetups[letter:place:\v!content] + + \begingroup + + \doifsomething\@@@@lsoptionindenting{\setupindenting[\@@@@lsoptionindenting]} + + \dosetlettersection[\v!content] + + \endgroup + +\stopsetups + +%D Closing + +\dodefinelettersection[\v!closing] + +\startsetups[letter:place:\v!closing] + + \dosetlettersection[\v!closing] + +\stopsetups + +%D Apendices + +\dodefinelettersection[\v!appendices] + +\startsetups[letter:place:\v!appendices] + + \dosetlettersection[\v!appendices] + +\stopsetups + +%D Fold- and cutmarks, you enable and disable all of them independant +%D from any other or disable all marks with just one command. + +\dodefineletterlayer[\v!foldmark] + +\startsetups[letter:place:foldmark] + + % Upper foldmark + + \startlocalsetups[letter:place:topmark] + + \dosetletterlayer[\v!topmark] + + \stoplocalsetups + + % Lower foldmark + + \startlocalsetups[letter:place:botmark] + + \dosetletterlayer[\v!botmark] + + \stoplocalsetups + + % Cutmark + + \startlocalsetups[letter:place:cutmark] + + \dosetletterlayer[\v!cutmark] + + \stoplocalsetups + + % Endmark, a relict from the typewriter area + + \startlocalsetups[letter:place:endmark] + + \dosetletterlayer[\v!endmark] + + \stoplocalsetups + + % Free mark, you could use it to place your own symbols + + \startlocalsetups[letter:place:usermark] + + \dosetletterlayer[\v!usermark] + + \stoplocalsetups + + \doif\@@@@lsoptiontopmark \v!yes{\setups[letter:place:topmark]} + \doif\@@@@lsoptionbotmark \v!yes{\setups[letter:place:botmark]} + \doif\@@@@lsoptioncutmark \v!yes{\setups[letter:place:cutmark]} + \doif\@@@@lsoptionendmark \v!yes{\setups[letter:place:endmark]} + \doif\@@@@lsoptionusermark\v!yes{\setups[letter:place:usermark]} + +\stopsetups + +%D Background graphic: + +\defineoverlay + [\v!letter:\c!backgroundimage] + [\doifsomething\@@@@lsoptionbackgroundimage + {\overlayfigure{\@@@@lsoptionbackgroundimage}}] + +\defineoverlay + [\v!letter:\c!background] + [\@@@@lsoptionbackground] + +\def\letter!list!backgrounds + {\v!letter:\c!backgroundimage,\v!letter:\c!background,% + \v!letter:\v!letternext,\v!letter:\v!lettermain,\v!letter:\v!head,% + \v!letter:\v!foot,\v!letter:\v!backaddress,\v!letter:\v!address,% + \v!letter:\v!reference,\v!letter:\v!location,\v!letter:\v!nexthead,% + \v!letter:\v!nextfoot,\v!letter:\v!topmark,\v!letter:\v!botmark, + \v!letter:\v!cutmark,\v!letter:\v!endmark,\v!letter:\v!usermark} + +%D Settings at the begin of every letter. + +\startsetups[letter:initialize] + + \@@@@lsoptionbefore + + \setupsubpagenumber + [\c!number=\@@@@lsoptionpagenumber, + \c!way=\v!by\v!text, + \c!state=\@@@@lsoptionstate] + + \resetsubpagenumber + + \begingroup + + \page + + \setuppagenumbering + [\c!alternative=\@@@@lsoptionalternative, + \c!location=] % use the header and footer option instead + + \the\letter!toks!header + \the\letter!toks!footer + + \setupbackgrounds + [\v!paper] + [\c!background=\v!color, + \c!backgroundcolor=\@@@@lsoptionbackgroundcolor] + + \setupbackgrounds + [\v!page] + [\c!background=\letter!list!backgrounds, + \c!backgroundcolor=\@@@@lsoptionbackgroundcolor] + + \doifsomething\@@@@lsoptionbodyfont{\switchtobodyfont[\@@@@lsoptionbodyfont]} + + \doifsomething\@@@@lsoptionwhitespace{\setupwhitespace[\@@@@lsoptionwhitespace]} + +\stopsetups + +%D Settings at the end of every letter. + +\startsetups[letter:finish] + + \page + + \setuplayout[\v!reset] + + \endgroup + + \resetsubpagenumber + + \@@@@lsoptionafter + +\stopsetups + +%D Place the letter. + +\startsetups[letter:place] + + \setups[letter:initialize] % Settings at the begin + \setups[letter:optimize] % Interface dependend + \setups[letter:layout] % Page layout + \setups[letter:reset] % Reset layers + \setups[letter:layer] % Place layers + \setups[letter:sequence] % Place content + \setups[letter:finish] % Settings at the end + +\stopsetups + +%D Reset the layer content. + +\def\letter!list!resetlayers + {\v!topmark,\v!botmark,\v!cutmark,\v!endmark,\v!usermark,\v!letternext,\v!lettermain} + +\def\dodoresetletterlayer#1% + {\resetlayer[#1]} + +\startsetups[letter:reset] + + \processcommacommand[\letter!list!resetlayers]\dodoresetletterlayer + + \setuplayer[\v!letternext][\c!state=\v!continue] + +\stopsetups + +\startsetups[letter:layer] + + \doif\@@@@lsoptionmarking \v!yes{\setups[letter:place:foldmark]} + \doif\@@@@lsoptionhead \v!yes{\setups[letter:place:head]} + \doif\@@@@lsoptionbackaddress\v!yes{\setups[letter:place:backaddress]} + \doif\@@@@lsoptionaddress \v!yes{\setups[letter:place:address]} + \doif\@@@@lsoptionreference \v!yes{\setups[letter:place:reference]} + \doif\@@@@lsoptionlocation \v!yes{\setups[letter:place:location]} + \doif\@@@@lsoptionfoot \v!yes{\setups[letter:place:foot]} + \doif\@@@@lsoptionlettermain \v!yes{\setups[letter:place:lettermain]} + \doif\@@@@lsoptionletternext \v!yes{\setups[letter:place:letternext]} + \doif\@@@@lsoptionnexthead \v!yes{\setups[letter:place:nexthead]} + \doif\@@@@lsoptionnextfoot \v!yes{\setups[letter:place:nextfoot]} + +\stopsetups + +%D Place the letter content. + +\let\letter!order!sections\letter!list!sections + +\def\doflushlettersection#1% + {\doif{\letterstylevalue\v!option{#1}}\v!yes{\setups[letter:place:#1]}} + +\startsetups[letter:sequence] + + \executeifdefined{\v!letter\s!start\c!optimize\@@@@lsoptionoptimize}\donothing + \processcommacommand[\letter!order!sections]\doflushlettersection + \executeifdefined{\v!letter\s!stop \c!optimize\@@@@lsoptionoptimize}\donothing + +\stopsetups + +%D \subject{Default values} +%D +%D Default settings for the option values of the letter. + +\setupletterstyle + [\v!option] + [\c!marking=\v!yes, + \c!endmark=\v!no, + \c!usermark=\v!no, + \c!backaddress=\v!no, + \c!indenting=, + \c!whitespace=, + \c!background=, + \c!backgroundcolor=\v!white, + \c!backgroundimage=, + \c!before=, + \c!after=, + \c!header=\v!reset, + \c!footer=\v!reset, + \c!pagenumber=1, + \c!bodyfont=, + \c!optimize=\v!no, + \c!alternative=\v!singlesided, + \c!state=\v!stop] + +% interface always before styles and extension because users should +% start with a clean interface without predefined and unwanted values. + +\useletterinterface[\currentmoduleparameter\c!interface] +\useletterstyle [\currentmoduleparameter\c!style ] +\useletterextension[\currentmoduleparameter\c!extension] + +\stopmodule + +\protect \endinput diff --git a/Master/texmf-dist/tex/context/third/letter/extension/addrentry.nle b/Master/texmf-dist/tex/context/third/letter/extension/addrentry.nle new file mode 100644 index 00000000000..b6c2b4d053d --- /dev/null +++ b/Master/texmf-dist/tex/context/third/letter/extension/addrentry.nle @@ -0,0 +1,33 @@ +%D \module
+%D [ file=addrentry,
+%D version=2008.07.05,
+%D title=\CONTEXT\ Letter Extension,
+%D subtitle=KOMA-Script addrentry support,
+%D author=Wolfgang Schuster,
+%D date=\currentdate,
+%D copyright=Public Domain]
+
+\unprotect
+
+\def\addrentry#1#2#3#4#5#6#7#8#9%
+ {\doifsomething{#1}
+ {\doifelsenothing{#2}
+ {\setvalue{\????ld\????ld#9}{#1\\#3}}
+ {\setvalue{\????ld\????ld#9}{#2\space#1\\#3}}}}
+
+\def\adrentry#1#2#3#4#5#6#7%
+ {\addrentry{#1}{#2}{#3}{#4}{#5}{#6}{#7}{}}
+
+\let\adrchar\gobbleoneargument
+
+\def\address!file!extension{adr}
+
+\def\useaddressfile
+ {\dosingleargument\douseaddressfile}
+
+\def\douseaddressfile[#1]%
+ {\def\dododouseaddressfile##1%
+ {\readfile{##1.\address!file!extension}\donothing\donothing}%
+ \processcommalist[#1]\dododouseaddressfile}
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/third/letter/extension/corres.nle b/Master/texmf-dist/tex/context/third/letter/extension/corres.nle new file mode 100644 index 00000000000..6a68de79d8e --- /dev/null +++ b/Master/texmf-dist/tex/context/third/letter/extension/corres.nle @@ -0,0 +1,43 @@ +%D \module
+%D [ file=corres,
+%D version=2008.07.05,
+%D title=\CONTEXT\ Letter Extension,
+%D subtitle=XML Handling,
+%D author=Wolfgang Schuster,
+%D date=\currentdate,
+%D copyright=Public Domain]
+
+\unprotect
+
+\startconstants all
+
+ prefix: prefix
+ suffix: suffix
+ initials: initials
+ formalname: formalname
+ informalname: informalname
+\stopconstants
+
+\usemodule[corres]
+
+\setupletter
+ [\c!prefix=\XMLflush{prefix},
+ \c!suffix=\XMLflush{suffix},
+ \c!initials=\XMLflush{initials},
+ \c!formalname=\XMLflush{formalname},
+ \c!informalname=\XMLflush{informalname}]
+
+\setupletter
+ [\c!toaddress=\XMLflush{address}]
+
+\startsetups[letter:opening]
+\lettervalue\c!prefix
+\doiflettervalue\c!formalname\space
+\lettervalue\c!formalname
+\stopsetups
+
+\startsetups[contact:handle]
+\setups[letter:place]
+\stopsetups
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/third/letter/extension/label.nle b/Master/texmf-dist/tex/context/third/letter/extension/label.nle new file mode 100644 index 00000000000..78df3e84e60 --- /dev/null +++ b/Master/texmf-dist/tex/context/third/letter/extension/label.nle @@ -0,0 +1,268 @@ +%D \module
+%D [ file=label,
+%D version=2008.07.03,
+%D title=\CONTEXT\ Letter Extension,
+%D subject=Labels,
+%D author=Wolfgang Schuster,
+%D date=\currentdate,
+%D copyright=Public Domain]
+
+\unprotect
+
+\startconstants all
+
+ yourref: yourref
+ yourmail: yourmail
+ myref: myref
+ mymail: mymail
+ customer: customer
+ invoice: invoice
+ subject: subject
+ cc: cc
+ enclosure: enclosure
+ phone: phone
+ fax: fax
+ email: email
+ url: url
+ bank: bank
+ name: name
+ room: room
+% yourorder: yourorder -> Ihre Bestellung vom
+% ourinvoice: ourinvoice -> Unsere Rechnung vom
+\stopconstants
+
+%D Label: name
+
+\setuplabeltext[\s!en][\v!letter:\c!name=Name]
+\setuplabeltext[\s!nl][\v!letter:\c!name=]
+\setuplabeltext[\s!de][\v!letter:\c!name=Name]
+\setuplabeltext[\s!fr][\v!letter:\c!name=]
+\setuplabeltext[\s!it][\v!letter:\c!name=]
+\setuplabeltext[\s!es][\v!letter:\c!name=]
+
+%D Label: room
+
+\setuplabeltext[\s!en][\v!letter:\c!room=Room]
+\setuplabeltext[\s!nl][\v!letter:\c!room=]
+\setuplabeltext[\s!de][\v!letter:\c!room=Zimmer]
+\setuplabeltext[\s!fr][\v!letter:\c!room=]
+\setuplabeltext[\s!it][\v!letter:\c!room=]
+\setuplabeltext[\s!es][\v!letter:\c!room=]
+
+%D Label: yourref
+
+\setuplabeltext[\s!en][\v!letter:\c!yourref=Your ref.]
+\setuplabeltext[\s!nl][\v!letter:\c!yourref=Uw kenmerk]
+\setuplabeltext[\s!de][\v!letter:\c!yourref=Ihr Zeichen]
+\setuplabeltext[\s!fr][\v!letter:\c!yourref=Vos r\eacute f\eacute rences]
+\setuplabeltext[\s!it][\v!letter:\c!yourref=Vs./Rif.]
+\setuplabeltext[\s!es][\v!letter:\c!yourref=Su ref.]
+
+%D Label: yourmail
+
+\setuplabeltext[\s!en][\v!letter:\c!yourmail=Your letter of]
+\setuplabeltext[\s!nl][\v!letter:\c!yourmail=Uw brief van]
+\setuplabeltext[\s!de][\v!letter:\c!yourmail=Ihre Nachricht vom]
+\setuplabeltext[\s!fr][\v!letter:\c!yourmail=Votre lettre du]
+\setuplabeltext[\s!it][\v!letter:\c!yourmail=Vs.~lettera del]
+\setuplabeltext[\s!es][\v!letter:\c!yourmail=Su carta de]
+
+%D Label: myref
+
+\setuplabeltext[\s!en][\v!letter:\c!myref=Our ref.]
+\setuplabeltext[\s!nl][\v!letter:\c!myref=Ons kenmerk]
+\setuplabeltext[\s!de][\v!letter:\c!myref=Unser Zeichen]
+\setuplabeltext[\s!fr][\v!letter:\c!myref=Nos r\eacute f\eacute rences]
+\setuplabeltext[\s!it][\v!letter:\c!myref=Ns./Rif.]
+\setuplabeltext[\s!es][\v!letter:\c!myref=Nuestra ref.]
+
+%D Label: mymail
+
+\setuplabeltext[\s!en][\v!letter:\c!mymail=Our letter of]
+\setuplabeltext[\s!nl][\v!letter:\c!mymail=Ons brief van]
+\setuplabeltext[\s!de][\v!letter:\c!mymail=Unsere Nachricht vom]
+\setuplabeltext[\s!fr][\v!letter:\c!mymail=]
+\setuplabeltext[\s!it][\v!letter:\c!mymail=]
+\setuplabeltext[\s!es][\v!letter:\c!mymail=]
+
+%D Label: customer
+
+\setuplabeltext[\s!en][\v!letter:\c!customer=Customer no.]
+\setuplabeltext[\s!nl][\v!letter:\c!customer=Klant No.]
+\setuplabeltext[\s!de][\v!letter:\c!customer=Kundennummer]
+\setuplabeltext[\s!fr][\v!letter:\c!customer=Num\eacute ro de client]
+\setuplabeltext[\s!it][\v!letter:\c!customer=Nr.~cliente]
+\setuplabeltext[\s!es][\v!letter:\c!customer=No. de cliente]
+
+%D Label: invoice
+
+\setuplabeltext[\s!en][\v!letter:\c!invoice=Invoice no.]
+\setuplabeltext[\s!nl][\v!letter:\c!invoice=Rekening No.]
+\setuplabeltext[\s!de][\v!letter:\c!invoice=Rechnungsnummer]
+\setuplabeltext[\s!fr][\v!letter:\c!invoice=Num\eacute ro de facture]
+\setuplabeltext[\s!it][\v!letter:\c!invoice=Nr.~fattura]
+\setuplabeltext[\s!es][\v!letter:\c!invoice=No. de factura]
+
+%D Label: attention
+
+\setuplabeltext[\s!en][\v!letter:\c!attention=] % Attention
+\setuplabeltext[\s!nl][\v!letter:\c!attention=]
+\setuplabeltext[\s!de][\v!letter:\c!attention=]
+\setuplabeltext[\s!fr][\v!letter:\c!attention=]
+\setuplabeltext[\s!it][\v!letter:\c!attention=]
+\setuplabeltext[\s!es][\v!letter:\c!attention=]
+
+%D Label: subject
+
+\setuplabeltext[\s!en][\v!letter:\c!subject=] % Subject
+\setuplabeltext[\s!nl][\v!letter:\c!subject=] % Onderwerp
+\setuplabeltext[\s!de][\v!letter:\c!subject=] % Betrifft
+\setuplabeltext[\s!fr][\v!letter:\c!subject=] % Concernant
+\setuplabeltext[\s!it][\v!letter:\c!subject=] % Oggetto
+\setuplabeltext[\s!es][\v!letter:\c!subject=] % Asunto
+
+%D Label: cc
+
+\setuplabeltext[\s!en][\v!letter:\c!cc=cc]
+\setuplabeltext[\s!nl][\v!letter:\c!cc=Kopie aan]
+\setuplabeltext[\s!de][\v!letter:\c!cc=Kopien an]
+\setuplabeltext[\s!fr][\v!letter:\c!cc=Copie \agrave]
+\setuplabeltext[\s!it][\v!letter:\c!cc=Per conoscenza]
+\setuplabeltext[\s!es][\v!letter:\c!cc=Copias]
+
+%D Label: enclosure
+
+\setuplabeltext[\s!en][\v!letter:\c!enclosure=encl]
+\setuplabeltext[\s!nl][\v!letter:\c!enclosure=Bijlage(n)]
+\setuplabeltext[\s!de][\v!letter:\c!enclosure=Anlagen]
+\setuplabeltext[\s!fr][\v!letter:\c!enclosure=Annexes]
+\setuplabeltext[\s!it][\v!letter:\c!enclosure=Allegato]
+\setuplabeltext[\s!es][\v!letter:\c!enclosure=Adjunto]
+
+%D Label: to
+
+\setuplabeltext[\s!en][\v!letter:\c!to=To]
+\setuplabeltext[\s!nl][\v!letter:\c!to=Aan]
+\setuplabeltext[\s!de][\v!letter:\c!to=An]
+\setuplabeltext[\s!fr][\v!letter:\c!to=A]
+\setuplabeltext[\s!it][\v!letter:\c!to=A]
+\setuplabeltext[\s!es][\v!letter:\c!to=A]
+
+%D Label: toname
+
+\setuplabeltext[\s!en][\v!letter:\c!toname=To]
+\setuplabeltext[\s!nl][\v!letter:\c!toname=Aan]
+\setuplabeltext[\s!de][\v!letter:\c!toname=An]
+\setuplabeltext[\s!fr][\v!letter:\c!toname=A]
+\setuplabeltext[\s!it][\v!letter:\c!toname=A]
+\setuplabeltext[\s!es][\v!letter:\c!toname=A]
+
+%D Label: from
+
+\setuplabeltext[\s!en][\v!letter:\c!from=From]
+\setuplabeltext[\s!nl][\v!letter:\c!from=Van]
+\setuplabeltext[\s!de][\v!letter:\c!from=Von]
+\setuplabeltext[\s!fr][\v!letter:\c!from=De]
+\setuplabeltext[\s!it][\v!letter:\c!from=Da]
+\setuplabeltext[\s!es][\v!letter:\c!from=De]
+
+%D Label: fromname
+
+\setuplabeltext[\s!en][\v!letter:\c!fromname=From]
+\setuplabeltext[\s!nl][\v!letter:\c!fromname=Van]
+\setuplabeltext[\s!de][\v!letter:\c!fromname=Von]
+\setuplabeltext[\s!fr][\v!letter:\c!fromname=De]
+\setuplabeltext[\s!it][\v!letter:\c!fromname=Da]
+\setuplabeltext[\s!es][\v!letter:\c!fromname=De]
+
+%D Label: date
+
+\setuplabeltext[\s!en][\v!letter:\c!date=Date]
+\setuplabeltext[\s!nl][\v!letter:\c!date=Datum]
+\setuplabeltext[\s!de][\v!letter:\c!date=Datum]
+\setuplabeltext[\s!fr][\v!letter:\c!date=Date]
+\setuplabeltext[\s!it][\v!letter:\c!date=Data]
+\setuplabeltext[\s!es][\v!letter:\c!date=Fecha]
+
+%D Label: phone
+
+\setuplabeltext[\s!en][\v!letter:\c!phone=Phone]
+\setuplabeltext[\s!nl][\v!letter:\c!phone=Telefoon]
+\setuplabeltext[\s!de][\v!letter:\c!phone=Telefon]
+\setuplabeltext[\s!fr][\v!letter:\c!phone=T\eacute l\eacute phone]
+\setuplabeltext[\s!it][\v!letter:\c!phone=Telefono]
+\setuplabeltext[\s!es][\v!letter:\c!phone=Tel\eacute fono]
+
+%D Label: fax
+
+\setuplabeltext[\s!en][\v!letter:\c!fax=Fax]
+\setuplabeltext[\s!nl][\v!letter:\c!fax=Fax]
+\setuplabeltext[\s!de][\v!letter:\c!fax=Fax]
+\setuplabeltext[\s!fr][\v!letter:\c!fax=T\eacute l\eacute fax]
+\setuplabeltext[\s!it][\v!letter:\c!fax=Fax]
+\setuplabeltext[\s!es][\v!letter:\c!fax=Fax]
+
+%D Label: email
+
+\setuplabeltext[\s!en][\v!letter:\c!email=Email]
+\setuplabeltext[\s!nl][\v!letter:\c!email=E--mail]
+\setuplabeltext[\s!de][\v!letter:\c!email=E-Mail]
+\setuplabeltext[\s!fr][\v!letter:\c!email=E-mail]
+\setuplabeltext[\s!it][\v!letter:\c!email=Email]
+\setuplabeltext[\s!es][\v!letter:\c!email=Email]
+
+%D Label: url
+
+\setuplabeltext[\s!en][\v!letter:\c!url=Url]
+\setuplabeltext[\s!nl][\v!letter:\c!url=URL]
+\setuplabeltext[\s!de][\v!letter:\c!url=URL]
+\setuplabeltext[\s!fr][\v!letter:\c!url=URL]
+\setuplabeltext[\s!it][\v!letter:\c!url=Sito Web]
+\setuplabeltext[\s!es][\v!letter:\c!url=URL]
+
+%D Label: bank
+
+\setuplabeltext[\s!en][\v!letter:\c!bank=Bank account]
+\setuplabeltext[\s!nl][\v!letter:\c!bank=Bankrekening]
+\setuplabeltext[\s!de][\v!letter:\c!bank=Bankverbindung]
+\setuplabeltext[\s!fr][\v!letter:\c!bank=Compte en banque]
+\setuplabeltext[\s!it][\v!letter:\c!bank=Conto bancario]
+\setuplabeltext[\s!es][\v!letter:\c!bank=Cuenta bancaria]
+
+%D Label: date
+
+\setuplabeltext[\s!en][\v!memo:\c!date=Date: ]
+\setuplabeltext[\s!nl][\v!memo:\c!date=Datum: ]
+\setuplabeltext[\s!de][\v!memo:\c!date=Datum: ]
+\setuplabeltext[\s!fr][\v!memo:\c!date=Date: ]
+\setuplabeltext[\s!it][\v!memo:\c!date=Data: ]
+\setuplabeltext[\s!es][\v!memo:\c!date=Fecha: ]
+
+%D Label: fromname
+
+\setuplabeltext[\s!en][\v!letter:\c!fromname=From: ]
+\setuplabeltext[\s!nl][\v!memo:\c!fromname=Van: ]
+\setuplabeltext[\s!de][\v!memo:\c!fromname=Von: ]
+\setuplabeltext[\s!fr][\v!memo:\c!fromname=De: ]
+\setuplabeltext[\s!it][\v!memo:\c!fromname=Da: ]
+\setuplabeltext[\s!es][\v!memo:\c!fromname=De: ]
+
+%D Label: toname
+
+\setuplabeltext[\s!en][\v!memo:\c!toname=To: ]
+\setuplabeltext[\s!nl][\v!memo:\c!toname=Aan: ]
+\setuplabeltext[\s!de][\v!memo:\c!toname=An: ]
+\setuplabeltext[\s!fr][\v!memo:\c!toname=A: ]
+\setuplabeltext[\s!it][\v!memo:\c!toname=A: ]
+\setuplabeltext[\s!es][\v!memo:\c!toname=A: ]
+
+%D Label: subject
+
+\setuplabeltext[\s!en][\v!memo:\c!subject=Subject: ]
+\setuplabeltext[\s!nl][\v!memo:\c!subject=Onderwerp: ]
+\setuplabeltext[\s!de][\v!memo:\c!subject=Betrifft: ]
+\setuplabeltext[\s!fr][\v!memo:\c!subject=Concernant: ]
+\setuplabeltext[\s!it][\v!memo:\c!subject=Oggetto: ]
+\setuplabeltext[\s!es][\v!memo:\c!subject=Asunto: ]
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/third/letter/extension/optimize.nle b/Master/texmf-dist/tex/context/third/letter/extension/optimize.nle new file mode 100644 index 00000000000..05a7f182799 --- /dev/null +++ b/Master/texmf-dist/tex/context/third/letter/extension/optimize.nle @@ -0,0 +1,41 @@ +%D \module
+%D [ file=optimize,
+%D version=2008.04.23,
+%D title=\CONTEXT\ Letter Extension,
+%D subtitle=Alternative input method,
+%D author=Wolfgang Schuster,
+%D date=\currentdate,
+%D copyright=Public Domain]
+
+\unprotect
+
+%D The \tex{minustwo} counter was added with the \CONTEXT\ version
+%D from \date[d=18,m=4,y=2008] and older versions will complain
+%D about a undefined control sequence, to prevend this problem
+%D I added a test if \tex{minustwo} is undefined and define it this
+%D is necessary.
+
+\ifx\minustwo\undefined \newcount\minustwo \minustwo=-2 \fi
+
+\newcount\letter!value!skip \letter!value!skip \plusten
+\newcount\letter!value!number \letter!value!number\zerocount
+
+\definetwopasslist\v!letter
+
+\setvalue{\v!letter\s!start\c!optimize\v!yes}%
+ {\global\advance\letter!value!number\plusone
+ \gettwopassdata{\v!letter}%
+ \iftwopassdatafound
+ \letter!value!skip\twopassdata
+ \ctxparskip=\dimexpr\letter!value!skip\ctxparskip/10\relax
+ \fi}
+
+\setvalue{\v!letter\s!stop\c!optimize\v!yes}%
+ {\ifdim\pagetotal<.25\textheight
+ \advance\letter!value!skip\minustwo
+ \else\ifdim\pagetotal<.5\textheight
+ \advance\letter!value!skip\plustwo
+ \fi\fi
+ \lazysavetwopassdata{\v!letter}{\number\letter!value!number}{\number\letter!value!skip}}
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/third/letter/extension/pragma.nle b/Master/texmf-dist/tex/context/third/letter/extension/pragma.nle new file mode 100644 index 00000000000..7453bd69182 --- /dev/null +++ b/Master/texmf-dist/tex/context/third/letter/extension/pragma.nle @@ -0,0 +1,48 @@ +%D \module
+%D [ file=pragma,
+%D version=2008.01.23,
+%D title=\CONTEXT\ Letter Extension,
+%D subtitle=Pragma ADE Example Text,
+%D author=Wolfgang Schuster,
+%D date=\currentdate,
+%D copyright=Public Domain]
+
+\unprotect
+
+%D Dummies
+
+\startsetups[letter:test]
+
+ \startlocalsetups [letter:head]
+ % nothing
+ \stoplocalsetups
+
+ \startlocalsetups[letter:address]
+ A Fancy Name \endgraf
+ A Nice Address \endgraf
+ The Place To Go
+ \stoplocalsetups
+
+ \startlocalsetups[letter:reference]
+ \rightaligned{\currentdate}
+ \stoplocalsetups
+
+ \startlocalsetups[letter:opening]
+ Hi There,
+ \stoplocalsetups
+
+ \startlocalsetups[letter:content]
+ \dorecurse{2}{\input tufte \blank}
+ \stoplocalsetups
+
+ \startlocalsetups[letter:closing]
+ That Was Me
+ \stoplocalsetups
+
+ \startlocalsetups[letter:appendices]
+ % nothing
+ \stoplocalsetups
+
+\stopsetups
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/third/letter/interface/default.nli b/Master/texmf-dist/tex/context/third/letter/interface/default.nli new file mode 100644 index 00000000000..f11f1700564 --- /dev/null +++ b/Master/texmf-dist/tex/context/third/letter/interface/default.nli @@ -0,0 +1,634 @@ +%D \module
+%D [ file=default,
+%D version=2008.07.08,
+%D title=\CONTEXT\ Letter Interface,
+%D subtitle=Default Interface,
+%D author=Wolfgang Schuster,
+%D date=\currentdate,
+%D copyright=Public Domain]
+
+%M \loadsetups[letter.xml]
+
+%D \subject{Constants and Variables}
+
+\unprotect
+
+%D I define a few additional constants and variables, I will move them
+%D to the base some time.
+
+\startconstants all
+
+ opening: opening
+ content: content
+ closing: closing
+ signature: signature
+ dispatch: dispatch
+ appendices: appendices
+ fromaddress: fromaddress
+ frombank: frombank
+ frommail: frommail
+ fromfax: fromfax
+ fromlogo: fromlogo
+ fromname: fromname
+ fromphone: fromphone
+ fromurl: fromurl
+ toname: toname
+ toaddress: toaddress
+ enclosure: enclosure
+ copy: copy
+ postscript: postscript
+ attention: attention
+ distribution: distribution
+ salutation: salutation
+ addressee: addressee
+\stopconstants
+
+\startvariables all
+
+ e: e
+ data: data
+ sender: sender
+ dispatch: dispatch
+ enclosure: enclosure
+ copy: copy
+ nobreak: nobreak
+ memo: memo
+ addressee: addressee
+\stopvariables
+
+%D We have at the moment only the values from the core module, I use the settings
+%D from the dinb file as default settings, you could replace them in your own
+%D document but I won't use another letterstyle for this interface.
+%D
+%D The labels are stored in a common file, you could use them in your own interface
+%D but you have to live with my names.
+
+\useletterstyle [dinb] % layout
+\useletterextension[label] % labels
+
+%D \subject{Reference line}
+%D
+%D Dimen value to save the height of the reference line.
+
+\newdimen\letter!height!reference
+
+%D We come now to the new macros defined in this file, they are meant to place the
+%D information about date, phone number and more information. You could select on of
+%D the alternatives with \type{\setupletter[alternative=...]}.
+%D
+%D I define here only what I need myself but you're free to define your own
+%D alternatives but try to avoid to use the same names as I do. You could also send
+%D me your alternatives and I will include them.
+%D
+%D This is the first alternative a, it use the values from the style file without any
+%D change, this is the normal layout for a DIN letter.
+
+\long\def\doformatreferencelista#1%
+ {\def\\{\egroup\hbox\bgroup}%
+ \setupinterlinespace\hbox\bgroup#1\egroup\par}
+
+\long\def\formatreferencelista#1%
+ {\bgroup
+ \convertargument#1\to\ascii
+ \vbox
+ {\vbox{\doattributes{\????ld\ascii}\c!titlestyle\c!titlecolor
+ {\doformatreferencelista{\labeltext{\v!letter:\ascii}}}}
+ \vtop{\doattributes{\????ld\ascii}\c!textstyle\c!textcolor
+ {\doformatreferencelista{\lettervalue\ascii}}}}%
+ \egroup
+ \hfill}
+
+\setvalue{\v!letter:\v!reference:\v!a}%
+ {\setbox\scratchbox\hbox\!!to\hsize
+ {\getcommacommandsize[\@@@@ldlist]% \@@@@ldreference?
+ \ifnum\commalistsize<\plustwo\hfill\fi
+ \processcommacommand[\@@@@ldlist]\formatreferencelista\unskip}%
+ \global\letter!height!reference\dimexpr\ht\scratchbox+\dp\scratchbox\relax
+ \box\scratchbox}
+
+\startsetups[letter:reference:\v!a]
+
+\setupletterstyle
+ [\v!reference]
+ [\c!hoffset=\backspace,
+ \c!voffset=\dimexpr\letterstylevalue\v!address\c!voffset+\letterstylevalue\v!address\c!height+\plusthree\c!mm\relax,
+ \c!width=\textwidth]
+
+\setupletterstyle
+ [\v!firstpage]
+ [\c!topspace=\dimexpr\letterstylevalue\v!reference\c!voffset+\letter!height!reference+\plustwo\lineheight\relax]
+
+\stopsetups
+
+%D This is the alternative b, you could use it if you want to place the information
+%D in a infoblock not just a simple line, it is also better suited if you want to
+%D place more infomration.
+
+\long\def\formatreferencelistb#1%
+ {\bgroup
+ \doifelse{#1}\v!line
+ {\blank[\v!line]}
+ {\hbox
+ {\doattributes{\????ld#1}\c!titlestyle\c!titlecolor
+ {\labeltext{\v!letter:#1}\lettervalue{#1\c!separator}}%
+ \doattributes{\????ld#1}\c!textstyle\c!textcolor
+ {\lettervalue{#1}}}}%
+ \egroup}
+
+\setvalue{\v!letter:\v!reference:\v!b}%
+ {\vtop % why not \vbox?
+ {\processcommacommand[\@@@@ldlist]\formatreferencelistb}}
+
+\startsetups[letter:reference:\v!b]
+
+\setupletterstyle
+ [\v!reference]
+ [\v!layer]
+ [\c!hoffset=125.7mm,
+ \c!voffset=\letterstylevalue\v!address\c!voffset]
+
+\setupletterstyle
+ [\v!reference]
+ [\v!frame]
+ [\c!width=\dimexpr\paperwidth-\letterstylevalue{\v!reference\v!layer}\c!hoffset-\cutspace\relax,
+ \c!height=\v!fit]
+
+\stopsetups
+
+%D The third alternative c could used, if you want to place just a single line
+%D with text and nothing more, like your place and the date. You need only the
+%D following two lines in your document.
+%D
+%D \starttyping
+%D \setupletter[alternative=c,list=reference]
+%D \setupletter[reference=\rightaligned{Place, \currentdate}]
+%D \stoptyping
+
+\long\def\formatreferencelistc#1%
+ {\bgroup
+ \convertargument#1\to\ascii
+ \doattributes{\????ld\ascii}\c!textstyle\c!textcolor
+ {\lettervalue\ascii}%
+ \egroup}
+
+\setvalue{\v!letter:\v!reference:\v!c}%
+ {\hbox\!!to\hsize
+ {\processcommacommand[\@@@@ldlist]\formatreferencelistc}}
+
+\startsetups[letter:reference:\v!c]
+
+\setups[letter:reference:\v!a]
+
+\stopsetups
+
+%D Alternative d, text is placed in a block like alternative bit the text
+%D is put in a table.
+
+\long\def\doformatreferencelistd#1%
+ {\doifelse{#1}\v!line
+ {\NC\NC\NC\NR} % ugly but working
+ {\NC \doattributes{\????ld#1}\c!titlestyle\c!titlecolor
+ {\labeltext{\v!letter:#1}\lettervalue{#1\c!separator}}%
+ \NC\doattributes{\????ld#1}\c!textstyle\c!textcolor{\lettervalue{#1}}
+ \NC\NR}}
+
+\def\formatreferencelistd#1%
+ {\appendtoks\doformatreferencelistd{#1}\to\scratchtoks}
+
+\setvalue{\v!letter:\v!reference:\v!d}%
+ {\vtop % why not \vbox?
+ {\scratchtoks\emptytoks
+ \processcommacommand[\@@@@ldlist]\formatreferencelistd
+ \setuptabulate[\c!before=,\c!after=]%
+ \starttabulate[|l|l|]
+ \the\scratchtoks
+ \stoptabulate}}
+
+\startsetups[letter:reference:\v!d]
+
+\setupletterstyle
+ [\v!reference]
+ [\v!layer]
+ [\c!hoffset=125.7mm,
+ \c!voffset=\letterstylevalue\v!address\c!voffset]
+
+\setupletterstyle
+ [\v!reference]
+ [\v!frame]
+ [\c!width=\dimexpr\paperwidth-\letterstylevalue{\v!reference\v!layer}\c!hoffset-\cutspace\relax,
+ \c!height=\v!fit]
+
+\stopsetups
+
+%D Alternative e, nearly the same as a but you could control the width of the
+%D fields with the width key for \tex{setupletter}.
+
+\long\def\doformatreferenceliste#1%
+ {\def\\{\egroup\hbox\bgroup}%
+ \setupinterlinespace\hbox\bgroup#1\egroup\par}
+
+\long\def\formatreferenceliste#1%
+ {\bgroup
+ \convertargument#1\to\ascii
+ \doifelselettervalue{\ascii\c!width}
+ {\hbox\!!to\lettervalue{\ascii\c!width}}
+ {\hbox}%
+ {\vbox
+ {\vbox{\doattributes{\????ld\ascii}\c!titlestyle\c!titlecolor
+ {\doformatreferenceliste{\labeltext{\v!letter:\ascii}}}}
+ \vtop{\doattributes{\????ld\ascii}\c!textstyle\c!textcolor
+ {\doformatreferenceliste{\lettervalue\ascii}}}}}%
+ \egroup}
+
+\setvalue{\v!letter:\v!reference:\v!e}%
+ {\hbox\!!to\hsize
+ {\processcommacommand[\@@@@ldlist]\formatreferenceliste\hss}}
+
+\startsetups[letter:reference:\v!e]
+
+\setups[letter:reference:\v!a]
+
+\stopsetups
+
+%D The alternative \mono{none} could be used to disable the reference.
+%D
+%D The advantage is to change only the list alternative to nothing, another
+%D method to get this result to use alternative c and remove all values from
+%D the reference but the none key is better.
+
+\resetvalue{\v!letter:\v!reference:\v!none}
+
+\startsetups[letter:reference:\v!none]
+
+ % Use the topspace value from the style
+
+\stopsetups
+
+%D \subject{Setup commands}
+%D
+%D \macros
+%D {setupletter,setlettervalue}
+%D
+%D The values for the letter field is set eitheir either with \tex{setupletter}
+%D or with \tex{setlettervalue}, the first commands allows you to input the data
+%D in a key-val list while the second is only able to accept a single value.
+%D
+%D The first definition for \tex{setupletter} was defined in \filename{t-letter.tex}
+%D and used till \date[d=20,m=4,y=2008] but I decided to replace it by a simpler
+%D method to avoid a few lines of code in my letter and the letter versions from
+%D \date[d=21,m=4,y=2008] will use the new user interface. The old definition from
+%D \filename{t-letter.tex} is now oveloaded in will eventually disappear.
+%D
+%D The second command to set \tex{setlettervalue} was developed as a alternative
+%D method to set values for the letter, I implemnted the command at the same time
+%D as I changed the user interface.
+%D
+%D Untill the old definition for \tex{setupletter} remains in \filename{t-letter.tex}
+%D I have to redefine also \tex{lettervalue}, \tex{doiflettervalue} and
+%D \tex{doifelselettervalue} because the old and new definitions differe in the
+%D number of arguments but the new definition will move to the core file as soon
+%D as I replace \tex{setupletter} in the core.
+
+%D \starttyping
+%D \def\setupletter
+%D {\dodoubleempty\dosetupletter}
+%D
+%D \def\dosetupletter[#1][#2]%
+%D {\ifsecondargument
+%D \dodosetupletter[#1][#2]%
+%D \else
+%D \dodosetupletter[#1][]%
+%D \fi}
+%D
+%D \def\dodosetupletter[#1][#2]%
+%D {\doifelsenothing{#2}
+%D {\getparameters[\????ld][#1]}
+%D {\def\dododosetupletter##1%
+%D {\getparameters[\????ld##1][#2]}%
+%D \processcommalist[#1]\dododosetupletter}}
+%D
+%D \def\lettervalue#1%
+%D {\csname\????ld#1\endcsname}
+%D
+%D \def\doiflettervalue#1%
+%D {\doiftextelse{\lettervalue{#1}}
+%D \firstofoneargument
+%D \gobbleoneargument}
+%D
+%D \def\doifelselettervalue#1%
+%D {\doiftextelse{\lettervalue{#1}}
+%D \firstoftwoarguments
+%D \secondoftwoarguments}
+%D
+%D \definecomplexorsimple\setlettervalue
+%D
+%D \def\complexsetlettervalue[#1]#2%
+%D {\setvalue{\????ld#1}{#2}}
+%D
+%D \def\simplesetlettervalue#1#2%
+%D {\setvalue{\????ld#1}{#2}}
+%D \stoptyping
+
+%D \subject{Letter environment}
+%D
+%D \macros
+%D {startletter}
+%D
+%D The main macro in this file, it is used to write the letter content.
+%D It is also possible to set the address and a few other values like
+%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
+ \setupletter[#1]%
+ \doifundefinedelse{\????ld\????ld#2}
+ {\setvalue{\????ld\c!toaddress}{#2}}
+ {\setvalue{\????ld\c!toaddress}{\getvalue{\????ld\????ld#2}}}%
+ \else\iffirstargument
+ \doifassignmentelse{#1}
+ {\setupletter[#1]}
+ {\doifundefinedelse{\????ld\????ld#1}
+ {\setvalue{\????ld\c!toaddress}{#1}}
+ {\setvalue{\????ld\c!toaddress}{\getvalue{\????ld\????ld#1}}}}%
+ \fi\fi
+ \def\stopletter
+ {\setups[letter:place]\egroup
+ \setupsubpagenumber[\c!state=\@@@@lsoptionstate]}%
+ \dostartbuffer[lettercontent][startletter][stopletter]}
+
+%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}
+
+%D \macros
+%D {startlettercontent}
+%D
+%D The letter content is saved in the value content, although I could
+%D place it in the corresponding I prefer this solution because you could
+%D now use it in your own macros and redefine the content setups to your
+%D own wishes.
+
+\setupletter
+ [\c!content={\getbuffer[lettercontent]}]
+
+\def\startlettercontent
+ {\dostartbuffer[lettercontent][startlettercontent][stoplettercontent]}
+
+%D After the definition of all macros I could now put the content
+%D in the corresponding setups, this is only important if you want
+%D to define your own layout for header, address etc.
+
+\startsetups[letter:head]
+\let\\\endgraf
+\lettervalue\c!fromname
+\doiflettervalue\c!fromname\endgraf
+\lettervalue\c!fromaddress
+\stopsetups
+
+%D \subject{Addressee field}
+%D
+%D The address field is separated into two different fields.
+%D The upper field is meant for dispatch information, the official height
+%D in germany is 3 lines but this would lead to different heights dependent
+%D of the font size and the fonts own height. The lower field contains the
+%D name and address of the receiver and has a height of 6 lines in germany.
+%D This value will lead to the same problem as the upper field, because the
+%D whole address field has a fixed height and both field should fit into
+%D this space. I solved this problem by assinging the upper field 1/3 of the
+%D address height and the lower field 2/3 of the address height.
+%D
+%D If you hace problem to put all information in the limited space you could
+%D try to reduce the font size or reduce the interlinespace in the field.
+
+\presetlocalframed[\????ls\v!dispatch]
+\presetlocalframed[\????ls\v!addressee]
+
+\startsetups[letter:address]
+\let\\\endgraf
+\offinterlineskip\vskip-\lineheight
+\doif\@@@@lsoptiondispatch \v!yes{\setups[letter:place:dispatch]}
+\doif\@@@@lsoptionaddressee\v!yes{\setups[letter:place:addressee]}
+\stopsetups
+
+\startsetups[letter:place:dispatch]
+
+ \localframed
+ [\????ls\v!dispatch]
+ {\doadaptleftskip {\letterstylevalue\v!addressee\c!leftmargin}%
+ \doadaptrightskip{\letterstylevalue\v!addressee\c!rightmargin}%
+ \doattributes{\????ls\v!addressee}\c!style\c!color{\setups[letter:address:dispatch]}}
+
+\stopsetups
+
+\startsetups[letter:place:addressee]
+
+ \localframed
+ [\????ls\v!addressee]
+ {\doadaptleftskip {\letterstylevalue\v!addressee\c!leftmargin}%
+ \doadaptrightskip{\letterstylevalue\v!addressee\c!rightmargin}%
+ \doattributes{\????ls\v!addressee}\c!style\c!color{\setups[letter:address:content]}}
+
+\stopsetups
+
+\startsetups[letter:address:dispatch]
+\lettervalue\c!dispatch
+\stopsetups
+
+\startsetups[letter:address:content]
+\lettervalue\c!toname
+\doiflettervalue\c!toname\endgraf
+\lettervalue\c!toaddress
+\stopsetups
+
+%D The following setups shouldn't be changed ar you will loose information
+%D in the output.
+%D
+%D The reference line is choosen with the alternative key or if you set
+%D a not defined alternative the definition a is choosen.
+
+\startsetups[letter:reference]
+\executeifdefined{\v!letter:\v!reference:\@@@@ldalternative}{\getvalue{\v!letter:\v!reference:\v!a}}
+\stopsetups
+
+\startsetups[letter:title]
+\doifelselettervalue\c!title
+ {\lettervalue\c!title}
+ {\doiflettervalue\c!attention
+ {\labeltext{\v!letter:\c!attention}\lettervalue\c!attention}}
+\stopsetups
+
+\startsetups[letter:subject]
+\labeltext{\v!letter:\c!subject}\lettervalue\c!subject
+\stopsetups
+
+\startsetups[letter:opening]
+\doifelselettervalue\c!opening
+ {\lettervalue\c!opening}
+ {\doiflettervalue\c!salutation
+ {\lettervalue\c!salutation}}
+\stopsetups
+
+\startsetups[letter:content]
+\lettervalue\c!content
+\stopsetups
+
+%D \subject{Closing and appendices}
+%D
+%D It is possible to attach a signature to the closing command, before the signature
+%D a skip is inserted but only if the the signature key has a value. The height of the
+%D closing environment itself has a height of 4 lines to provide a free space for your
+%D own handwritten signature and to have a little bit space between the closing text
+%D and the appendices.
+
+\setvalue{\v!letter:\v!closing:\v!a}%
+ {\lettervalue\c!closing
+ \doiflettervalue\c!signature{\letterstylevalue\v!closing\c!inbetween}%
+ \lettervalue\c!signature}
+
+\startsetups[letter:closing]
+\let\\\crlf
+\executeifdefined{\v!letter:\v!closing:\@@@@lsclosingalternative}{\getvalue{\v!letter:\v!closing:\v!a}}
+\stopsetups
+
+\startsetups[letter:appendices]
+\let\\\crlf
+\doflushletterdescription
+\stopsetups
+
+\dodefineletterdescription[\v!enclosure]
+
+\startsetups[letter:enclosure]
+\processaction
+ [\lettervalue\c!enclosure]
+ [ \v!empty=>\vrule\!!height\zeropoint\!!height\zeropoint\!!width\hsize\relax\ifvmode\nowhitespace\fi,
+ \s!unknown=>\lettervalue\c!enclosure]
+\stopsetups
+
+\dodefineletterdescription[\v!copy]
+
+\startsetups[letter:copy]
+\processaction
+ [\lettervalue\c!copy]
+ [ \v!empty=>\vrule\!!height\zeropoint\!!height\zeropoint\!!width\hsize\relax\ifvmode\nowhitespace\fi,
+ \s!unknown=>\lettervalue\c!copy]
+\stopsetups
+
+\dodefineletterdescription[\v!postscript]
+
+\startsetups[letter:postscript]
+\processaction
+ [\lettervalue\c!postscript]
+ [ \v!empty=>\vrule\!!height\zeropoint\!!height\zeropoint\!!width\hsize\relax\ifvmode\nowhitespace\fi,
+ \s!unknown=>\lettervalue\c!postscript]
+\stopsetups
+
+\setvalue{\v!letter:\v!backaddress:\v!yes}%
+ {\lettervalue\c!fromname
+ \doiflettervalue\c!fromaddress\\
+ \lettervalue\c!fromaddress}
+
+\setvalue{\v!letter:\v!backaddress:\v!auto}%
+ {\lettervalue\c!fromname
+ \doiflettervalue\c!fromaddress\\
+ \lettervalue\c!fromaddress}
+
+\resetvalue{\v!letter:\v!backaddress:\v!no}
+
+\setvalue{\v!letter:\v!backaddress:\s!unknown}%
+ {\doifelselettervalue\c!backaddress
+ {\lettervalue\c!backaddress}
+ {\lettervalue\c!fromname
+ \doiflettervalue\c!fromaddress\\
+ \lettervalue\c!fromaddress}}
+
+\startsetups[letter:backaddress]
+\def\\{\lettervalue{\c!backaddress\c!separator}}
+\executeifdefined{\v!letter:\v!backaddress:\@@@@ldbackaddress}{\getvalue{\v!letter:\v!backaddress:\s!unknown}}
+\stopsetups
+
+%D To prevent a pagebreak between the last line of the text and
+%D the siganture a nonbreakable vertical space is necessary.
+%D The vertical space is inserted in the style file with the normal
+%D before and after commands where we control the distance between
+%D the elements.
+
+\defineblankmethod [\v!nobreak] {\penalty\plustenthousand}
+
+%D \subject{Additional settings}
+%D
+%D I set alternative a as default value for alternative, the only content
+%D is the date with a label. f you dont want a label choose alternative c
+%D or change the label.
+
+\startsetups[letter:optimize]
+
+ \setbox\scratchbox\hbox % trial typesetting to get the heigth of the reference line
+ {\executeifdefined{\v!letter:\v!reference:\@@@@ldalternative}{\getvalue{\v!letter:\v!reference:\v!a}}}
+
+ \setups[letter:reference:\@@@@ldalternative]
+
+\stopsetups
+
+\setupletter
+ [\c!alternative=\v!a,
+ \c!backaddress=\v!yes,
+ \c!list=\v!date,
+ \c!date=\currentdate,
+ \c!width=\zeropoint,
+ \c!backaddress\c!separator=\textcomma\space]
+
+\setupletterstyle
+ [\v!option]
+ [\c!dispatch=\v!yes,
+ \c!addressee=\v!yes]
+
+\setupletterstyle
+ [\v!dispatch,\v!addressee]
+ [\c!align=\v!right,
+ \c!width=\hsize,
+ \c!leftmargin=\zeropoint,
+ \c!rightmargin=\zeropoint,
+ \c!offset=\zeropoint,
+ \c!frame=\v!off]
+
+\setupletterstyle
+ [\v!dispatch]
+ [\c!location=\v!bottom,
+ \c!height=\dimexpr(\vsize/9)*3\relax]
+
+\setupletterstyle
+ [\v!addressee]
+ [\c!location=\v!top,
+ \c!height=\dimexpr(\vsize/9)*6\relax]
+
+\setupletterstyle
+ [\v!closing]
+ [\c!after={\blank[\v!line]},
+ \c!inbetween={\blank[\v!nobreak,2*\v!line]}]
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/third/letter/interface/knuth.nli b/Master/texmf-dist/tex/context/third/letter/interface/knuth.nli new file mode 100644 index 00000000000..1ecddf56683 --- /dev/null +++ b/Master/texmf-dist/tex/context/third/letter/interface/knuth.nli @@ -0,0 +1,57 @@ +%D \module
+%D [ file=knuth,
+%D version=2008.04.17,
+%D title=\CONTEXT\ Letter Interface,
+%D subtitle=Lettformat Interface, % Donald Knuth's own letter format
+%D author=Wolfgang Schuster,
+%D date=\currentdate,
+%D copyright=Public Domain]
+
+\unprotect
+
+\useletterstyle[knuth]
+
+\def\address
+ {\startbuffer[address][address][body]}
+
+\def\body
+ {\startbuffer[body][body][closing]}
+
+\def\closing
+ {\def\endletter{\setups[letter:place]}%
+ \startbuffer[closing][closing][endletter]}
+
+\def\annotations
+ {\blank[line]\leftskip=0pt}
+
+\def\ps
+ {\let\par\space
+ \blank[medium]\leftskip=0pt}
+
+\startsetups[letter:reference]
+
+\stopsetups
+
+\startsetups[letter:opening]
+
+ \obeylines
+ \getbuffer[address]
+
+\stopsetups
+
+\startsetups[letter:content]
+
+ \getbuffer[body]
+
+\stopsetups
+
+\startsetups[letter:closing]
+
+ \leftskip=4in
+ \obeylines
+ \def\par{\normalpar\vskip1cm\let\par\normalpar}
+ \getbuffer[closing]
+
+\stopsetups
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/third/letter/interface/pragma.nli b/Master/texmf-dist/tex/context/third/letter/interface/pragma.nli new file mode 100644 index 00000000000..5bb287af0a5 --- /dev/null +++ b/Master/texmf-dist/tex/context/third/letter/interface/pragma.nli @@ -0,0 +1,252 @@ +%D \module +%D [ file=pragma, +%D version=2008.02.17, +%D title=\CONTEXT\ Letter Extension, +%D subtitle=Pragma Style, +%D author=Wolfgang Schuster, +%D date=\currentdate, +%D copyright=Public Domain] + +\unprotect + +\useletterstyle [pragma] % prefined layout +\useletterextension[pragma] % example text + +\setvariables + [letter:head] + [graphic=] + +\setupletterstyle + [\v!option] + [\c!backgroundimage=\getvariable{letter:head}{graphic}] + +\setvariables + [letter:style] + [opening=formal, + closing=informal] + +\setvariables + [letter:data] + [address=, + subject=, + date=, + concerns=, + residence=, + reference=, + opening=, + initials=, + prefix=, + suffix=, + informalname=, + formalname=, + content={\getbuffer[texletter]}, + author=, + greeting=, + appendices=] + +\startsetups[letter:address] + \def\\{\endgraf}\getvariable{letter:data}{address} +\stopsetups + +\def\SomeTableEntry#1% + {\doifsomething{\getvariable{letter:data}{#1}} + {\doiftext{\labeltext{letter:table:#1}} + {\NC\labeltext{letter:table:#1}\EQ\getvariable{letter:data}{#1}\NC\NR}}} + +\startsetups[letter:reference:table] + + \setuptabulate[\c!before=,\c!after=] \blank[synchronize] + + \starttabulate[|l|p|] + \SomeTableEntry {concerns} + \SomeTableEntry {date} + \SomeTableEntry {subject} + \SomeTableEntry {reference} + \stoptabulate + +\stopsetups + +\setvariables + [letter:address] + [line=3, + hoffset=0pt, + width=25em, + noflines=10] + +\setvariables + [letter:reference] + [line=1, + noflines-min=2, + noflines-max=5, + noflines=\getvariable{letter:reference}{noflines-max}] + +\startsetups[letter:before] + + % I overload the predefined value for the address layer + + \setupletterstyle + [\v!address] + [\v!layer] + [\c!line=\getvariable{letter:address}{line}, + \c!hoffset=\dimexpr\backspace-\linewidth-\getvariable{letter:address}{hoffset}\relax, + \c!height=\getvariable{letter:address}{noflines}\lineheight] + + \setupletterstyle + [\v!address] + [\v!frame] + [\c!width=\getvariable{letter:address}{width}] + + \page + + \setupletterstyle + [\v!reference] + [\c!line=\getvariable{letter:reference}{line}, + \c!height=\getvariable{letter:reference}{noflines}\lineheight] + + \doifelsenothing{\getvariable{letter:data}{concerns} + \getvariable{letter:data}{subject}} + {\setupletterstyle[\v!reference][\c!height=\getvariable{letter:reference}{noflines-min}\lineheight]} + {\setupletterstyle[\v!reference][\c!height=\getvariable{letter:reference}{noflines-max}\lineheight]} + +\stopsetups + +\setupletterstyle + [\v!option] + [\c!before={\setups[letter:before]}] + +\startsetups[letter:reference] + + \doifsomething{\getvariable{letter:data}{concerns} + \getvariable{letter:data}{subject}} + {\setups[letter:reference:table]\blank} + + \doifsomething{\getvariable{letter:data}{residence}} + {\noindent + \hbox\!!to\hsize + {\hss + \getvariable{letter:data}{residence},\space + \getvariable{letter:data}{date}}} + +\stopsetups + +\startsetups[letter:opening:unknown] + \labeltext{letter:opening:unknown} +\stopsetups + +\startsetups[letter:opening:informal] + + \doifelsenothing{\getvariable{letter:data}{informalname}} + {\labeltext{letter:opening:unknown}} + {\labeltext{letter:opening:informal}\space + \getvariable{letter:data}{informalname}}, + +\stopsetups + +\startsetups[letter:opening:formal] + + \doifelsenothing{\getvariable{letter:data}{formalname}} + {\labeltext{letter:opening:unknown}} + {\labeltext{letter:opening:formal}\space + \doifsomething{\getvariable{letter:data}{prefix}} + {\getvariable{letter:data}{prefix}\space} + \getvariable{letter:data}{formalname}}, + +\stopsetups + +\startsetups[letter:opening] + \setups[letter:opening:\getvariable{letter:style}{opening}] +\stopsetups + +\def\startlettercontent + {\startbuffer[texletter][startlettercontent][stoplettercontent]} + +\startsetups[letter:content] + \getvariable{letter:data}{content} +\stopsetups + +\startsetups[letter:closing:informal] + + \blank + + \doifelsenothing{\getvariable{letter:data}{greeting}} + {\noindent\labeltext{letter:greeting:informal}} + {\noindent\getvariable{letter:data}{greeting}}, + + \blank + + \noindent\getvariable{letter:data}{author} + +\stopsetups + +\startsetups[letter:closing:formal] + + \blank + + \doifelsenothing{\getvariable{letter:data}{greeting}} + {\noindent\labeltext{letter:greeting:formal}} + {\noindent\getvariable{letter:data}{greeting}}, + + \blank + + \noindent\getvariable{letter:data}{author} + +\stopsetups + +\startsetups[letter:closing] + \setups[letter:closing:\getvariable{letter:style}{closing}] +\stopsetups + +\startsetups[letter:appendices] + \getvariable{letter:data}{appendices} +\stopsetups + +%D Labels + +\setuplabeltext + [nl] + [letter:appendices=bijlage(n) : , + letter:subject=het onderwerp, + letter:opening:formal=Geachte, + letter:opening:informal=Beste, + letter:opening:unknown=LS, + letter:name:unknown=lezer, + letter:greeting:informal=Een vriendelijke groet, + letter:greeting:formal=Hoogachtend] + +\setuplabeltext + [en] + [letter:appendices=appendices : , + letter:subject=the topic, + letter:opening:formal=Dear, + letter:opening:informal=Dear, + letter:opening:unknown=LS, + letter:name:unknown=reader, + letter:greeting:informal=Regards, + letter:greeting:formal=Sincerely yours] + +\setuplabeltext + [de] + [letter:appendices=Anlagen : , + letter:subject=das Kennzeichen, + letter:opening:formal=Sehr Geehrte, + letter:opening:informal=Hallo, + letter:opening:unknown=LS, + letter:name:unknown=Leser, + letter:greeting:informal=Mit freundlichen Gr\uumlaut\ssharp en, + letter:greeting:formal=Hochachtungsvoll] + +\setuplabeltext + [nl] + [letter:table:concerns=betreft, + letter:table:date=datum, + letter:table:subject=kenmerk, + letter:table:reference=referentie] + +\setuplabeltext + [en] + [letter:table:concerns=concerns, + letter:table:date=date, + letter:table:subject=subject, + letter:table:reference=reference] + +\protect \endinput diff --git a/Master/texmf-dist/tex/context/third/letter/style/blockstyle.nls b/Master/texmf-dist/tex/context/third/letter/style/blockstyle.nls new file mode 100644 index 00000000000..165c41165b7 --- /dev/null +++ b/Master/texmf-dist/tex/context/third/letter/style/blockstyle.nls @@ -0,0 +1,56 @@ +%D \module
+%D [ file=blockstyle,
+%D version=2008.05.28,
+%D title=\CONTEXT\ Letter Style,
+%D subtitle=Blockstyle initalization,
+%D author=Wolfgang Schuster,
+%D date=\currentdate,
+%D copyright=Public Domain]
+
+\unprotect
+
+\useletterstyle[default]
+
+\def\letter!order!sections
+ {\v!letter\v!head,\v!date\v!line,\v!reference\v!line,
+ \v!special\v!notation,\v!inside\v!address,\v!title,
+ \v!opening,\v!subject,\v!content,\v!closing,\v!appendices}
+
+\setupletter
+ [\c!alternative=\v!none]
+
+\setupletterstyle
+ [\v!option]
+ [\c!backaddress=\v!no,
+ \c!address=\v!no,
+ \c!reference=\v!no,
+ \c!marking=\v!no]
+
+\startsetups[letter:head]
+% sender information appear in a lettersection
+\stopsetups
+
+\startsetups[letter:\v!letter\v!head]
+\let\\\crlf
+\lettervalue\c!fromaddress
+\stopsetups
+
+\startsetups[letter:\v!date\v!line]
+\lettervalue\c!date
+\stopsetups
+
+\startsetups[letter:\v!reference\v!line]
+\lettervalue\c!reference
+\stopsetups
+
+\startsetups[letter:\v!special\v!notation]
+\lettervalue\c!dispatch
+\stopsetups
+
+\startsetups[letter:\v!inside\v!address]
+\let\\\crlf
+\doiflettervalue\c!toname {\lettervalue\c!toname \crlf}
+\doiflettervalue\c!toaddress{\lettervalue\c!toaddress\crlf}
+\stopsetups
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/third/letter/style/default.nls b/Master/texmf-dist/tex/context/third/letter/style/default.nls new file mode 100644 index 00000000000..4637dfec6a8 --- /dev/null +++ b/Master/texmf-dist/tex/context/third/letter/style/default.nls @@ -0,0 +1,34 @@ +%D \module
+%D [ file=default,
+%D version=2008.07.08,
+%D title=\CONTEXT\ Letter Style,
+%D subtitle=Blockstyle initalization,
+%D author=Wolfgang Schuster,
+%D date=\currentdate,
+%D copyright=Public Domain]
+
+\unprotect
+
+\def\doresetletterlayer #1{\dododefineletterlayer[#1]}
+\def\doresetlettersection#1{\dodefinelettersection[#1]}
+
+\processcommacommand[\letter!list!layers ]\doresetletterlayer
+\processcommacommand[\letter!list!sections]\doresetlettersection
+
+\setupletterstyle
+ [\v!firstpage,\v!secondpage]
+ [\c!topspace=.08417508418\paperheight,
+ \c!top=\!!zeropoint,
+ \c!topdistance=\!!zeropoint,
+ \c!header=.06734006734\paperheight,
+ \c!headerdistance=\!!zeropoint,
+ \c!height=.84175084175\paperheight,
+ \c!footerdistance=\!!zeropoint,
+ \c!footer=.06734006734\paperheight,
+ \c!bottomdistance=\!!zeropoint,
+ \c!bottom=\!!zeropoint,
+ \c!backspace=.11904761905\paperwidth,
+ \c!width=.71428571429\paperwidth,
+ \c!bottomspace=\!!zeropoint]
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/third/letter/style/dina.nls b/Master/texmf-dist/tex/context/third/letter/style/dina.nls new file mode 100644 index 00000000000..24b535b5fa4 --- /dev/null +++ b/Master/texmf-dist/tex/context/third/letter/style/dina.nls @@ -0,0 +1,38 @@ +%D \module +%D [ file=dina, +%D version=2007.02.11, +%D title=\CONTEXT\ Letter Style, +%D subtitle=DIN 676 A, +%D author=Wolfgang Schuster, +%D date=\currentdate, +%D copyright=Public Domain] + +\unprotect + +\useletterstyle[dinb] + +\setupletterstyle + [\v!firstpage] + [\c!topspace=97.4mm] + +\setupletterstyle + [\v!topmark] + [\c!voffset=87mm] + +\setupletterstyle + [\v!botmark] + [\c!voffset=192mm] + +\setupletterstyle + [\v!head] + [\c!height=10.1mm] + +\setupletterstyle + [\v!address] + [\c!voffset=32mm] + +\setupletterstyle + [\v!reference] + [\c!voffset=80.4mm] % unknown value! + +\protect \endinput diff --git a/Master/texmf-dist/tex/context/third/letter/style/dinb.nls b/Master/texmf-dist/tex/context/third/letter/style/dinb.nls new file mode 100644 index 00000000000..2714f536e99 --- /dev/null +++ b/Master/texmf-dist/tex/context/third/letter/style/dinb.nls @@ -0,0 +1,109 @@ +%D \module +%D [ file=dinb, +%D version=2008.05.01, +%D title=\CONTEXT\ Letter Style, +%D subtitle=DIN 676 B, +%D author=Wolfgang Schuster, +%D date=\currentdate, +%D copyright=Public Domain] + +\unprotect + +\setupletterstyle + [\v!firstpage,\v!secondpage] + [\c!topspace=114.3mm, + \c!bottomspace=30mm, % unknown value! + \c!backspace=24.1mm, + \c!header=0mm, + \c!footer=0mm, % unknown value! + \c!width=\v!middle, + \c!height=\v!middle] + +\setupletterstyle + [\v!secondpage] + [\c!topspace=20mm, + \c!bottomspace=20mm, + \c!header=10mm, + \c!footer=10mm] + +\setupletterstyle + [\v!title,\v!subject,\v!opening,\v!appendices] + [\c!before=, + \c!after={\blank[line]}] + +\setupletterstyle + [\v!title] + [\c!align=\v!middle, + \c!style=\v!bold] + +\setupletterstyle + [\v!subject] + [\c!after={\blank[2*line]}, + \c!style=\v!bold] + +\setupletterstyle + [\v!content] + [\c!after={\blank[nobreak,line]}] + +\setupletterstyle + [\v!closing] + [\c!after={\blank[3*line]}] + +\setupletterstyle + [\v!topmark,\v!botmark,\v!cutmark] + [\c!state=\v!repeat, + \c!hoffset=5mm, + \c!strut=\v!no, + \c!symbol={\blackrule[\c!width=\plusfour\c!mm,\c!height=.4\points]}] + +\setupletterstyle + [\v!topmark] + [\c!voffset=105mm] + +\setupletterstyle + [\v!botmark] + [\c!voffset=210mm] + +\setupletterstyle + [\v!cutmark] + [\c!voffset=.5\paperheight, + \c!symbol={\blackrule[\c!width=\plusfour\c!mm,\c!height=.4\points]}] + +\setupletterstyle + [\v!head] + [\c!hoffset=\backspace, + \c!voffset=16.9mm, + \c!width=\textwidth, + \c!height=28.1mm] + +\setupletterstyle + [\v!foot] + [\c!width=\textwidth, + \c!height=10mm, + \c!hoffset=\backspace, + \c!voffset=\dimexpr\paperheight-\letterstylevalue\v!foot\c!height-5mm\relax] + +\setupletterstyle + [\v!address] + [\c!hoffset=\backspace, + \c!voffset=50mm, + \c!width=85mm, + \c!height=40mm] + +\setupletterstyle + [\v!backaddress] + [\c!hoffset=\backspace, + \c!height=5mm, + \c!voffset=\dimexpr\letterstylevalue\v!address\c!voffset-\letterstylevalue\v!backaddress\c!height\relax, + \c!width=85mm, + \c!style=\c!tf\c!xx, + \c!bottomframe=\v!on] + +\setupletterstyle + [\v!reference] + [\c!hoffset=\backspace, + \c!voffset=93.2mm, % unknown value! + \c!width=\textwidth, % unknown value! + \c!height=8.4mm] % unknown value! + +\protect \endinput diff --git a/Master/texmf-dist/tex/context/third/letter/style/dutch.nls b/Master/texmf-dist/tex/context/third/letter/style/dutch.nls new file mode 100644 index 00000000000..43d69a381b7 --- /dev/null +++ b/Master/texmf-dist/tex/context/third/letter/style/dutch.nls @@ -0,0 +1,72 @@ +%D \module +%D [ file=dutch, +%D version=2008.04.24, +%D title=\CONTEXT\ Letter Style, +%D subtitle=Dutch NEN Style, +%D author=Wolfgang Schuster, +%D date=\currentdate, +%D copyright=Public Domain] + +\unprotect + +\useletterstyle[dinb] + +\setupletterstyle + [\v!firstpage,\v!secondpage] + [\c!topspace=105mm, + \c!bottomspace=30mm, + \c!backspace=33mm, + \c!width=\v!middle, + \c!height=\v!fit] + +\setupletterstyle + [\v!secondpage] + [\c!topspace=20mm, + \c!header=15mm, + \c!headerdistance=15mm, + \c!height=\v!fit] + +\setupletterstyle + [\v!topmark,\v!cutmark] + [\c!state=\v!repeat, + \c!hoffset=3.5mm, + \c!symbol={\blackrule[\c!width=\plustwo\c!mm,\c!height=.4\points]}] + +\setupletterstyle + [\v!subject] + [\c!after={\blank[\v!line]}] + +\setupletterstyle + [\v!closing] + [\v!frame] + [\c!inbetween={\blank[\v!line]}] + +\setupletterstyle + [\v!address] + [\c!voffset=55mm, + \c!height=35mm, + \c!width=80mm] + +\setupletterstyle + [\v!backaddress] + [\c!voffset=50mm, + \c!height=5mm, + \c!width=80mm] + +\setupletterstyle + [\v!address] + [\v!dispatch] + [\c!height=\lineheight] + +\setupletterstyle + [\v!address] + [\v!content] + [\c!height=\v!fit] + +\setupletterstyle + [\v!option] + [\c!botmark=\v!no, + \c!backaddress=\v!yes, + \c!state=\v!start] + +\protect \endinput diff --git a/Master/texmf-dist/tex/context/third/letter/style/english.nls b/Master/texmf-dist/tex/context/third/letter/style/english.nls new file mode 100644 index 00000000000..bcbfcdea3ff --- /dev/null +++ b/Master/texmf-dist/tex/context/third/letter/style/english.nls @@ -0,0 +1,23 @@ +%D \module
+%D [ file=english,
+%D version=2008.03.13,
+%D title=\CONTEXT\ Letter Style,
+%D subtitle=English style,
+%D author=Wolfgang Schuster,
+%D date=\currentdate,
+%D copyright=Public Domain]
+
+\unprotect
+
+%D This is the second letter style for my letter module. The first
+%D style was \mono{dina.nls} with its slightly different alternative
+%D \mono{dinb.nls} but both count only as one style.
+
+\def\letter!order!sections
+ {\v!title,\v!opening,\v!subject,\v!content,\v!closing,\v!appendices}
+
+\setupletterstyle
+ [\v!subject]
+ [\c!style=]
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/third/letter/style/french.nls b/Master/texmf-dist/tex/context/third/letter/style/french.nls new file mode 100644 index 00000000000..b2c93696af8 --- /dev/null +++ b/Master/texmf-dist/tex/context/third/letter/style/french.nls @@ -0,0 +1,52 @@ +%D \module
+%D [ file=french,
+%D version=2008.04.28,
+%D title=\CONTEXT\ Letter Style,
+%D subtitle=French Style,
+%D author=Wolfgang Schuster,
+%D date=\currentdate,
+%D copyright=Public Domain]
+
+\unprotect
+
+\useletterstyle[dinb]
+
+\setupletterstyle
+ [\v!firstpage,\v!secondpage]
+ [\c!backspace=26mm,
+ \c!width=\v!middle,
+ \c!topspace=105mm,
+ \c!bottomspace=22mm,
+ \c!height=\v!fit]
+
+\setupletterstyle
+ [\v!secondpage]
+ [\c!topspace=27mm,
+ \c!header=12mm]
+
+\setupletterstyle
+ [\v!head]
+ [\c!hoffset=16mm,
+ \c!voffset=23mm]
+
+\setupletterstyle
+ [\v!address]
+ [\c!hoffset=115mm,
+ \c!voffset=53mm]
+
+\setupletterstyle
+ [\v!location]
+ [\c!hoffset=115mm,
+ \c!voffset=28mm]
+
+\setupletterstyle
+ [\v!title,\v!subject,\v!opening,\v!content,\v!closing,\v!appendices]
+ [\c!leftmargin=15mm]
+
+\setupletterstyle
+ [\v!option]
+ [\c!cutmark=\v!no,
+ \c!botmark=\v!no,
+ \c!usermark=\v!yes]
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/third/letter/style/fullblock.nls b/Master/texmf-dist/tex/context/third/letter/style/fullblock.nls new file mode 100644 index 00000000000..db5505b0cf6 --- /dev/null +++ b/Master/texmf-dist/tex/context/third/letter/style/fullblock.nls @@ -0,0 +1,57 @@ +%D \module
+%D [ file=fullblock,
+%D version=2008.05.28,
+%D title=\CONTEXT\ Letter Style,
+%D subtitle=full-block/complete block style,
+%D author=Wolfgang Schuster,
+%D date=\currentdate,
+%D copyright=Public Domain]
+
+\unprotect
+
+\useletterstyle[blockstyle]
+
+\setupletterstyle
+ [\v!letter\v!head,\v!reference\v!line,\v!special\v!notation,
+ \v!inside\v!address,\v!title,\v!opening,\v!subject,\v!content]
+ [\c!after={\blank[\v!line]}]
+
+\setupletterstyle
+ [\v!closing]
+ [\c!after={\blank[2*\v!line]}]
+
+\setupletterstyle
+ [\v!firstpage,\v!secondpage]
+ [\c!backspace=1in,
+ \c!width=\v!middle,
+ \c!topspace=1in,
+ \c!header=0in,
+ \c!footer=0in,
+ \c!height=\v!fit]
+
+\setupletterstyle
+ [\v!secondpage]
+ [\c!header=.5in]
+
+\startsetups[letter:header:fullblock]
+
+ \framed
+ [\c!frame=\v!off,
+ \c!location=\v!top,
+ \c!align=\v!left]
+ {\lettervalue\c!date \\
+ \lettervalue\c!reference}
+
+\stopsetups
+
+\setupletterstyle
+ [\v!header]
+ [\c!lefttext=\lettervalue\c!toname,
+ \c!middletext=\pagenumber,
+ \c!righttext=\setups{letter:header:fullblock}]
+
+\setupletterstyle
+ [\v!option]
+ [\c!whitespace=\v!line]
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/third/letter/style/hanging.nls b/Master/texmf-dist/tex/context/third/letter/style/hanging.nls new file mode 100644 index 00000000000..0257a5c7cb0 --- /dev/null +++ b/Master/texmf-dist/tex/context/third/letter/style/hanging.nls @@ -0,0 +1,67 @@ +%D \module
+%D [ file=hanging,
+%D version=2008.05.28,
+%D title=\CONTEXT\ Letter Style,
+%D subtitle=Hanging indented style,
+%D author=Wolfgang Schuster,
+%D date=\currentdate,
+%D copyright=Public Domain]
+
+\unprotect
+
+\useletterstyle[blockstyle]
+
+\setupletterstyle
+ [\v!letter\v!head,\v!reference\v!line,\v!special\v!notation,
+ \v!inside\v!address,\v!title,\v!opening,\v!content]
+ [\c!after={\blank[\v!line]}]
+
+\setupletterstyle
+ [\v!letter\v!head,\v!reference\v!line,
+ \v!date\v!line,\v!special\v!notation,\v!closing]
+ [\c!leftmargin=.5\textwidth]
+
+\setupletterstyle
+ [\v!content]
+ [\c!before=\everypar{\hangindent1.5em\relax}]
+
+\setupletterstyle
+ [\v!closing]
+ [\c!after={\blank[2*\v!line]}]
+
+\setupletterstyle
+ [\v!firstpage,\v!secondpage]
+ [\c!backspace=1in,
+ \c!width=\v!middle,
+ \c!topspace=1in,
+ \c!header=0in,
+ \c!footer=0in,
+ \c!height=\v!fit]
+
+\setupletterstyle
+ [\v!secondpage]
+ [\c!header=1in]
+
+\setuplabeltext[en][page=Page~]
+
+\startsetups[letter:header:hanging]
+
+ \framed
+ [\c!frame=\v!off,
+ \c!align=v!right]
+ {\lettervalue\c!toname \\
+ \lettervalue\c!date \\
+ \lettervalue\c!reference \\
+ \labeltext{page}\pagenumber}
+
+\stopsetups
+
+\setupletterstyle
+ [\v!header]
+ [\c!lefttext=\setups{letter:header:hanging}]
+
+\setupletterstyle
+ [\v!option]
+ [\c!whitespace=\v!line]
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/third/letter/style/knuth.nls b/Master/texmf-dist/tex/context/third/letter/style/knuth.nls new file mode 100644 index 00000000000..4f06d76bcb8 --- /dev/null +++ b/Master/texmf-dist/tex/context/third/letter/style/knuth.nls @@ -0,0 +1,41 @@ +%D \module +%D [ file=knuth, +%D version=2008.01.27, +%D title=\CONTEXT\ Letter Style, +%D subtitle=Letterformat Style, +%D author=Wolfgang Schuster, +%D date=\currentdate, +%D copyright=Public Domain] + +\unprotect + +\setuppapersize + [letter][letter] + +\setupletterstyle + [\v!firstpage,\v!secondpage] + [\c!backspace=1in, + \c!width=6.5in] + +\setupletterstyle + [\v!firstpage] + [\c!header=\zeropoint, + \c!topspace=2.2in, + \c!bottomspace=1.5in, + \c!height=\v!fit] + +\setupletterstyle + [\v!opening,\v!content] + [\c!after={\blank[\v!line]}] + +\setupletterstyle + [\v!content] + [\c!before=\everypar{\setupwhitespace[\v!line]}] + +\setupletterstyle + [\v!header] + [\c!lefttext=, + \c!middletext=\rlap{\currentdate}, + \c!righttext=Page\space\pagenumber] + +\protect \endinput diff --git a/Master/texmf-dist/tex/context/third/letter/style/memo.nls b/Master/texmf-dist/tex/context/third/letter/style/memo.nls new file mode 100644 index 00000000000..34c4ba4eac4 --- /dev/null +++ b/Master/texmf-dist/tex/context/third/letter/style/memo.nls @@ -0,0 +1,70 @@ +%D \module
+%D [ file=memo,
+%D version=2008.07.03,
+%D title=\CONTEXT\ Letter Style,
+%D subtitle=Memo style,
+%D author=Wolfgang Schuster,
+%D date=\currentdate,
+%D copyright=Public Domain]
+
+\unprotect
+
+\useletterstyle[blockstyle]
+
+\def\letter!order!sections
+ {\v!date\v!line,\v!reference\v!line,\v!inside\v!address,
+ \v!letter\v!head,\v!special\v!notation,\v!title,
+ \v!opening,\v!subject,\v!content,\v!closing,\v!appendices}
+
+\setupletterstyle
+ [\v!letter\v!head,\v!reference\v!line,
+ \v!special\v!notation,\v!inside\v!address,
+ \v!title,\v!subject]
+ [\c!before=\nowhitespace,
+ \c!after=\nowhitespace]
+
+\setupletterstyle
+ [\v!subject,\v!content,\v!closing]
+ [\c!after={\blank[\v!line]}]
+
+\setupletterstyle
+ [\v!closing]
+ [\c!leftmargin=.5\textwidth]
+
+\setupletterstyle
+ [\v!firstpage,\v!secondpage]
+ [\c!backspace=1in,
+ \c!width=\v!middle,
+ \c!topspace=1in,
+ \c!header=0in,
+ \c!footer=0in,
+ \c!height=\v!fit]
+
+\setupletterstyle
+ [\v!option]
+ [\c!whitespace=\v!line,
+ \c!opening=\v!no,
+ \c!reference\c!line=\v!no,
+ \v!special\v!notation=\v!no,
+ \c!title=\v!no]
+
+\startsetups[letter:\v!date\v!line]
+\labeltext{\v!memo:\c!date}\lettervalue\c!date
+\stopsetups
+
+\startsetups[letter:\v!letter\v!head]
+\let\\\crlf
+\labeltext{\v!memo:\c!fromname}\lettervalue\c!fromname
+\stopsetups
+
+\startsetups[letter:\v!inside\v!address]
+\let\\\crlf
+\labeltext{\v!memo:\c!toname}\lettervalue\c!toname
+\stopsetups
+
+\startsetups[letter:subject]
+\let\\\crlf
+\labeltext{\v!memo:\c!subject}\lettervalue\c!subject
+\stopsetups
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/third/letter/style/modified.nls b/Master/texmf-dist/tex/context/third/letter/style/modified.nls new file mode 100644 index 00000000000..de8f65110f1 --- /dev/null +++ b/Master/texmf-dist/tex/context/third/letter/style/modified.nls @@ -0,0 +1,63 @@ +%D \module
+%D [ file=modified,
+%D version=2008.05.28,
+%D title=\CONTEXT\ Letter Style,
+%D subtitle=Block/Modified block style,
+%D author=Wolfgang Schuster,
+%D date=\currentdate,
+%D copyright=Public Domain]
+
+\unprotect
+
+\useletterstyle[blockstyle]
+
+\setupletterstyle
+ [\v!letter\v!head,\v!reference\v!line,\v!special\v!notation,
+ \v!inside\v!address,\v!title,\v!opening,\v!content]
+ [\c!after={\blank[\v!line]}]
+
+\setupletterstyle
+ [\v!letter\v!head,\v!reference\v!line,
+ \v!date\v!line,\v!special\v!notation,\v!closing]
+ [\c!leftmargin=.5\textwidth]
+
+\setupletterstyle
+ [\v!closing]
+ [\c!after={\blank[2*\v!line]}]
+
+\setupletterstyle
+ [\v!firstpage,\v!secondpage]
+ [\c!backspace=1in,
+ \c!width=\v!middle,
+ \c!topspace=1in,
+ \c!header=0in,
+ \c!footer=0in,
+ \c!height=\v!fit]
+
+\setupletterstyle
+ [\v!secondpage]
+ [\c!header=1in]
+
+\setuplabeltext[en][page=Page~]
+
+\startsetups[letter:header:modified]
+
+ \framed
+ [\c!frame=\v!off,
+ \c!align=v!right]
+ {\lettervalue\c!toname \\
+ \lettervalue\c!date \\
+ \lettervalue\c!reference \\
+ \labeltext{page}\pagenumber}
+
+\stopsetups
+
+\setupletterstyle
+ [\v!header]
+ [\c!lefttext=\setups{letter:header:modified}]
+
+\setupletterstyle
+ [\v!option]
+ [\c!whitespace=\v!line]
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/third/letter/style/pragma.nls b/Master/texmf-dist/tex/context/third/letter/style/pragma.nls new file mode 100644 index 00000000000..a806947df8b --- /dev/null +++ b/Master/texmf-dist/tex/context/third/letter/style/pragma.nls @@ -0,0 +1,97 @@ +%D \module +%D [ file=pragma, +%D version=2008.02.07, +%D title=\CONTEXT\ Letter Style, +%D subtitle=Pragma Style, +%D author=Wolfgang Schuster, +%D date=\currentdate, +%D copyright=Public Domain] + +\unprotect + +\setupcolors + [\c!state=\v!start] + +\setuplayout + [\c!grid=\v!yes] + +\setupletterstyle + [\v!firstpage,\v!secondpage] + [\c!grid=\v!yes, + \c!topspace=2cm, + \c!bottomspace=2cm, + \c!backspace=2cm, + \c!header=0mm, + \c!footer=1cm, + \c!width=\v!middle, + \c!height=\v!middle] + +\startmode[*letter] + + \setupletterstyle + [\v!firstpage,\v!secondpage] + [\c!topspace=1in, + \c!bottomspace=1in, + \c!backspace=1in, + \c!footer=1in] + +\stopmode + +\setupletterstyle + [\v!option] + [\c!marking=\v!no, + \c!head=\v!no, + \c!foot=\v!no, + \c!backaddress=\v!no, + \c!whitespace=\v!big] + +\setupletterstyle + [\v!address] + [\v!layer] + [\c!line=3, + \c!height=10\lineheight, + \c!hoffset=\dimexpr\backspace-\linewidth\relax, + \c!voffset=\dimexpr\topspace+\headerheight\relax, + \c!preset=, + \c!location=\v!grid] + +\setupletterstyle + [\v!address] + [\v!frame] + [\c!location=\v!top, + \c!width=\textwidth] + +\setupletterstyle + [\v!reference] + [\c!hoffset=\dimexpr\backspace-\linewidth, + \c!voffset=\dimexpr\letterstylevalue{\v!address\v!layer}\c!voffset+ + \letterstylevalue{\v!address\v!layer}\v!height\relax, + \c!width=\dimexpr\textwidth+2\linewidth, + \c!height=3\lineheight] + +\setupletterstyle + [\v!reference] + [\v!layer] + [\c!preset=, + \c!location=\v!grid] + +\setupletterstyle + [\v!reference] + [\v!frame] + [\c!location=\v!top] + +\startsetups[letter:title:before] + \startlinecorrection + \blank[\dimexpr\letterstylevalue\v!reference\c!voffset+\letterstylevalue\v!reference\c!height-\letterstylevalue{\v!address\v!layer}\c!voffset\relax] + \stoplinecorrection +\stopsetups + +\setupletterstyle + [\v!title] + [\c!before={\setups[letter:title:before]}] + +\setupletterstyle + [\v!subject,\v!opening,\v!content,\v!closing] + [\c!after={\blank[\v!line]}] + +\protect \endinput diff --git a/Master/texmf-dist/tex/context/third/letter/style/semiblock.nls b/Master/texmf-dist/tex/context/third/letter/style/semiblock.nls new file mode 100644 index 00000000000..c61ac22b279 --- /dev/null +++ b/Master/texmf-dist/tex/context/third/letter/style/semiblock.nls @@ -0,0 +1,52 @@ +%D \module
+%D [ file=semiblock,
+%D version=2008.05.28,
+%D title=\CONTEXT\ Letter Style,
+%D subtitle=Semiblock style,
+%D author=Wolfgang Schuster,
+%D date=\currentdate,
+%D copyright=Public Domain]
+
+\unprotect
+
+\useletterstyle[blockstyle]
+
+\setupletterstyle
+ [\v!letter\v!head,\v!reference\v!line,\v!special\v!notation,
+ \v!inside\v!address,\v!title,\v!opening,\v!subject,\v!content]
+ [\c!after={\blank[\v!line]}]
+
+\setupletterstyle
+ [\v!letter\v!head,\v!reference\v!line,
+ \v!date\v!line,\v!special\v!notation,\v!closing]
+ [\c!leftmargin=.5\textwidth]
+
+\setupletterstyle
+ [\v!closing]
+ [\c!after={\blank[2*\v!line]}]
+
+\setupletterstyle
+ [\v!firstpage,\v!secondpage]
+ [\c!backspace=1in,
+ \c!width=\v!middle,
+ \c!topspace=1in,
+ \c!header=0in,
+ \c!footer=0in,
+ \c!height=\v!fit]
+
+\setupletterstyle
+ [\v!secondpage]
+ [\c!header=.5in]
+
+\setupletterstyle
+ [\v!header]
+ [\c!lefttext=\lettervalue\c!toname,
+ \c!middletext=\pagenumber,
+ \c!righttext=\lettervalue\c!date]
+
+\setupletterstyle
+ [\v!option]
+ [\c!whitespace=\v!line,
+ \c!indenting={\v!yes,\v!medium,\v!first}]
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/third/letter/style/simplified.nls b/Master/texmf-dist/tex/context/third/letter/style/simplified.nls new file mode 100644 index 00000000000..90d1cccc188 --- /dev/null +++ b/Master/texmf-dist/tex/context/third/letter/style/simplified.nls @@ -0,0 +1,59 @@ +%D \module
+%D [ file=simplified,
+%D version=2008.05.28,
+%D title=\CONTEXT\ Letter Style,
+%D subtitle=Simplified style,
+%D author=Wolfgang Schuster,
+%D date=\currentdate,
+%D copyright=Public Domain]
+
+\unprotect
+
+\useletterstyle[blockstyle]
+
+\setupletterstyle
+ [\v!letter\v!head,\v!reference\v!line,\v!special\v!notation,
+ \v!inside\v!address,\v!title,\v!opening,\v!subject,\v!content]
+ [\c!after={\blank[\v!line]}]
+
+\setupletterstyle
+ [\v!closing]
+ [\c!after={\blank[2*\v!line]}]
+
+\setupletterstyle
+ [\v!firstpage,\v!secondpage]
+ [\c!backspace=1in,
+ \c!width=\v!middle,
+ \c!topspace=1in,
+ \c!header=0in,
+ \c!footer=0in,
+ \c!height=\v!fit]
+
+\setupletterstyle
+ [\v!secondpage]
+ [\c!header=.5in]
+
+\startsetups[letter:header:simplified]
+
+ \framed
+ [\c!frame=\v!off,
+ \c!location=\v!top,
+ \c!align=\v!left]
+ {\lettervalue\c!date \\
+ \lettervalue\c!reference}
+
+\stopsetups
+
+\setupletterstyle
+ [\v!header]
+ [\c!lefttext=\lettervalue\c!toname,
+ \c!middletext=\pagenumber,
+ \c!righttext=\setups{letter:header:simplified}]
+
+\setupletterstyle
+ [\v!option]
+ [\c!whitespace=\v!line,
+ %\c!closing=\v!no, % not possible at the moment because it disables the signature
+ \c!opening=\v!no]
+
+\protect \endinput
|