summaryrefslogtreecommitdiff
path: root/macros/context/contrib/context-letter/tex/context/third/letter/base/s-cor-00.mkvi
diff options
context:
space:
mode:
Diffstat (limited to 'macros/context/contrib/context-letter/tex/context/third/letter/base/s-cor-00.mkvi')
-rw-r--r--macros/context/contrib/context-letter/tex/context/third/letter/base/s-cor-00.mkvi1059
1 files changed, 1059 insertions, 0 deletions
diff --git a/macros/context/contrib/context-letter/tex/context/third/letter/base/s-cor-00.mkvi b/macros/context/contrib/context-letter/tex/context/third/letter/base/s-cor-00.mkvi
new file mode 100644
index 0000000000..9e06a46858
--- /dev/null
+++ b/macros/context/contrib/context-letter/tex/context/third/letter/base/s-cor-00.mkvi
@@ -0,0 +1,1059 @@
+%D \module
+%D [ file=s-cor-00,
+%D version=2015.08.24,
+%D title=\CONTEXT\ User Module,
+%D subtitle=Correspondence,
+%D author=Wolfgang Schuster,
+%D date=\currentdate,
+%D copyright=Wolfgang Schuster,
+%D license=GNU General Public License]
+
+%C Copyright (C) 2011 Wolfgang Schuster
+%C
+%C This program is free software: you can redistribute it and/or modify
+%C it under the terms of the GNU General Public License as published by
+%C the Free Software Foundation, either version 3 of the License, or
+%C (at your option) any later version.
+%C
+%C This program is distributed in the hope that it will be useful,
+%C but WITHOUT ANY WARRANTY; without even the implied warranty of
+%C MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+%C GNU General Public License for more details.
+%C
+%C You should have received a copy of the GNU General Public License
+%C along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+\unprotect
+
+% Lua functions for the core and also for the frontend modules
+
+\ctxloadluafile{s-cor-00}
+
+% Constants and variables
+
+\startinterface all
+ \setinterfaceconstant {whitespace} {whitespace}
+ \setinterfaceconstant {backgroundimage} {backgroundimage}
+ \setinterfaceconstant {fromname} {fromname}
+ \setinterfaceconstant {fromaddress} {fromaddress}
+ \setinterfaceconstant {attention} {attention}
+ \setinterfaceconstant {subject} {subject}
+ \setinterfaceconstant {closing} {closing}
+ \setinterfaceconstant {signature} {signature}
+ \setinterfaceconstant {copy} {copy}
+ \setinterfaceconstant {enclosure} {enclosure}
+ \setinterfaceconstant {postscript} {postscript}
+ \setinterfaceconstant {dispatch} {dispatch}
+ \setinterfaceconstant {toname} {toname}
+ \setinterfaceconstant {toaddress} {toaddress}
+ \setinterfaceconstant {backaddress} {backaddress}
+ \setinterfaceconstant {opening} {opening}
+ \setinterfaceconstant {fromphone} {fromphone}
+ \setinterfaceconstant {fromfax} {fromfax}
+ \setinterfaceconstant {frommail} {frommail}
+ \setinterfaceconstant {fromurl} {fromurl}
+ \setinterfaceconstant {salutation} {salutation}
+ \setinterfaceconstant {language} {language}
+ \setinterfaceconstant {leftalign} {leftalign}
+ \setinterfaceconstant {rightalign} {rightalign}
+ \setinterfaceconstant {datestyle} {datestyle}
+ \setinterfaceconstant {datecolor} {datecolor}
+ \setinterfaceconstant {subtitlestyle} {subtitlestyle}
+ \setinterfaceconstant {subtitlecolor} {subtitlecolor}
+ \setinterfaceconstant {street} {street}
+ \setinterfaceconstant {city} {city}
+ \setinterfaceconstant {phone} {phone}
+ \setinterfaceconstant {email} {email}
+ \setinterfaceconstant {bankname} {bankname}
+ \setinterfaceconstant {banknumber} {banknumber}
+ \setinterfaceconstant {accountnumber} {accountnumber}
+ \setinterfaceconstant {room} {room}
+ \setinterfaceconstant {yourref} {yourref}
+ \setinterfaceconstant {yourmail} {yourmail}
+ \setinterfaceconstant {myref} {myref}
+ \setinterfaceconstant {mymail} {mymail}
+ \setinterfaceconstant {customer} {customer}
+ \setinterfaceconstant {invoice} {invoice}
+ \setinterfaceconstant {fax} {fax}
+ \setinterfaceconstant {url} {url}
+ \setinterfaceconstant {bank} {bank}
+ \setinterfaceconstant {organization} {organization}
+ \setinterfaceconstant {zip} {zip}
+ \setinterfaceconstant {country} {country}
+ \setinterfaceconstant {addressentry} {addressentry}
+ \setinterfaceconstant {rulewidth} {rulewidth}
+\stopinterface
+
+\startinterface all
+ % all
+ \setinterfacevariable {correspondence} {correspondence}
+ \setinterfacevariable {nexthead} {nexthead}
+ \setinterfacevariable {lefthead} {lefthead}
+ \setinterfacevariable {righthead} {righthead}
+ \setinterfacevariable {foot} {foot}
+ \setinterfacevariable {nextfoot} {nextfoot}
+ \setinterfacevariable {leftfoot} {leftfoot}
+ \setinterfacevariable {rightfoot} {rightfoot}
+ \setinterfacevariable {topmark} {topmark}
+ \setinterfacevariable {botmark} {botmark}
+ \setinterfacevariable {cutmark} {cutmark}
+ \setinterfacevariable {endmark} {endmark}
+ \setinterfacevariable {usermark} {usermark}
+ % letter
+ \setinterfacevariable {letter} {letter}
+ \setinterfacevariable {lettermain} {lettermain}
+ \setinterfacevariable {letternext} {letternext}
+ \setinterfacevariable {address} {address}
+ \setinterfacevariable {backaddress} {backaddress}
+ \setinterfacevariable {location} {location}
+ \setinterfacevariable {opening} {opening}
+ \setinterfacevariable {closing} {closing}
+ \setinterfacevariable {secondpage} {secondpage}
+ \setinterfacevariable {copy} {copy}
+ \setinterfacevariable {enclosure} {enclosure}
+ \setinterfacevariable {french} {french}
+ \setinterfacevariable {specialnotation} {specialnotation}
+ \setinterfacevariable {e} {e}
+ \setinterfacevariable {place} {place}
+ \setinterfacevariable {gbrief} {gbrief}
+ \setinterfacevariable {fullblock} {fullblock}
+ \setinterfacevariable {semiblock} {semiblock}
+ \setinterfacevariable {simplified} {simplified}
+ \setinterfacevariable {modified} {modified}
+ \setinterfacevariable {blockstyle} {blockstyle}
+ \setinterfacevariable {knuth} {knuth}
+ \setinterfacevariable {generic} {generic}
+ % memo
+ \setinterfacevariable {memo} {memo}
+ \setinterfacevariable {memomain} {memomain}
+ \setinterfacevariable {memonext} {memonext}
+ % resume
+ \setinterfacevariable {resume} {resume}
+ \setinterfacevariable {resumemain} {resumemain}
+ \setinterfacevariable {resumenext} {resumenext}
+ \setinterfacevariable {casual} {casual}
+ \setinterfacevariable {classic} {classic}
+ % frames
+ \setinterfacevariable {frames} {frames}
+ \setinterfacevariable {framesmain} {framesmain}
+ \setinterfacevariable {framesnext} {framesnext}
+\stopinterface
+
+% Messages
+
+\definemessageconstant {correspondence}
+
+\startinterface all
+ \setinterfacemessage{correspondence}{title}{correspondence}
+ \setinterfacemessage{correspondence}{1} {Undefined layer '--' for the '--' environment}
+ \setinterfacemessage{correspondence}{2} {Undefined section '--' for the '--' environment}
+ \setinterfacemessage{correspondence}{3} {Undefined description '--' for the '--' environment}
+\stopinterface
+
+% Namespaces
+
+\installnamespace {correspondence}
+\installnamespace {correspondencebuffer}
+\installnamespace {correspondenceoverlay}
+\installnamespace {correspondencelayer}
+\installnamespace {correspondencelayerrenderings}
+\installnamespace {correspondencelayeralternative}
+\installnamespace {correspondencelayerstate}
+\installnamespace {correspondenceframe}
+\installnamespace {correspondencesection}
+\installnamespace {correspondencesectionrenderings}
+\installnamespace {correspondencesectionalternative}
+\installnamespace {correspondenceoption}
+\installnamespace {correspondencedescription}
+\installnamespace {correspondencedescriptionlocation}
+\installnamespace {correspondencedescriptionformat}
+\installnamespace {correspondencestyle}
+\installnamespace {correspondenceelement}
+\installnamespace {correspondencelayout}
+\installnamespace {correspondencehead}
+\installnamespace {correspondenceheadbuffer}
+\installnamespace {correspondenceheadrenderings}
+\installnamespace {correspondenceheadalternative}
+\installnamespace {correspondenceparagraph}
+\installnamespace {correspondenceparagraphbuffer}
+\installnamespace {correspondenceparagraphrenderings}
+\installnamespace {correspondenceparagraphalternative}
+\installnamespace {correspondenceparagraphsetups}
+
+% Itemgroup
+
+\defineitemgroup[\v!correspondence]
+
+% Environment
+
+\installcommandhandler \????correspondence {correspondence} \????correspondence
+
+\unexpanded\def\correspondence_start[#environment]%
+ {\starttext
+ \begingroup
+ \def\currentcorrespondence{#environment}%
+ \dosingleempty\correspondence_start_parameters}
+
+\def\correspondence_start_parameters[#parameters]%
+ {\iffirstargument
+ \setupcurrentcorrespondence[#parameters]%
+ \fi
+ \grabbufferdatadirect{\????correspondencebuffer\currentcorrespondence}{\e!start\currentcorrespondence}{\e!stop\currentcorrespondence}}
+
+\unexpanded\def\correspondence_stop[#environment]%
+ {\correspondence_place[#environment]%
+ \endgroup
+ \stoptext}
+
+\appendtoks
+ \setuevalue{\e!start\currentcorrespondence}{\correspondence_start[\currentcorrespondence]}%
+ \setuevalue{\e!stop \currentcorrespondence}{\correspondence_stop [\currentcorrespondence]}%
+\to \everydefinecorrespondence
+
+\unexpanded\def\correspondence_content_start[#environment]%
+ {\begingroup
+ \edef\currentcorrespondence{#environment}%
+ \grabbufferdatadirect{\????correspondencebuffer\currentcorrespondence}{\e!start\currentcorrespondence\v!content}{\e!stop\currentcorrespondence\v!content}}
+
+\unexpanded\def\correspondence_content_stop[#environment]%
+ {\endgroup}
+
+\unexpanded\def\correspondence_content_get[#environment]%
+ {\edef\currentcorrespondence{#environment}%
+ \getbufferdata[\????correspondencebuffer\currentcorrespondence]}
+
+\appendtoks
+ \setuevalue{\e!start\currentcorrespondence\v!content}{\correspondence_content_start[\currentcorrespondence]}%
+ \setuevalue{\e!stop \currentcorrespondence\v!content}{\correspondence_content_stop [\currentcorrespondence]}%
+ \setuevalue{\e!get \currentcorrespondence\v!content}{\correspondence_content_get [\currentcorrespondence]}%
+\to \everydefinecorrespondence
+
+\unexpanded\def\correspondence_parameters#environment#element%
+ {\edef\currentcorrespondenceenvironment{#environment}%
+ \edef\currentcorrespondenceelement {#element}%
+ \edef\currentcorrespondencelayer {#environment:#element}%
+ \edef\currentcorrespondenceframe {#environment:#element}%
+ \edef\currentcorrespondencesection {#environment:#element}%
+ \edef\currentcorrespondencedescription{#environment:#element}%
+ \edef\currentcorrespondencehead {#environment:#element}%
+ \edef\currentcorrespondenceparagraph {#environment:#element}}
+
+% Setup
+
+\unexpanded\def\correspondence_setup[#environment]%
+ {\edef\currentcorrespondence{#environment}%
+ \setupcurrentcorrespondence}
+
+\appendtoks
+ \setuevalue{\e!setup\currentcorrespondence\e!endsetup}{\dodoubleargument\correspondence_setup[\currentcorrespondence]}%
+\to \everydefinecorrespondence
+
+% Placement
+
+\newtoks\t_correspondence_before
+\newtoks\t_correspondence_between
+\newtoks\t_correspondence_after
+
+% \unexpanded\def\correspondence_place[#environment]%
+% {\begingroup
+% \edef\currentcorrespondence{#environment}%
+% \let \currentcorrespondenceoption\currentcorrespondence
+% \ctxlua{thirddata.correspondence.place("\currentcorrespondence", {
+% bodyfont = "\correspondenceoptionparameter\c!bodyfont",
+% whitespace = "\correspondenceoptionparameter\c!whitespace",
+% interlinespace = "\correspondenceoptionparameter\c!interlinespace",
+% language = "\correspondenceoptionparameter\c!language",
+% backgroundcolor = "\correspondenceoptionparameter\c!backgroundcolor",
+% } )}%
+% \endgroup}
+
+\unexpanded\def\correspondence_place[#environment]%
+ {\begingroup
+ \edef\currentcorrespondence{#environment}%
+ \let \currentcorrespondenceoption\currentcorrespondence
+ \the\t_correspondence_before
+ \page
+ \setuplayout[\c!method=\v!correspondence]%
+ \setupheader[\c!state=\v!stop]%
+ \setupfooter[\c!state=\v!stop]%
+ \edef\p_correspondence_bodyfont {\correspondenceoptionparameter\c!bodyfont }%
+ \edef\p_correspondence_whitespace {\correspondenceoptionparameter\c!whitespace }%
+ \edef\p_correspondence_interlinespace {\correspondenceoptionparameter\c!interlinespace }%
+ \edef\p_correspondence_language {\correspondenceoptionparameter\c!language }%
+ \edef\p_correspondence_backgroundcolor{\correspondenceoptionparameter\c!backgroundcolor}%
+ \ifx\p_correspondence_bodyfont \empty \else \setupbodyfont [\p_correspondence_bodyfont ]\fi
+ \ifx\p_correspondence_whitespace \empty \else \setupwhitespace [\p_correspondence_whitespace ]\fi
+ \ifx\p_correspondence_interlinespace \empty \else \setupinterlinespace[\p_correspondence_interlinespace]\fi
+ \ifx\p_correspondence_language \empty \else \mainlanguage [\p_correspondence_language ]\fi
+ \the\t_correspondence_between
+ \ifx\p_correspondence_backgroundcolor\empty \else
+ \setupbackgrounds[\v!paper][\c!background=\v!color,\c!backgroundcolor=\p_correspondence_backgroundcolor]%
+ \fi
+ \setupbackgrounds[\v!page ][\c!background={\????correspondenceoverlay\c!backgroundimage,\????correspondenceoverlay\c!background,\????correspondenceoverlay\v!layer}]%
+ \setuppagenumbering[\c!alternative=\v!singlesided,\c!location=]%
+ \setupsubpagenumber[\c!way=\v!text,\c!state=\v!start]%
+ \resetsubpagenumber
+ \normalexpanded{\processcommalist[\correspondence_elements_access\currentcorrespondence\v!section]}{\correspondence_section_place\currentcorrespondence}%
+ \page
+ \resetsubpagenumber
+ \setuplayout[\v!reset]%
+ \the\t_correspondence_after
+ \endgroup}
+
+%D Besides the normal letter environment there are three different ways to flush
+%D the content of a letter after the text was set with a buffer etc.
+%D
+%D \startitemize
+%D \item \type{\setups[letter:place]}
+%D \item \type{\placeletter}
+%D \item \type{\placecorrespondence[letter]}
+%D \stopitemize
+
+\let\placecorrespondence\correspondence_place
+
+\appendtoks
+ \global\c_correspondence_page\zerocount
+\to \t_correspondence_before
+
+\appendtoks
+ \setuevalue{\e!place\currentcorrespondence}{\correspondence_place[\currentcorrespondence]}%
+\to \everydefinecorrespondence
+
+% Layers
+
+\installsimplecommandhandler \????correspondencelayer {correspondencelayer} \????correspondencelayer
+\installsimpleframedcommandhandler \????correspondenceframe {correspondenceframe} \????correspondenceframe
+\installcommandhandler \????correspondencelayeralternative {correspondencelayeralternative} \????correspondencelayeralternative
+
+\unexpanded\def\correspondence_layer_define[#environment][#element]%
+ {\def\currentcorrespondencelayer{#environment:#element}%
+ \let\currentcorrespondenceframe\currentcorrespondencelayer
+ \checkcorrespondencelayerparent
+ \checkcorrespondenceframeparent}
+
+\unexpanded\def\correspondence_layer_setup[#environment][#elements][#parameters]%
+ {\def\correspondence_layer_command#element%
+ {\edef\currentcorrespondencelayer{#environment:#element}%
+ \setupcurrentcorrespondencelayer[#parameters]}%
+ \processcommacommand[#elements]\correspondence_layer_command}
+
+\unexpanded\def\correspondence_frame_setup[#environment][#elements][#parameters]%
+ {\def\correspondence_frame_command#element%
+ {\edef\currentcorrespondenceframe{#environment:#element}%
+ \setupcurrentcorrespondenceframe[#parameters]}%
+ \processcommacommand[#elements]\correspondence_frame_command}
+
+\setvalue{\????correspondencelayerstate }{\!!doneafalse \!!donebfalse \!!donecfalse}
+\setvalue{\????correspondencelayerstate\v!start }{\!!doneatrue \!!donebfalse \!!donecfalse}
+\setvalue{\????correspondencelayerstate\v!stop }{\!!doneafalse \!!donebfalse \!!donecfalse}
+\setvalue{\????correspondencelayerstate\v!next }{\!!doneafalse \!!donebtrue \!!donectrue }
+\setvalue{\????correspondencelayerstate\v!repeat}{\!!doneatrue \!!donebtrue \!!donectrue }
+\setvalue{\????correspondencelayerstate\v!left }{\!!doneafalse \!!donebfalse \!!donectrue }
+\setvalue{\????correspondencelayerstate\v!right }{\!!doneafalse \!!donebtrue \!!donecfalse}
+\setvalue{\????correspondencelayerstate\v!even }{\!!doneafalse \!!donebfalse \!!donectrue }
+\setvalue{\????correspondencelayerstate\v!odd }{\!!doneafalse \!!donebtrue \!!donecfalse}
+
+\definelayer [\????correspondenceoverlay\v!layer][\c!width=\overlaywidth,\c!height=\overlayheight ]
+\defineoverlay[\????correspondenceoverlay\v!layer][\correspondence_layer_place\currentcorrespondence]
+
+\unexpanded\def\correspondence_layer_place#environment%
+ {\def\correspondence_layer_state#element%
+ {\correspondence_parameters{#environment}{#element}%
+ \expandcheckedcsname\????correspondencelayerstate{\correspondencelayerparameter\c!state}\v!stop
+ \ifnum\c_correspondence_page=\plusone
+ \if!!donea\correspondence_layer_direct\fi
+ \else\ifodd\c_correspondence_page
+ \if!!doneb\correspondence_layer_direct\fi
+ \else
+ \if!!donec\correspondence_layer_direct\fi
+ \fi\fi}%
+ \processcommacommand[\correspondence_elements_access\currentcorrespondence\v!layer]\correspondence_layer_state
+ \tightlayer[\????correspondenceoverlay\v!layer]}
+
+\unexpanded\def\correspondence_layer_direct
+ {\setlayer
+ [\????correspondenceoverlay\v!layer]
+ [ \c!x=\correspondencelayerparameter\c!x,
+ \c!y=\correspondencelayerparameter\c!y,
+ \c!preset=\correspondencelayerparameter\c!preset]
+ {\inheritedcorrespondenceframeframed
+ {\doifsomething{\correspondencelayerparameter\c!bodyfont }{\switchtobodyfont [\correspondencelayerparameter\c!bodyfont ]}%
+ \doifsomething{\correspondencelayerparameter\c!interlinespace}{\setupinterlinespace[\correspondencelayerparameter\c!interlinespace]}%
+ \usecorrespondencelayerstyleandcolor\c!style\c!color
+ \doadaptleftskip {\correspondencelayerparameter\c!leftmargin }%
+ \doadaptrightskip{\correspondencelayerparameter\c!rightmargin}%
+ \doifsymboldefinedelse{\correspondencelayerparameter\c!symbol}%
+ {\symbol[\correspondencelayerparameter\c!symbol]}
+ {\correspondence_layer_alternative_place}}}}
+
+\unexpanded\def\correspondence_layer_check[#environment][#element]%
+ {\def\currentcorrespondencelayer{#environment:#element}%
+ \ifcsname\currentcorrespondencelayerhash\s!parent\endcsname \else
+ \showmessage\m!correspondence{2}{#element,#environment}%
+ \fi}
+
+\unexpanded\def\correspondence_layer_alternative_define[#environment][#self][#parent][#parameters]%
+ {\iffourthargument
+ \definecorrespondencelayeralternative[#environment:#self][#environment:#parent][#parameters]%
+ \else
+ \definecorrespondencelayeralternative[#environment:#self][#parent]%
+ \fi}
+
+\unexpanded\def\correspondence_layer_alternative_setup[#environment][#name][#parameters]%
+ {\setupcorrespondencelayeralternative[#environment:#name][#parameters]}
+
+\unexpanded\def\correspondence_layer_alternative_place
+ {\edef\p_correspondence_layer_alternative{\correspondencelayerparameter\c!alternative}%
+ \ifcsname\namedcorrespondencelayeralternativehash{\currentcorrespondencelayer:\p_correspondence_layer_alternative}\s!parent\endcsname
+ \edef\currentcorrespondencelayeralternative{\currentcorrespondencelayer:\p_correspondence_layer_alternative}%
+ \else\ifcsname\namedcorrespondencelayeralternativehash{\currentcorrespondenceenvironment:\p_correspondence_layer_alternative}\s!parent\endcsname
+ \edef\currentcorrespondencelayeralternative{\currentcorrespondenceenvironment:\p_correspondence_layer_alternative}%
+ \else
+ \let\currentcorrespondencelayeralternative\p_correspondence_layer_alternative
+ \fi\fi
+ \edef\p_correspondence_layer_renderingsetup{\correspondencelayeralternativeparameter\c!renderingsetup}%
+ \autosetups\p_correspondence_layer_renderingsetup}
+
+\definecorrespondencelayeralternative[\v!setups][\c!renderingsetup=\????correspondencelayerrenderings:\v!setups]
+
+\startsetups[\????correspondencelayerrenderings:\v!setups]
+ \autosetups{\currentcorrespondenceenvironment:\v!layer:\currentcorrespondenceelement}
+\stopsetups
+
+\setupcorrespondencelayer
+ [ \c!state=\v!start,
+ \c!x=\zeropoint,
+ \c!y=\zeropoint,
+ \c!alternative=\s!default,
+ \c!distance=\lineheight,
+ \c!separator=\crlf]
+
+\setupcorrespondenceframe
+ [ \c!frame=\v!off,
+ \c!offset=\zeropoint,
+ \c!align=\v!flushleft]
+
+% Sections
+
+\installsimplecommandhandler \????correspondencesection {correspondencesection} \????correspondencesection
+\installcommandhandler \????correspondencesectionalternative {correspondencesectionalternative} \????correspondencesectionalternative
+
+\unexpanded\def\correspondence_section_define[#environment][#element]%
+ {\def\currentcorrespondencesection{#environment:#element}%
+ \checkcorrespondencesectionparent}
+
+\unexpanded\def\correspondence_section_setup[#environment][#elements][#parameters]%
+ {\def\correspondence_section_command#element%
+ {\edef\currentcorrespondencesection{#environment:#element}%
+ \setupcurrentcorrespondencesection[#parameters]}%
+ \processcommacommand[#elements]\correspondence_section_command}
+
+\unexpanded\def\correspondence_section_place#environment#element%
+ {\begingroup
+ \correspondence_parameters{#environment}{#element}%
+ \ifcsname\currentcorrespondencesectionhash\s!parent\endcsname
+ \doifsomethingelse{\correspondencesectionparameter\c!spacebefore}{\blank[\correspondencesectionparameter\c!spacebefore]}\endgraf
+ \correspondencesectionparameter\c!before
+ \doadaptleftskip {\correspondencesectionparameter\c!leftmargin }%
+ \doadaptrightskip{\correspondencesectionparameter\c!rightmargin}%
+ \doifsomething{\correspondencesectionparameter\c!align }{\setupalign [\correspondencesectionparameter\c!align ]}%
+ \doifsomething{\correspondencesectionparameter\c!indenting}{\setupindenting[\correspondencesectionparameter\c!indenting]}%
+ \usecorrespondencesectionstyleandcolor\c!style\c!color
+ \correspondence_section_alternative_place
+ \correspondencesectionparameter\c!after
+ \doifsomethingelse{\correspondencesectionparameter\c!spaceafter }{\blank[\correspondencesectionparameter\c!spaceafter ]}\endgraf
+ \else
+ \showmessage\m!correspondence{2}{#element,#environment}%
+ \fi
+ \endgroup}
+
+\unexpanded\def\correspondence_section_alternative_define[#environment][#self][#parent][#parameters]%
+ {\iffourthargument
+ \definecorrespondencesectionalternative[#environment:#self][#environment:#parent][#parameters]%
+ \else
+ \definecorrespondencesectionalternative[#environment:#self][#parent]%
+ \fi}
+
+\unexpanded\def\correspondence_section_alternative_setup[#environment][#name][#parameters]%
+ {\setupcorrespondencesectionalternative[#environment:#name][#parameters]}
+
+\unexpanded\def\correspondence_section_alternative_place
+ {\edef\p_correspondence_section_alternative{\correspondencesectionparameter\c!alternative}%
+ \ifcsname\namedcorrespondencesectionalternativehash{\currentcorrespondencesection:\p_correspondence_section_alternative}\s!parent\endcsname
+ \edef\currentcorrespondencesectionalternative{\currentcorrespondencelayer:\p_correspondence_section_alternative}%
+ \else\ifcsname\namedcorrespondencesectionalternativehash{\currentcorrespondenceenvironment:\p_correspondence_section_alternative}\s!parent\endcsname
+ \edef\currentcorrespondencesectionalternative{\currentcorrespondenceenvironment:\p_correspondence_section_alternative}%
+ \else
+ \let\currentcorrespondencesectionalternative\p_correspondence_section_alternative
+ \fi\fi
+ \edef\p_correspondence_section_renderingsetup{\correspondencesectionalternativeparameter\c!renderingsetup}%
+ \autosetups\p_correspondence_section_renderingsetup}
+
+\definecorrespondencesectionalternative[\v!setups][\c!renderingsetup=\????correspondencesectionrenderings:\v!setups]
+
+\startsetups[\????correspondencesectionrenderings:\v!setups]
+ \autosetups{\currentcorrespondenceenvironment:\v!section:\currentcorrespondenceelement}
+\stopsetups
+
+\setupcorrespondencesection
+ [ \c!spacebefore=\v!line,
+ \c!spaceafter=\v!line,
+ \c!spaceinbetween={\v!samepage,\v!line},
+ \c!alternative=\s!default,
+ \c!separator=\crlf]
+
+% Options
+
+\installsimplecommandhandler \????correspondenceoption {correspondenceoption} \????correspondenceoption
+
+\unexpanded\def\correspondence_option_setup[#environment]%
+ {\edef\currentcorrespondenceoption{#environment}%
+ \setupcurrentcorrespondenceoption}%
+
+\defineoverlay
+ [\????correspondenceoverlay\c!backgroundimage]
+ [\doifsomething{\correspondenceoptionparameter\c!backgroundimage}
+ {\overlayfigure{\correspondenceoptionparameter\c!backgroundimage}}]
+
+\defineoverlay
+ [\????correspondenceoverlay\c!background]
+ [\correspondenceoptionparameter\c!background]
+
+% Descriptions
+
+\installsimplecommandhandler \????correspondencedescription {correspondencedescription} \????correspondencedescription
+\installcommandhandler \????correspondencedescriptionalternative {correspondencedescriptionalternative} \????correspondencedescriptionalternative
+
+\let\m_correspondence_description_format\empty
+\let\m_correspondence_description_items \empty
+
+\unexpanded\def\correspondence_description_define[#environment][#element]%
+ {\def\currentcorrespondencedescription{#environment:#element}%
+ \checkcorrespondencedescriptionparent}
+
+\unexpanded\def\correspondence_description_setup[#environment][#elements][#parameters]%
+ {\def\correspondence_description_command#element%
+ {\edef\currentcorrespondencedescription{#environment:#element}
+ \setupcurrentcorrespondencedescription[#parameters]}%
+ \processcommacommand[#elements]\correspondence_description_command}
+
+\unexpanded\def\correspondence_description_place#environment#element%
+ {\begingroup
+ \correspondence_parameters{#environment}{#element}%
+ \ifcsname\currentcorrespondencedescriptionhash\s!parent\endcsname
+ \doifsomethingelse{\correspondencedescriptionparameter\c!textcommand}\donetrue\donefalse
+ \ifdone
+ \doifsomethingelse{\correspondencedescriptionparameter\c!spacebefore}{\blank[\correspondencedescriptionparameter\c!spacebefore]}\endgraf
+ \correspondencedescriptionparameter\c!before
+ \setbox\scratchbox\hbox
+ {\usecorrespondencedescriptionstyleandcolor\c!headstyle\c!headcolor
+ \correspondencedescriptionparameter\c!headcommand}%
+ \assignwidth
+ {\correspondencedescriptionparameter\c!width}
+ {\scratchdimen}
+ {\unhcopy\scratchbox}
+ {\correspondencedescriptionparameter\c!distance}%
+ \ctxlua{thirddata.correspondence.description_split(\!!bs\correspondencedescriptionparameter\c!textcommand\!!es)}%
+ \expandcheckedcsname\????correspondencedescriptionlocation{\correspondencedescriptionparameter\c!location}\v!left
+ \correspondencedescriptionparameter\c!after
+ \doifsomethingelse{\correspondencedescriptionparameter\c!spaceafter}{\blank[\correspondencedescriptionparameter\c!spaceafter]}\endgraf
+ \fi
+ \else
+ \showmessage\m!correspondence{3}{#element,#environment}%
+ \fi
+ \endgroup}
+
+% \unexpanded\def\correspondence_description_alternative_define[#environment][#self][#parent][#parameters]%
+% {\iffourthargument
+% \definecorrespondencedescriptionalternative[#environment:#self][#environment:#parent][#parameters]%
+% \else
+% \definecorrespondencedescriptionalternative[#environment:#self][#parent]%
+% \fi}
+%
+% \unexpanded\def\correspondence_description_alternative_setup[#environment][#name][#parameters]%
+% {\setupcorrespondencedescriptionalternative[#environment:#name][#parameters]}
+%
+% \unexpanded\def\correspondence_description_alternative_place
+% {\edef\p_correspondence_description_alternative{\correspondencedescriptionparameter\c!alternative}%
+% \ifcsname\namedcorrespondencedescriptionalternativehash{\currentcorrespondencedescription:\p_correspondence_description_alternative}\s!parent\endcsname
+% \edef\currentcorrespondencedescriptionalternative{\currentcorrespondencedescription:\p_correspondence_description_alternative}%
+% \else\ifcsname\namedcorrespondencedescriptionalternativehash{\currentcorrespondenceenvironment:\p_correspondence_description_alternative}\s!parent\endcsname
+% \edef\currentcorrespondencedescriptionalternative{\currentcorrespondenceenvironment:\p_correspondence_description_alternative}%
+% \else
+% \let\currentcorrespondencedescriptionalternative\p_correspondence_description_alternative
+% \fi\fi
+% \edef\p_correspondence_description_renderingsetup{\correspondencedescriptionalternativeparameter\c!renderingsetup}%
+% \autosetups\p_correspondence_description_renderingsetup}
+
+\setvalue{\????correspondencedescriptionlocation\v!left}%
+ {\doadaptleftskip\scratchdimen
+ \setbox\scratchbox\hbox to \scratchdimen{\box\scratchbox\hss}%
+ \noindent\llap{\box\scratchbox}\correspondence_description_place_text}
+
+\setvalue{\????correspondencedescriptionlocation\v!top}%
+ {\noindent\box\scratchbox
+ \doifsomethingelse{\correspondencedescriptionparameter\c!spaceinbetween}
+ {\blank[\correspondencedescriptionparameter\c!spaceinbetween]}
+ {\nobreak\endgraf}%
+ \doadaptleftskip {\correspondencedescriptionparameter\c!leftmargin }%
+ \doadaptrightskip{\correspondencedescriptionparameter\c!rightmargin}%
+ \correspondence_description_place_text}
+
+\setvalue{\????correspondencedescriptionlocation\v!text}%
+ {\noindent\box\scratchbox\correspondence_description_place_text}
+
+\unexpanded\def\correspondence_description_place_text
+ {\expandcheckedcsname\????correspondencedescriptionformat\m_correspondence_description_format\v!none}
+
+\setvalue{\????correspondencedescriptionformat\v!list}% todo: use a simplified version of the itemize code
+ {\def\correspondence_description_format_item#text{\startitem#text\stopitem}%
+ \dontleavehmode\vtop\bgroup
+ \leftskip\zeropoint % prevent additional offset when “location=left” is used
+ \doif{\correspondencedescriptionparameter\c!symbol}\v!none{\setupitemgroup[\v!correspondence][\v!each][\c!width=\zeropoint,distance=\zeropoint]}%
+ \startitemgroup[\v!correspondence][\v!packed,\correspondencedescriptionparameter\c!symbol]%
+ \processcommacommand[\m_correspondence_description_items]\correspondence_description_format_item
+ \stopitemgroup
+ \egroup}
+
+\setvalue{\????correspondencedescriptionformat\v!none}%
+ {\m_correspondence_description_items}
+
+% \def\correspondence_description_item#text%
+% {\begingroup
+% \setbox\scratchbox\hbox
+% {\usecorrespondencedescriptionstyleandcolor\c!symbolstyle\c!symbolcolor
+% \symbol{\correspondencedescriptionparameter\c!symbol}}%
+% \assignwidth
+% {\correspondencedescriptionparameter\c!symbolwidth}
+% {\scratchdimen}
+% {\unhcopy\scratchbox}
+% {\correspondencedescriptionparameter\c!symboldistance}%
+% \endgroup}
+
+\setupcorrespondencedescription
+ [ \c!width=\v!fit,
+ \c!distance=1em,
+ \c!symbol=dash]
+
+% Paragraphs
+
+\installsimplecommandhandler \????correspondenceparagraph {correspondenceparagraph} \????correspondenceparagraph
+\installcommandhandler \????correspondenceparagraphalternative {correspondenceparagraphalternative} \????correspondenceparagraphalternative
+
+% \newtoks\t_correspondence_paragraphs
+%
+% \appendtoks
+% \the\t_correspondence_paragraphs
+% \to \t_correspondence_before
+%
+% \unexpanded\def\correspondence_paragraph_define[#environment][#element]%
+% {\def\currentcorrespondenceparagraph{#environment:#element}%
+% \checkcorrespondenceparagraphparent
+% \t_correspondence_paragraphs\expandafter{\the\t_correspondence_paragraphs\correspondence_paragraph_commands[#environment][#element]}}
+
+\unexpanded\def\correspondence_paragraph_define[#environment][#element]%
+ {\def\currentcorrespondenceparagraph{#environment:#element}%
+ \checkcorrespondenceparagraphparent
+ \correspondence_paragraph_commands[#environment][#element]}
+
+\unexpanded\def\correspondence_paragraph_setup[#environment][#elements][#parameters]%
+ {\def\correspondence_paragraph_command#element%
+ {\edef\currentcorrespondenceparagraph{#environment:#element}%
+ \setupcurrentcorrespondenceparagraph[#parameters]}%
+ \processcommacommand[#elements]\correspondence_paragraph_command}
+
+\unexpanded\def\correspondence_paragraph_commands[#environment][#element]%
+ {\setuevalue{\e!start#element}{\correspondence_paragraph_start[#environment][#element]}%
+ \setuevalue{\e!stop #element}{\correspondence_paragraph_stop [#environment][#element]}}
+
+\unexpanded\def\correspondence_paragraph_start[#environment][#element]%
+ {\begingroup
+ \correspondence_parameters{#environment}{#element}%
+ \dodoubleempty\correspondence_paragraph_start_parameters}%
+
+\unexpanded\def\correspondence_paragraph_start_parameters[#parameters][#dummy]% #dummy removes the linebreak before the first line
+ {\iffirstargument
+ \setupcurrentcorrespondenceparagraph[#parameters]%
+ \fi
+ \grabbufferdatadirect{\????correspondenceparagraphbuffer\currentcorrespondenceparagraph}{\e!start\currentcorrespondenceelement}{\e!stop\currentcorrespondenceelement}}
+
+\unexpanded\def\correspondence_paragraph_stop[#environment][#element]%
+ {\doifsomethingelse{\correspondenceparagraphparameter\c!spacebefore}{\blank[\correspondenceparagraphparameter\c!spacebefore]}\endgraf
+ \correspondence_paragraph_alternative_place
+ \doifsomethingelse{\correspondenceparagraphparameter\c!spaceafter }{\blank[\correspondenceparagraphparameter\c!spaceafter ]}\endgraf
+ \endgroup}
+
+\unexpanded\def\correspondence_paragraph_alternative_define[#environment][#self][#parent][#parameters]%
+ {\iffourthargument
+ \definecorrespondenceparagraphalternative[#environment:#self][#environment:#parent][#parameters]%
+ \else
+ \definecorrespondenceparagraphalternative[#environment:#self][#parent]%
+ \fi}
+
+\unexpanded\def\correspondence_paragraph_alternative_setup[#environment][#name][#parameters]%
+ {\setupcorrespondenceparagraphalternative[#environment:#name][#parameters]}
+
+\unexpanded\def\correspondence_paragraph_alternative_place
+ {\edef\p_correspondence_paragraph_alternative{\correspondenceparagraphparameter\c!alternative}%
+ \ifcsname\namedcorrespondenceparagraphalternativehash{\currentcorrespondenceparagraph:\p_correspondence_paragraph_alternative}\s!parent\endcsname
+ \edef\currentcorrespondenceparagraphalternative{\currentcorrespondenceparagraph:\p_correspondence_paragraph_alternative}%
+ \else\ifcsname\namedcorrespondenceparagraphalternativehash{\currentcorrespondenceenvironment:\p_correspondence_paragraph_alternative}\s!parent\endcsname
+ \edef\currentcorrespondenceparagraphalternative{\currentcorrespondenceenvironment:\p_correspondence_paragraph_alternative}%
+ \else
+ \let\currentcorrespondenceparagraphalternative\p_correspondence_paragraph_alternative
+ \fi\fi
+ \edef\p_correspondence_paragraph_renderingsetup{\correspondenceparagraphalternativeparameter\c!renderingsetup}%
+ \autosetups\p_correspondence_paragraph_renderingsetup}
+
+\definecorrespondenceparagraphalternative[\s!default ][\c!renderingsetup=\????correspondenceparagraphrenderings:\s!default ]
+\definecorrespondenceparagraphalternative[\v!columns ][\c!renderingsetup=\????correspondenceparagraphrenderings:\v!columns ]
+\definecorrespondenceparagraphalternative[\c!lefttext ][\c!renderingsetup=\????correspondenceparagraphrenderings:\c!lefttext ]
+\definecorrespondenceparagraphalternative[\c!middletext][\c!renderingsetup=\????correspondenceparagraphrenderings:\c!middletext]
+\definecorrespondenceparagraphalternative[\c!righttext ][\c!renderingsetup=\????correspondenceparagraphrenderings:\c!righttext ]
+
+\startsetups[\????correspondenceparagraphrenderings:\s!default]
+ \ifdefined\currentparentcorrespondenceparagraph
+ \getbufferdata[\????correspondenceparagraphbuffer\currentparentcorrespondenceparagraph]
+ \else
+ \getbufferdata[\????correspondenceparagraphbuffer\currentcorrespondenceparagraph ]
+ \fi
+\stopsetups
+
+\newbox \b_correspondence_paragraph
+\newcount\c_correspondence_paragraph
+
+\unexpanded\def\correspondence_paragraph_columns_start
+ {\begingroup
+ \global\c_correspondence_paragraph\zerocount
+ \edef\p_correspondence_paragraph_n {\correspondenceparagraphparameter\c!n }%
+ \edef\p_correspondence_paragraph_distance{\correspondenceparagraphparameter\c!distance}%
+ \letcorrespondenceparagraphparameter\c!alternative\v!default
+ \dontleavehmode\hbox\bgroup}
+
+\unexpanded\def\correspondence_paragraph_columns_stop
+ {\egroup
+ \endgroup}
+
+\unexpanded\def\correspondence_paragraph_columns_place
+ {\begingroup
+ \global\advance\c_correspondence_paragraph\plusone
+ \let\currentparentcorrespondenceparagraph\currentcorrespondenceparagraph
+ \chaintocurrentcorrespondenceparagraph{\currentparentcorrespondenceparagraph:\number\c_correspondence_paragraph}%
+ \edef\currentcorrespondenceparagraph {\currentparentcorrespondenceparagraph:\number\c_correspondence_paragraph}%
+ \edef\p_correspondence_columns_width {\correspondenceparagraphparameter\c!width}%
+ \setbox\b_correspondence_paragraph\vtop\bgroup
+ \ifx\p_correspondence_columns_width\empty \else \hsize\p_correspondence_columns_width \fi
+ \usealignparameter\correspondenceparagraphparameter
+ \begstrut
+ \usecorrespondenceparagraphstyleandcolor\c!style\c!color
+ \correspondence_paragraph_alternative_place
+ \endstrut
+ \egroup
+ \ifzeropt\p_correspondence_columns_width \else
+ \ifnum\c_correspondence_paragraph>\p_correspondence_paragraph_n
+ % more columns are used than specified
+ \else\ifnum\c_correspondence_paragraph=\p_correspondence_paragraph_n
+ \box\b_correspondence_paragraph
+ \else
+ \box\b_correspondence_paragraph
+ \hskip\p_correspondence_paragraph_distance
+ \fi\fi
+ \fi
+ \endgroup}
+
+\startsetups[\????correspondenceparagraphrenderings:\v!columns]
+
+ \correspondence_paragraph_columns_start
+ \dorecurse\p_correspondence_paragraph_n\correspondence_paragraph_columns_place
+ \correspondence_paragraph_columns_stop
+
+\stopsetups
+
+\startsetups[\????correspondenceparagraphrenderings:\c!lefttext]
+
+ \correspondenceparagraphparameter\c!lefttext
+
+\stopsetups
+
+\startsetups[\????correspondenceparagraphrenderings:\c!middletext]
+
+ \correspondenceparagraphparameter\c!middletext
+
+\stopsetups
+
+\startsetups[\????correspondenceparagraphrenderings:\c!righttext]
+
+ \correspondenceparagraphparameter\c!righttext
+
+\stopsetups
+
+\setupcorrespondenceparagraph
+ [\c!spacebefore=\v!line,
+ \c!spaceafter=\v!line,
+ \c!alternative=\s!default,
+ \c!distance=\zeropoint,
+ \c!width=\zeropoint,
+ \c!n=3]
+
+% Heading
+
+\installframedcommandhandler \????correspondencehead {correspondencehead} \????correspondencehead
+\installcommandhandler \????correspondenceheadalternative {correspondenceheadalternative} \????correspondenceheadalternative
+
+\appendtoks
+ \definelist [\currentcorrespondencehead]% \definelist [\????correspondenceheadlist \currentcorrespondencehead]
+ \definemarking[\currentcorrespondencehead]% \definemarking[\????correspondenceheadmarking\currentcorrespondencehead]
+\to \everydefinecorrespondencehead
+
+% \newtoks\t_correspondence_headings
+%
+% \appendtoks
+% \the\t_correspondence_headings
+% \to \t_correspondence_before
+%
+% \unexpanded\def\correspondence_head_define[#environment][#element]%
+% {\def\currentcorrespondencehead{#environment:#element}%
+% \checkcorrespondenceheadparent
+% \t_correspondence_headings\expandafter{\the\t_correspondence_headings\correspondence_head_commands[#environment][#element]}}
+
+\unexpanded\def\correspondence_head_define[#environment][#element]%
+ {\def\currentcorrespondencehead{#environment:#element}%
+ \checkcorrespondenceheadparent
+ \correspondence_head_commands[#environment][#element]}
+
+\unexpanded\def\correspondence_head_setup[#environment][#elements][#parameters]%
+ {\def\correspondence_head_command#element%
+ {\edef\currentcorrespondencehead{#environment:#element}%
+ \setupcurrentcorrespondencehead[#parameters]}%
+ \processcommacommand[#elements]\correspondence_head_command}
+
+\unexpanded\def\correspondence_head_commands[#environment][#element]%
+ {%setuevalue {#element}{\correspondence_head_direct[#environment][#element]}%
+ \setuevalue{\e!start#element}{\correspondence_head_start [#environment][#element]}%
+ \setuevalue{\e!stop #element}{\correspondence_head_stop [#environment][#element]}}
+
+% \unexpanded\def\correspondence_head_direct[#environment][#element]%
+% {\begingroup
+% \correspondence_parameters{#environment}{#element}%
+% \doifnextbgroupelse{\dosinglegroupempty\correspondence_head_direct_argument}{\dosingleempty\correspondence_head_direct_parameters}}
+%
+% \unexpanded\def\correspondence_head_direct_argument#title%
+% {\setcorrespondenceheadparameter\c!title{#title}%
+% \correspondence_head_alternative_place
+% \endgroup}
+%
+% \unexpanded\def\correspondence_head_direct_parameters[#parameters]%
+% {\iffirstargument
+% \setupcurrentcorrespondencehead[#parameters]%
+% \fi
+% \correspondence_head_alternative_place
+% \endgroup}
+
+\unexpanded\def\correspondence_head_start[#environment][#element]%
+ {\begingroup
+ \correspondence_parameters{#environment}{#element}%
+ \dodoubleempty\correspondence_head_start_parameters}
+
+\unexpanded\def\correspondence_head_start_parameters[#parameters][#dummy]%
+ {\iffirstargument
+ \setupcurrentcorrespondencehead[#parameters]%
+ \fi
+ \correspondenceheadparameter\c!beforesection
+ \correspondence_head_alternative_place}
+
+\unexpanded\def\correspondence_head_stop[#environment][#element]%
+ {\correspondenceheadparameter\c!aftersection
+ \endgroup}
+
+\unexpanded\def\correspondence_head_alternative_define[#environment][#self][#parent][#parameters]%
+ {\iffourthargument
+ \definecorrespondenceheadalternative[#environment:#self][#environment:#parent][#parameters]%
+ \else
+ \definecorrespondenceheadalternative[#environment:#self][#parent]%
+ \fi}
+
+\unexpanded\def\correspondence_head_alternative_setup[#environment][#name][#parameters]%
+ {\setupcorrespondenceheadalternative[#environment:#name][#parameters]}
+
+\unexpanded\def\correspondence_head_alternative_place
+ {\edef\p_correspondence_head_alternative{\correspondenceheadparameter\c!alternative}%
+ \ifcsname\namedcorrespondenceheadalternativehash{\currentcorrespondencehead:\p_correspondence_head_alternative}\s!parent\endcsname
+ \edef\currentcorrespondenceheadalternative{\currentcorrespondencehead:\p_correspondence_head_alternative}%
+ \else\ifcsname\namedcorrespondenceheadalternativehash{\currentcorrespondenceenvironment:\p_correspondence_head_alternative}\s!parent\endcsname
+ \edef\currentcorrespondenceheadalternative{\currentcorrespondenceenvironment:\p_correspondence_head_alternative}%
+ \else
+ \let\currentcorrespondenceheadalternative\p_correspondence_head_alternative
+ \fi\fi
+ \edef\p_correspondence_section_renderingsetup{\correspondenceheadalternativeparameter\c!renderingsetup}%
+ \autosetups\p_correspondence_section_renderingsetup}
+
+\unexpanded\def\correspondenceheadtitle
+ {\begingroup
+ \usecorrespondenceheadstyleandcolor\c!style\c!color
+ \correspondenceheadparameter\c!textcommand{\begstrut\correspondenceheadparameter\c!title\endstrut}%
+ \endgroup}
+
+\definecorrespondenceheadalternative[\s!default ][\c!renderingsetup=\????correspondenceheadrenderings:\s!default ]
+\definecorrespondenceheadalternative[\v!margin ][\c!renderingsetup=\????correspondenceheadrenderings:\v!margin ]
+\definecorrespondenceheadalternative[\v!inmargin][\c!renderingsetup=\????correspondenceheadrenderings:\v!inmargin]
+
+\startsetups[\????correspondenceheadrenderings:\s!default]
+
+ \edef\p_spacebefore{\correspondenceheadparameter\c!spacebefore}
+ \edef\p_spaceafter {\correspondenceheadparameter\c!spaceafter }
+
+ \ifx\p_spacebefore\empty \else
+ \blank[\p_spacebefore]
+ \fi
+
+ \vbox\bgroup
+ \usealignparameter\correspondenceheadparameter
+ \correspondenceheadtitle
+ \egroup
+
+ \ifx\p_spaceafter\empty \else
+ \blank[\p_spaceafter]
+ \fi
+
+\stopsetups
+
+\startsetups[\????correspondenceheadrenderings:\v!margin]
+
+ \dontleavehmode\llap\bgroup
+ \vtop\bgroup
+ \hsize\leftmarginwidth
+ \usealignparameter\correspondenceheadparameter
+ \correspondenceheadtitle
+ \egroup
+ \hskip\leftmargindistance
+ \egroup
+
+ \blank[\v!overlay]
+
+\stopsetups
+
+\setupcorrespondencehead
+ [ \c!spacebefore=\v!line,
+ \c!spaceafter={\v!samepage,\v!line},
+ \c!alternative=\s!default,
+ \c!align=\v!middle,
+ \c!style=\v!bold]
+
+% Elements
+
+\unexpanded\def\correspondence_element_define[#environment][#type][#element][#name]%
+ {\edef\m_correspondence_element_type{#type}%
+ \ifx\m_correspondence_element_type\v!section
+ \expandafter\correspondence_element_define_section
+ \else
+ \expandafter\correspondence_element_define_layer
+ \fi[#environment][#type][#element][#name]}
+
+\def\correspondence_element_define_section[#environment][#type][#element][#name]#content%
+ {\definecorrespondencesectionalternative[#environment:#element:#name][\c!renderingsetup=\????correspondencesectionrenderings:\v!command]%
+ \setvalue{\????correspondenceelement:#environment:#type:#element:#name}{#content}}
+
+\def\correspondence_element_define_layer[#environment][#type][#element][#name]#content%
+ {\definecorrespondencelayeralternative[#environment:#element:#name][\c!renderingsetup=\????correspondencelayerrenderings:\v!command]%
+ \setvalue{\????correspondenceelement:#environment:#type:#element:#name}{#content}}
+
+\startsetups[\????correspondencesectionrenderings:\v!command]
+ \correspondence_element_place[\currentcorrespondenceenvironment][\v!section][\currentcorrespondenceelement][\correspondencesectionparameter\c!alternative]
+\stopsetups
+
+\startsetups[\????correspondencelayerrenderings:\v!command]
+ \correspondence_element_place[\currentcorrespondenceenvironment][\v!layer][\currentcorrespondenceelement][\correspondencelayerparameter\c!alternative]
+\stopsetups
+
+\unexpanded\def\correspondence_element_place[#environment][#type][#element][#name]%
+ {\expandcheckedcsname{\????correspondenceelement:#environment:#type:#element:}{#name}\s!default}
+
+% Files
+
+\unexpanded\def\correspondence_file_load[#environment][#names]%
+ {\def\correspondence_file_command#name%
+ {\ctxlua{thirddata.correspondence.file("#environment","#name")}}%
+ \processcommacommand[#names]\correspondence_file_command}
+
+% Style
+
+\installsimplecommandhandler \????correspondencestyle {correspondencestyle} \????correspondencestyle
+
+\unexpanded\def\correspondence_style_setup[#environment][#elements][#parameters]%
+ {\def\correspondence_style_command#element%
+ {\edef\currentcorrespondencestyle{#environment:#element}%
+ \setupcurrentcorrespondencestyle[#parameters]}%
+ \processcommacommand[#elements]\correspondence_style_command}
+
+\unexpanded\def\correspondence_style_width#environment#element#content%
+ {\edef\currentcorrespondencestyle {#environment:#element}%
+ \edef\p_correspondence_style_width{\correspondencestyleparameter\c!width}%
+ \hbox \ifx\p_correspondence_style_width\empty \else to \p_correspondence_style_width \fi{#content\hss}}
+
+\unexpanded\def\formattedcorrespondenceparameter#element%
+ {\begingroup
+ \edef\currentcorrespondenceelement{#element}%
+ \edef\currentcorrespondencestyle {\currentcorrespondence:#element}%
+ \usecorrespondencestylestyleandcolor\c!style\c!color
+ \correspondenceparameter\currentcorrespondenceelement
+ \endgroup}
+
+%D \section{Layout}
+%D
+%D \startitemize[packed]
+%D \item firstpage,
+%D \item secondpage,
+%D \item leftpage and
+%D \item rightpage.
+%D \stopitemize
+
+\newcount\c_correspondence_page
+
+\installlayoutmethod \v!correspondence
+ {\global\advance\c_correspondence_page\plusone
+ \ifnum\c_correspondence_page=\plusone
+ \changetolayout{\????correspondencelayout\currentcorrespondence\v!firstpage}%
+ \else\ifodd\c_correspondence_page
+ \changetolayout{\????correspondencelayout\currentcorrespondence\v!rightpage}%
+ \else
+ \changetolayout{\????correspondencelayout\currentcorrespondence\v!leftpage }%
+ \fi\fi}
+
+\unexpanded\def\correspondence_layout_define
+ {\dotripleempty\correspondence_layout_define_indeed}
+
+\unexpanded\def\correspondence_layout_define_indeed[#environment][#self][#parent]%
+ {\def\m_correspondence_layout_self {#environment#self}%
+ \def\m_correspondence_layout_parent{#environment#parent}%
+ \ifthirdargument
+ \definelayout[\????correspondencelayout\m_correspondence_layout_self][\????correspondencelayout\m_correspondence_layout_parent]%
+ \else
+ \definelayout[\????correspondencelayout\m_correspondence_layout_self]%
+ \fi}
+
+\unexpanded\def\correspondence_layout_setup[#environment][#elements][#parameters]%
+ {\def\correspondence_layout_command#element%
+ {\def\m_correspondence_layout_current{#environment#element}%
+ \setuplayout[\????correspondencelayout\m_correspondence_layout_current][#parameters]}%
+ \processcommacommand[#elements]\correspondence_layout_command}
+
+\appendtoks
+ \correspondence_layout_define[\currentcorrespondence][\v!firstpage ]%
+ \correspondence_layout_define[\currentcorrespondence][\v!secondpage]%
+ \correspondence_layout_define[\currentcorrespondence][\v!leftpage ][\v!secondpage]%
+ \correspondence_layout_define[\currentcorrespondence][\v!rightpage ][\v!secondpage]%
+\to \everydefinecorrespondence
+
+% Lists
+
+\def\correspondence_elements_define[#environment][#name][#list]%
+ {\ctxlua{thirddata.correspondence.elements_define("#environment","#name","#list")}}
+
+\def\correspondence_elements_access#environment#name%
+ {\ctxlua{thirddata.correspondence.elements_access("#environment","#name")}}
+
+% Extras
+
+\definesymbol[\v!cutmark][{\blackrule[\c!width=4mm,\c!height=\linewidth]}]
+
+\protect \endinput