summaryrefslogtreecommitdiff
path: root/Master
diff options
context:
space:
mode:
authorNorbert Preining <preining@logic.at>2008-07-29 15:44:34 +0000
committerNorbert Preining <preining@logic.at>2008-07-29 15:44:34 +0000
commita712cd61df036f1f73973d714058bf23a2dc9617 (patch)
treea7e1e3423dbd534b2cafcf4faded8b526e3dc7b4 /Master
parentda3015813795ccbeed28b90a4785b11406f441c5 (diff)
add context-letter
git-svn-id: svn://tug.org/texlive/trunk@9882 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master')
-rw-r--r--Master/texmf-dist/doc/context/third/letter/letter-doc.pdfbin0 -> 114265 bytes
-rw-r--r--Master/texmf-dist/doc/context/third/letter/todo.txt27
-rw-r--r--Master/texmf-dist/tex/context/interface/third/letter.xml232
-rw-r--r--Master/texmf-dist/tex/context/third/letter/base/t-letter.tex998
-rw-r--r--Master/texmf-dist/tex/context/third/letter/extension/addrentry.nle33
-rw-r--r--Master/texmf-dist/tex/context/third/letter/extension/corres.nle43
-rw-r--r--Master/texmf-dist/tex/context/third/letter/extension/label.nle268
-rw-r--r--Master/texmf-dist/tex/context/third/letter/extension/optimize.nle41
-rw-r--r--Master/texmf-dist/tex/context/third/letter/extension/pragma.nle48
-rw-r--r--Master/texmf-dist/tex/context/third/letter/interface/default.nli634
-rw-r--r--Master/texmf-dist/tex/context/third/letter/interface/knuth.nli57
-rw-r--r--Master/texmf-dist/tex/context/third/letter/interface/pragma.nli252
-rw-r--r--Master/texmf-dist/tex/context/third/letter/style/blockstyle.nls56
-rw-r--r--Master/texmf-dist/tex/context/third/letter/style/default.nls34
-rw-r--r--Master/texmf-dist/tex/context/third/letter/style/dina.nls38
-rw-r--r--Master/texmf-dist/tex/context/third/letter/style/dinb.nls109
-rw-r--r--Master/texmf-dist/tex/context/third/letter/style/dutch.nls72
-rw-r--r--Master/texmf-dist/tex/context/third/letter/style/english.nls23
-rw-r--r--Master/texmf-dist/tex/context/third/letter/style/french.nls52
-rw-r--r--Master/texmf-dist/tex/context/third/letter/style/fullblock.nls57
-rw-r--r--Master/texmf-dist/tex/context/third/letter/style/hanging.nls67
-rw-r--r--Master/texmf-dist/tex/context/third/letter/style/knuth.nls41
-rw-r--r--Master/texmf-dist/tex/context/third/letter/style/memo.nls70
-rw-r--r--Master/texmf-dist/tex/context/third/letter/style/modified.nls63
-rw-r--r--Master/texmf-dist/tex/context/third/letter/style/pragma.nls97
-rw-r--r--Master/texmf-dist/tex/context/third/letter/style/semiblock.nls52
-rw-r--r--Master/texmf-dist/tex/context/third/letter/style/simplified.nls59
-rw-r--r--Master/texmf-dist/tpm/t-letter.tpm51
-rw-r--r--Master/tlpkg/tlpsrc/collection-context.tlpsrc1
-rw-r--r--Master/tlpkg/tlpsrc/context-letter.tlpsrc5
30 files changed, 3580 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/context/third/letter/letter-doc.pdf b/Master/texmf-dist/doc/context/third/letter/letter-doc.pdf
new file mode 100644
index 00000000000..b81f212bee5
--- /dev/null
+++ b/Master/texmf-dist/doc/context/third/letter/letter-doc.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/context/third/letter/todo.txt b/Master/texmf-dist/doc/context/third/letter/todo.txt
new file mode 100644
index 00000000000..2d5f5f5a2cd
--- /dev/null
+++ b/Master/texmf-dist/doc/context/third/letter/todo.txt
@@ -0,0 +1,27 @@
+Todo:
+
+o Page optimation of the output
+
+ - reduce the parskip if the last page is filled less than 25%
+ of the textheight
+ - increase the parskip if the last page is filled more than 25%
+ and less than 50% of the textheight to have it at least filled
+ more than half of the textheight
+
+o support for address database
+
+ - adrentry and addrentry macros from KOMA-Script
+ - xml files with ConTeXts contact structure
+
+o styles
+
+ - english and american letters in block style
+ - formats from other countries
+
+o documentation
+
+ - description about the elements
+ - examples from simple and complex letters
+ - list with all named elements
+ - list with the contents for the labels
+ - guide how to write style and extension files
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
diff --git a/Master/texmf-dist/tpm/t-letter.tpm b/Master/texmf-dist/tpm/t-letter.tpm
new file mode 100644
index 00000000000..f1630855b20
--- /dev/null
+++ b/Master/texmf-dist/tpm/t-letter.tpm
@@ -0,0 +1,51 @@
+<!DOCTYPE rdf:RDF SYSTEM "tpm.dtd">
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:TPM="http://texlive.dante.de/">
+ <rdf:Description about="http://dl.contextgarden.net/modules/t-letter.zip">
+ <TPM:Name>t-letter</TPM:Name>
+ <TPM:Type>Package</TPM:Type>
+ <TPM:Date>2006/09/12 00:00:00</TPM:Date>
+ <TPM:Version>2006.09.12</TPM:Version>
+ <TPM:Creator>Wolfgang Schuster</TPM:Creator>
+ <TPM:Title>Letter module</TPM:Title>
+ <TPM:Description>
+ Letter module for ConTeXt.
+ </TPM:Description>
+ <TPM:Author>Wolfgang Schuster</TPM:Author>
+ <TPM:RunFiles size="99255">
+ tex/context/third/letter/base/t-letter.tex
+ tex/context/third/letter/interface/default.nli
+ tex/context/third/letter/interface/pragma.nli
+ tex/context/third/letter/interface/knuth.nli
+ tex/context/third/letter/extension/label.nle
+ tex/context/third/letter/extension/corres.nle
+ tex/context/third/letter/extension/pragma.nle
+ tex/context/third/letter/extension/optimize.nle
+ tex/context/third/letter/extension/addrentry.nle
+ tex/context/third/letter/style/dina.nls
+ tex/context/third/letter/style/dinb.nls
+ tex/context/third/letter/style/pragma.nls
+ tex/context/third/letter/style/knuth.nls
+ tex/context/third/letter/style/dutch.nls
+ tex/context/third/letter/style/french.nls
+ tex/context/third/letter/style/english.nls
+ tex/context/third/letter/style/default.nls
+ tex/context/third/letter/style/blockstyle.nls
+ tex/context/third/letter/style/fullblock.nls
+ tex/context/third/letter/style/semiblock.nls
+ tex/context/third/letter/style/modified.nls
+ tex/context/third/letter/style/hanging.nls
+ tex/context/third/letter/style/memo.nls
+ tex/context/third/letter/style/simplified.nls
+ tex/context/interface/third/letter.xml
+ tpm/t-letter.tpm
+ </TPM:RunFiles>
+ <TPM:DocFiles size="115032">
+ doc/context/third/letter/letter-doc.pdf
+ doc/context/third/letter/todo.txt
+ </TPM:DocFiles>
+ <TPM:Requires>
+ <TPM:Package name="context"/>
+ </TPM:Requires>
+ </rdf:Description>
+</rdf:RDF>
+
diff --git a/Master/tlpkg/tlpsrc/collection-context.tlpsrc b/Master/tlpkg/tlpsrc/collection-context.tlpsrc
index f17b9fb5916..b2fb6e0f075 100644
--- a/Master/tlpkg/tlpsrc/collection-context.tlpsrc
+++ b/Master/tlpkg/tlpsrc/collection-context.tlpsrc
@@ -12,5 +12,6 @@ depend context-chromato
depend context-construction-plan
depend context-degrade
depend context-french
+depend context-letter
depend collection-metapost
depend collection-basic
diff --git a/Master/tlpkg/tlpsrc/context-letter.tlpsrc b/Master/tlpkg/tlpsrc/context-letter.tlpsrc
new file mode 100644
index 00000000000..af712263286
--- /dev/null
+++ b/Master/tlpkg/tlpsrc/context-letter.tlpsrc
@@ -0,0 +1,5 @@
+name context-letter
+category Package
+runpattern d texmf-dist/tex/context/third/letter
+runpattern f texmf-dist/tex/context/interface/third/t-letter.xml
+docpattern d texmf-dist/doc/context/third/letter