diff options
author | Karl Berry <karl@freefriends.org> | 2010-09-08 23:10:15 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2010-09-08 23:10:15 +0000 |
commit | f328f8f461746d6d176bc5066247026665c2b141 (patch) | |
tree | 0e295aca8dd3bf56c1da940b81bc358b9c4dec32 /Master/texmf-dist/source/latex | |
parent | 09c06007c38c5bd1bfe5a3b367fe3a273277da8d (diff) |
isodoc update (25aug10)
git-svn-id: svn://tug.org/texlive/trunk@19617 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/latex')
-rw-r--r-- | Master/texmf-dist/source/latex/isodoc/isodoc.dtx | 837 | ||||
-rw-r--r-- | Master/texmf-dist/source/latex/isodoc/isodoc_letterpaper.dtx | 2147 |
2 files changed, 2649 insertions, 335 deletions
diff --git a/Master/texmf-dist/source/latex/isodoc/isodoc.dtx b/Master/texmf-dist/source/latex/isodoc/isodoc.dtx index 0f725ef2ec9..f59c2396af1 100644 --- a/Master/texmf-dist/source/latex/isodoc/isodoc.dtx +++ b/Master/texmf-dist/source/latex/isodoc/isodoc.dtx @@ -22,18 +22,16 @@ %<class>\NeedsTeXFormat{LaTeX2e}[1999/12/01] %<class>\ProvidesClass{isodoc}% %<*class> - [2009/11/16 v0.7 isodoc class for letters and invoices] + [2010/08/25 v0.8 isodoc class for letters and invoices] %</class> -%<class>\ifnum\pdfoutput=1\else\ClassError{isodoc}{Compile me with pdflatex!}{} -%<class>\fi +%<class>\ifx\pdfoutput\undefined\else% +%<class>\ifnum\pdfoutput=1\else\ClassError{isodoc}{Compile me with pdflatex or xelatex!}{} +%<class>\fi\fi %<*driver> \documentclass{ltxdoc} -\usepackage[a4paper,margin=25mm,left=50mm,nohead]{geometry} -\usepackage{txfonts}\pdfprotrudechars=1 \usepackage[l2tabu,orthodox]{nag} \usepackage{ctable,pdfpages,paralist,eurosym,sverb,ltablex} \parindent0pt\parskip1ex -\EnableCrossrefs \PageIndex \IndexPrologue{\section*{Index}} \newcommand{\FIG}[3]{ % pdfname label caption @@ -54,12 +52,11 @@ \def\CMP#1{\C{#1}\marginpar{\C{#1}}} \begin{document} \DocInput{isodoc.dtx} - \PrintIndex \end{document} %</driver> % \fi % -% \CheckSum{1941} +% \CheckSum{2301} % % \CharacterTable % {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z @@ -139,7 +136,7 @@ % \lastpage@putlabel, \let, \long, \multicolumn, \newcommand, \newcount, % \newdimen, \newenvironment, \newif, \newlabel, \noindent, \number, \o, \or, % \pageref, \pagestyle, \paperheight, \paperwidth, \par, \parindent, \parskip, -% \pdfinfo, \pdfprotrudechars, \qquad, \quad, \raggedright, \raisebox, \relax, +% \pdfinfo, \qquad, \quad, \raggedright, \raisebox, \relax, % \rightskip, \rule, \scriptsize, \scshape, \selectlanguage, \setbox, % \setcounter, \setkeys, \sffamily, \space, \string, \tbfigures, \textbf, % \textbullet, \thepage, \thispagestyle, \undefined, \unskip, \usepackage, @@ -238,25 +235,27 @@ % source, although several will normally only be used in style files (such as % |company|) and some only in the document source (such as |to| or |opening|). % -% \OPTS{Language}{Currently only a few languages are defined. As I am not particularly +% \OPTS{Language}{The options described here relate to the language used +% for the isodoc interface (headings, footings, date, banking data and so +% on.) This language is independent of the language you set with the |babel| +% or |polyglossia| packages. So, for example, you can write your document in english and +% use dutch for the interface. Also, use of |babel| or |polyglossia| is not required. +% +% Currently only a few interface languages are defined. As I am not particularly % strong in the translation of administrative terminology, please feel free to % send me corrections. And if you don't find your own language here, please send -% me your translations and your language will be added. The keywords below set -% the language, English is used by default.}{ -% \T{dutch} & Set language to Dutch, \NN -% \T{english} & English,\NN -% \T{german} & German,\NN -% \T{american} & American,\NN -% \T{norwegian} & Norwegian,\NN -% \T{french} & or French.\NN -% \T{foreign} & Use this key if you send your letter to a foreign -% country. With it, your country will be added to -% return and logo addresses, your zip code will be -% prefixed with your country code, telephone numbers will -% be prefixed with +31-- (or whatever your \T{areacode} -% option has been set to) instead of just a 0. In -% the \C{accountdata} command, it causes \textsc{iban} en -% \textsc{bic} code to be included.\NN +% me your translations and your language will be added. +% +% The options below set the language, UKenglish is used by default. Preferably, the |language| +% option should be used; the other options are there for compatibility with earlier versions.}{ +% \T{language = ...} & sets the interface language to any language defined by the class. +% Currently these are: UKenglish, USenglish, french, german, dutch, +% italian, spanish, catalan, norsk, serbian\NN +% \T{dutch} & a synonym for |language = dutch|, \NN +% \T{english} & a synonym for |language = UKenglish|,\NN +% \T{german} & a synonym for |language = german|,\NN +% \T{american} & a synonym for |language = USenglish|,\NN +% \T{french} & a synonym for |language = french|.\NN % } % % \OPTS{Logo}{Information about the sender is defined here. The logo, by @@ -284,6 +283,15 @@ % key was used.\NN % \T{countrycode = ...}& Sender's country code. For The Netherlands: NL\NN % \T{areacode = ...} & Sender's area code. For The Netherlands: 31\NN +% \T{foreign} & Use this key if you send your letter to a foreign +% country. With it, your country will be added to +% return and logo addresses, your zip code will be +% prefixed with your country code, telephone numbers will +% be prefixed with +31-- (or whatever your \T{areacode} +% option has been set to) instead of just a 0. In +% the \C{accountdata} command, it causes \textsc{iban} en +% \textsc{bic} code to be included, unless the |localbank| +% option is used.\NN % } % % \OPTS{Address window}{The addressee's address is printed in a window. The @@ -324,6 +332,7 @@ % bullets.\NN % } % +% \pagebreak % \OPTS{Header fields}{Under the address window, a header is printed. The % page is vertically divided in six columns, one each for the left and right % margins, and four which, in the header, @@ -360,7 +369,6 @@ % third fields.\NN % } % -% \pagebreak %%% % \OPTS{Opening and Closing}{A letter is started with an opening -- something % like `Dear John', and ended with a closing -- something like % `Regards,\T{<newline>}Betty', perhaps with an autograph (or white space) in between.}{ @@ -399,8 +407,8 @@ % \T{[no]footer} & enables or disables printing a page footer; there is room % for upto four fields, if you set five fields, the last % one will appear in the right margin.\NN -% \T{phoneprefix} & prefix for phone numbers. The default is `0'; will be changed -% into `+$<$areacode$>$-' if the \T{foreign} option is used.\NN +% \T{phoneprefix} & prefix for phone numbers. The default is `0'; will be changed +% into `+$<$areacode$>$-' if the \T{foreign} option is used.\NN % \T{phone = ...} & if not empty, prints `phone' in the first field of the % page footer, with the contents under it, prefixed with a~0 or, % if the \T{foreign} option was used, the areacode (set with the @@ -464,9 +472,6 @@ % \T{[no]fill} & Use the \T{fill} keyword to justify text both left and % right; the default is \T{nofill}: left justification % only.\NN -% \T{fontpackage = ...} & The default font is Latin Modern (\T{fontpackage = lmodern}), -% but with the \T{fontpackage} keyword you can select another -% package, like \T{txfonts} or \T{osf-txfonts}.\NN % \T{shift = ...} & The many textpositions in isodoc are defined in millimeters, % but sometimes printers show an aberration in their horizontal % or vertical printing position. You can correct for this with the @@ -502,7 +507,7 @@ % acceptaccount &areacode &email &phone &who \NN % acceptaddress &autograph &enclosures &phoneprefix &yourletter \NN % acceptcents &bic &fax &returnaddress &yourref \NN -% acceptdesc &cellphone &fontpackage &rightaddress &zip \NN +% acceptdesc &cellphone &rightaddress &zip \NN % acceptdescription &chamber &forcedate &routingno & \NN % accepteuros &city &iban &signature & \NN % acceptreference &closing &leftaddress &street & \NN @@ -744,22 +749,19 @@ % spacing in tables and more. |ctable| also brings us |array|, |tabularx|, % |color|, and |xkeyval|. |eurosym| is used for the euro symbol. % \begin{macrocode} -\RequirePackage{ctable,eurosym,graphicx,stringstrings} -\RequirePackage[dutch,norsk,german,frenchb,american,english]{babel} +\RequirePackage{ctable,eurosym,graphicx,stringstrings,calc} % \end{macrocode} % % Since the name of the package contains 'iso', make the page A4. % For textpos, divide the page in 210 columns of 1mm each % and 297 rows, 1mm each. The page is vertically divided in 6 columns of % 35mm each: a left margin, 4 fields, and a right margin. -% If the class option |landscape| is used, the paper still stays divided in -% 1mm x 1mm cells. This may be useful if you use the isodoc class for other -% purposes. % % \begin{macrocode} -\RequirePackage[a4paper,margin=35mm,nofoot,head=\baselineskip]{geometry} +\RequirePackage[nofoot,head=\baselineskip]{geometry} \RequirePackage[absolute,overlay]{textpos} -\ifdim\paperwidth>\paperheight\TPGrid{297}{210}\else\TPGrid{210}{297}\fi +\geometry{papersize={210mm,297mm},margin=35mm} +\TPGrid{210}{297} % \end{macrocode} % Several colors can be changed, by using the |\definecolor| command; % the defaults (all black) are set here:\\ @@ -781,18 +783,7 @@ % \begin{macrocode} \RequirePackage{fancyhdr} \pagestyle{fancy} -\fancyhf{} -\if@twoside - \fancyhead[LE,RO]{\color{headingcolor}% - \pagetext\ \thepage\ \oftext{} \pageref{LastPageOf\thelettercount}} - \fancyhead[RE,LO]{\color{headingcolor}% - \totext: \toname\ (\date)} -\else - \fancyhead[L]{\color{headingcolor}% - \totext: \toname\ (\date)} - \fancyhead[R]{\color{headingcolor}% - \pagetext\ \thepage\ \oftext{} \pageref{LastPageOf\thelettercount}} -\fi +\AtBeginDocument{\addtolength{\headheight}{\baselineskip}} % \end{macrocode} % The |\xxxdoc| commands (like |\dutchdoc|) set the default language via % |\AtBeginDocument|, but other language changes should be done without that. @@ -816,13 +807,6 @@ % \end{macrocode} % \subsection{The options and their defaults} % \subsubsection{General options} -% The default font is latin modern (using the |lmodern| package). -% \DescribeMacro{fontpackage} -% The |fontpackage| option can be used to select another font. -% \begin{macrocode} -\define@key{isodoc}{fontpackage}{\def\fontpackage{#1}} - \def\fontpackage{lmodern} -% \end{macrocode} % The default shift is 0mm,0mm. % \DescribeMacro{shift} % The |shift| option moves the output to the right and down: @@ -837,10 +821,20 @@ % be sent abroad; this is set with the |foreign| option, false by default: % \DescribeMacro{foreign} % \begin{macrocode} -\define@key{isodoc}{cityzip}[\cityziptrue]{\cityziptrue} - \newif\ifcityzip\cityzipfalse \define@key{isodoc}{foreign}[\foreigntrue]{\foreigntrue} \newif\ifforeign\foreignfalse +% \end{macrocode} +% \DescribeMacro{cityzip} +% By default, the zip code is typeset before the city. +% The |cityzip| option reverses this: +% \begin{macrocode} +\define@key{isodoc}{cityzip}[\cityziptrue]{\cityziptrue} + \newif\ifcityzip\cityzipfalse +% \end{macrocode} +% \DescribeMacro{localbank} +% When the |foreign| option is used, \textsc{iban} and \textsc{bic} codes are +% reported, but this can be suppressed with the |localbank| option: +% \begin{macrocode} \define@key{isodoc}{localbank}[\localbanktrue]{\localbanktrue} \newif\iflocalbank\localbankfalse % \end{macrocode} @@ -849,17 +843,16 @@ % \DescribeMacro{german} % \DescribeMacro{american} % \DescribeMacro{french} -% \DescribeMacro{norwegian} +% \DescribeMacro{language} % The following keys set the language; English, set at the |\EndOfClass| is the % default. % \begin{macrocode} -\define@key{isodoc}{dutch} []{\dutchdoc} -\define@key{isodoc}{english} []{\englishdoc} - \AtEndOfClass{\englishdoc} -\define@key{isodoc}{german} []{\germandoc} -\define@key{isodoc}{american}[]{\americandoc} -\define@key{isodoc}{french} []{\frenchdoc} -\define@key{isodoc}{norwegian} []{\norwegiandoc} +\define@key{isodoc}{dutch} []{\isodoc@dutch} +\define@key{isodoc}{english} []{\isodoc@UKenglish} +\define@key{isodoc}{german} []{\isodoc@german} +\define@key{isodoc}{american}[]{\isodoc@USenglish} +\define@key{isodoc}{french} []{\isodoc@french} +\define@key{isodoc}{language}{\csname isodoc@#1\endcsname} % \end{macrocode} % \DescribeMacro{fill} % \DescribeMacro{nofill} @@ -972,9 +965,12 @@ % at 98mm from the top of the paper, but it can be shifted with % the |bodyshift| option. % \begin{macrocode} -\define@key{isodoc}{bodyshift} {\advance\headerpos#1\advance\bodyskip#1mm} - \newdimen\bodyskip\bodyskip=0mm +\define@key{isodoc}{bodyshift} {\advance\headerpos#1} \newcount\headerpos\headerpos=98 +\newcount\footerpos\footerpos=275 +\newcount\subjectpos +\newcount\openingpos +\newcount\textskip % \end{macrocode} % % \subsubsection{Footer} @@ -1100,7 +1096,6 @@ % |openingcomma| has been used to set it to a different character, like a % semicolon or an exclamation mark. % \begin{macrocode} -\newcount\openingpos \define@key{isodoc}{opening} {\def\opening{#1}} \def\openingcomma{,} \define@key{isodoc}{openingcomma}{\def\openingcomma{#1}} @@ -1166,7 +1161,7 @@ \define@key{isodoc}{chamber} {\def\chamber{#1}} \def\chamber{Undefined{chamber}} \define@key{isodoc}{currency} {\def\currency{#1}} - \def\currency{\EUR} + \def\currency{\EUR} % \end{macrocode} % \DescribeMacro{accept} % \DescribeMacro{acceptaccount} @@ -1317,8 +1312,6 @@ \newcommand{\setupdocument}[1]{ \setkeys{isodoc}{#1} \iffooter\else\geometry{bottom=25mm}\fi - \RequirePackage[T1]{fontenc} - \RequirePackage{\fontpackage}\pdfprotrudechars=1 } % \end{macrocode} % \DescribeMacro{\@isomakedate} @@ -1367,7 +1360,7 @@ % \begin{macrocode} \def\footfield#1#2#3{% \ifx#3\empty\else - \Tbox{\footcount}{275}{35}{\noindent + \Tbox{\footcount}{\footerpos}{35}{\noindent {\@hft#1}\\ #2#3 } @@ -1378,7 +1371,8 @@ % \DescribeMacro{\accountdata} % Print a table with banking information. Show account number, account % name + city, and a reference. If the |foreign| key was used, -% \textsc{iban} and \textsc{bic} codes are also reported. +% \textsc{iban} and \textsc{bic} codes are also reported, but can be suppressed +% with the |localbank| option. % \begin{macrocode} \def\accountdata{ \textbf{\accountdatatext:}\\ @@ -1440,7 +1434,6 @@ email & \email\NN enclosures & \enclosures\NN fax & \fax\NN - fontpackage & \fontpackage\NN forcedate & \forcedate\NN iban & \iban\NN leftaddress & \leftaddress\NN @@ -1471,7 +1464,7 @@ } \AtEndDocument{% \hypersetup{pdfauthor={\who}, - pdfproducer={isodoc v\fileversion}, + pdfproducer={isodoc v\fileversion} } } % \DescribeMacro{\itable} @@ -1494,20 +1487,15 @@ % |\itotal| inserts an invoice total in the |\itable|.\\ % It inserts |\cmidrule[.05em]{2-2}Total & arg1\NN|: % \begin{macrocode} -\def\itotal#1{\cmidrule[.05em]{2-2}\Totaltext&\textbf{#1}\NN} +\def\itotal#1{\cmidrule[.05em]{2-2}\totaltext&\textbf{#1}\NN} % \end{macrocode} % The counter |\lettercount| is used to construct a label on the last % page of each letter/invoice of this document; it wil be set to % \texttt{LastPageOf\textsl{n}}, where \textsl{n} is the letter % number: 1, 2, 3, ... This allows for page headings saying ``Page n -% of m.'' Whether we are on the last page of a letter is only known -% either at |\end{document}| or when a new letter is started. This is -% why a label is set at the start of a |\letter| call, thus labeling -% the last page of the previous letter and using |\AtEndDocument| for -% the last letter, which would otherwise stay unlabeled. +% of m.'' This label is automatically added at the end of each letter. % \begin{macrocode} \newcounter{lettercount}\setcounter{lettercount}{0} -\AtEndDocument{\label{LastPageOf\thelettercount}} % \end{macrocode} % \DescribeMacro{\invoice} % |\invoice| prints an invoice. The first argument is optional, and may @@ -1526,23 +1514,46 @@ \newcommand{\invoice}[2][]{% \closingfalse \def\barsep{\raisebox{-1.5ex}[0pt][0pt]{\rule{.05em}{4ex}}}% - \letter[#1,opening=\invoicetext,openingcomma={},closing={},signature={}]{% - \Tbox{35}{127}{140}{#2} - } + \letter[#1, + opening={\bfseries\scshape\Large\invoicetext}, + openingcomma={}, + closing={}, + signature={}]{\Tbox{35}{127}{140}{#2}} } % \end{macrocode} % \DescribeMacro{\letter} % |\letter| prints a letter... +% The code is enclosed in an extra pair of braces, in order to keep option changes local % \begin{macrocode} -\newcommand{\letter}[2][]{{ % extra brace keeps option changes local - \setkeys{isodoc}{#1} - \hypersetup{pdftitle={letter to \toname\ dated \today}, - pdfsubject={\subject}} - \label{LastPageOf\thelettercount} +\newcommand{\letter}[2][]{{% \newpage + \setkeys{isodoc}{#1} +% \end{macrocode} +% By now, a language should have been chosen; if not, issue a warning +% and set the language to the default: UKenglish +% \begin{macrocode} + \ifx\yourlettertext\undefined\ClassWarning{isodoc}{ + You did not use the language option; using the default: UKenglish + }\isodoc@UKenglish\fi + \ifnum\value{lettercount}=0% + \hypersetup{pdftitle={letter to \toname\ dated \today}, + pdfsubject={\subject}} + \fi \addtocounter{lettercount}{1} \setcounter{page}{1} \setcounter{footnote}{0} + \fancyhf{} + \if@twoside + \fancyhead[LE,RO]{\color{headingcolor}% + \pagetext\ \thepage\ \oftext{} \begin{NoHyper}\pageref{LastPageOf\thelettercount}\end{NoHyper}} + \fancyhead[RE,LO]{\color{headingcolor}% + \totext: \toname\ (\date)} + \else + \fancyhead[L]{\color{headingcolor}% + \totext: \toname\ (\date)} + \fancyhead[R]{\color{headingcolor}% + \pagetext\ \thepage\ \oftext{} \begin{NoHyper}\pageref{LastPageOf\thelettercount}\end{NoHyper}} + \fi \logo % \end{macrocode} % addresscenter is the center, vertically, of the to-address block: @@ -1559,10 +1570,12 @@ \toname\\\toaddress \end{textblock} } - \openingpos=\headerpos + \subjectpos=\headerpos + \textskip=\headerpos\advance\textskip-12 + \ifx\subject\empty\advance\textskip-10\else\advance\subjectpos10\fi + \openingpos=\subjectpos \ifheader - \advance\openingpos12 - \advance\bodyskip12mm + \openingpos=\subjectpos\advance\openingpos12 \Tbox{35}{\headerpos}{35}{\noindent {\@hft\yourlettertext}\\ \yourletter @@ -1582,14 +1595,14 @@ \else\forcedate\fi } \ifx\subject\empty\else% - \advance\openingpos10 - \advance\bodyskip10mm - \Tbox{35}{108}{105}{\noindent + \Tbox{35}{\subjectpos}{105}{\noindent \begin{tabularx}{\hsize}{@{}l>{\raggedright}X@{}} \@hft\subjecttext&\subject \end{tabularx} } \fi + \else + \advance\textskip-12 \fi \footcount=35 \iffooter @@ -1605,10 +1618,8 @@ \end{textblock*} } \ifx\undefined\accepttype\else\accept\fi - \ifx\subject\empty\vspace*{80mm}\else\vspace*{90mm}\fi - \noindent\Tbox{35}{\ifx\subject\empty110\else120\fi}{140}{\opening\openingcomma} - \thispagestyle{empty} - + \noindent\Tbox{35}{\openingpos}{140}{\opening\openingcomma} + \vspace{\textskip mm} \thispagestyle{empty} \noindent #2 @@ -1636,6 +1647,7 @@ \\\enclosures \fi } + \label{LastPageOf\thelettercount} }} % \end{macrocode} % \subsection{Internal Macros} @@ -1714,255 +1726,410 @@ {\ocrb\acceptcents} } % \end{macrocode} -% Definitions of field names in various languages; corrections -% and suggestions are very welcome: -% \DescribeMacro{\dutchdoc} -% \begin{macrocode} -\def\set@lang#1{% - \ifpreamble\AtBeginDocument{\selectlanguage{#1}}% - \else\selectlanguage{#1}\fi} -\def\dutchdoc{% - \set@lang{dutch} - \def\yourlettertext{Uw brief van} - \def\yourreftext{Uw kenmerk} - \def\ourreftext{Ons kenmerk} - \def\datetext{Datum} - \def\totext{Aan} - \def\pagetext{Bladnummer} - \def\oftext{van} - \def\date{\number\day~\ifcase\month\or +% \DescribeMacro{\isodoc@catalan} +% contributed by Cristian Peraferrer: +% \begin{macrocode} +\def\isodoc@catalan{% + \gdef\accountdatatext {Dades banc\`aries} + \gdef\accountnametext {a nom de} + \gdef\accountnotext {N\'um. de compte} + \gdef\amounttext {Quantitat} + \gdef\ccname {cc} + \gdef\cellphonetext {M\`obil} + \gdef\chambertext {Cambra de comer\c{c}} + \gdef\datetext {Data} + \gdef\daystext {dies} + \gdef\descriptiontext {Descripci\'o} + \gdef\emailtext {E-mail} + \gdef\enclosurestext {Annexos:} + \gdef\enclosuretext {Annex:} + \gdef\faxtext {Fax} + \gdef\invoicetext {factura} + \gdef\oftext {de} + \gdef\ourreftext {La nostra refer\`encia} + \gdef\pagetext {P\`agina} + \gdef\phonetext {Tel\`efon} + \gdef\referencetext {Refer\`encia} + \gdef\routingnotext {Nombre de ruta} + \gdef\subjecttext {Assumpte} + \gdef\termtext {Termini del pagament} + \gdef\totaltext {Total} + \gdef\totext {A} + \gdef\vatnotext {N\'um. IVA} + \gdef\vattext {IVA} + \gdef\websitetext {Web} + \gdef\yourlettertext {La seva carta del} + \gdef\yourreftext {La seva refer\`encia} + \gdef\date {\number\day\space\ifcase\month\or + gener\or febrer\or mar\c{c}\or abril\or maig\or juny\or + juliol\or agost\or setembre\or octubre\or novembre\or desembre\fi + \space \number\year + } +} +% \end{macrocode} +% \DescribeMacro{\isodoc@dutch} +% \begin{macrocode} +\def\isodoc@dutch{% + \gdef\accountdatatext {Betalingsgegevens} + \gdef\accountnametext {ten name van} + \gdef\accountnotext {rekening nr} + \gdef\amounttext {Bedrag} + \gdef\ccname {Cc:} + \gdef\cellphonetext {mobiel} + \gdef\chambertext {kvk} + \gdef\datetext {Datum} + \gdef\daystext {dagen} + \gdef\descriptiontext {Omschrijving} + \gdef\emailtext {e-mail} + \gdef\enclosurestext {Bijlagen:} + \gdef\enclosuretext {Bijlage:} + \gdef\faxtext {telefax} + \gdef\invoicetext {rekening} + \gdef\oftext {van} + \gdef\ourreftext {Ons kenmerk} + \gdef\pagetext {Bladnummer} + \gdef\phonetext {telefoon} + \gdef\referencetext {kenmerk} + \gdef\routingnotext {banknummer} + \gdef\subjecttext {Onderwerp:} + \gdef\termtext {betalingstermijn} + \gdef\totaltext {Totaal} + \gdef\totext {Aan} + \gdef\vatnotext {btw nr} + \gdef\vattext {Btw} + \gdef\websitetext {webstek} + \gdef\yourlettertext {Uw brief van} + \gdef\yourreftext {Uw kenmerk} + \gdef\date {\number\day\space\ifcase\month\or januari\or februari\or maart\or april\or mei\or juni\or juli\or augustus\or september\or oktober\or november\or december\fi \space \number\year} - \def\subjecttext{Onderwerp:} - \def\ccname{Cc:} - \def\enclosuretext{Bijlage:} - \def\enclosurestext{Bijlagen:} - \def\faxtext{telefax} - \def\websitetext{webstek} - \def\emailtext{email} - \def\phonetext{telefoon} - \def\cellphonetext{mobiel} - \def\chambertext{kvk} - \def\invoicetext{{\bfseries\Large\scshape rekening}} - \def\descriptiontext{Omschrijving} - \def\amounttext{Bedrag} - \def\accountdatatext{Betalingsgegevens} - \def\termtext{betalingstermijn} - \def\daystext{dagen} - \def\accountnotext{rekening nr} - \def\accountnametext{ten name van} - \def\referencetext{kenmerk} - \def\chambertext{kvk} - \def\vatnotext{btw nr} - \def\Vattext{Btw} - \def\Totaltext{Totaal} } % \end{macrocode} -% \DescribeMacro{\englishdoc} -% \begin{macrocode} -\def\englishdoc{% - \set@lang{english} - \def\yourlettertext{Your letter of} - \def\yourreftext{Your reference} - \def\ourreftext{Our reference} - \def\datetext{Date} - \def\totext{To} - \def\pagetext{Page} - \def\oftext{of} - \def\date{\ifcase\day\or - 1st\or 2nd\or 3rd\or 4th\or 5th\or - 6th\or 7th\or 8th\or 9th\or 10th\or +% \DescribeMacro{\isodoc@french} +% \begin{macrocode} +\def\isodoc@french{% + \gdef\accountdatatext {Donn\'ees banquaires} + \gdef\accountnametext {au nom de} + \gdef\accountnotext {no. compte} + \gdef\amounttext {Montant} + \gdef\ccname {Copie \`a} + \gdef\cellphonetext {portable} + \gdef\chambertext {c.c.i.} + \gdef\datetext {Date:} + \gdef\daystext {jours} + \gdef\descriptiontext {Description} + \gdef\emailtext {email} + \gdef\enclosurestext {Pi\`eces jointes:} + \gdef\enclosuretext {Pi\`ece jointe:} + \gdef\faxtext {t\'el\'efax} + \gdef\invoicetext {facture} + \gdef\oftext {de} + \gdef\ourreftext {Nos r\'ef\'erences:} + \gdef\pagetext {Page} + \gdef\phonetext {t\'el\'ephone} + \gdef\referencetext {r\'ef\'erence} + \gdef\routingnotext {num\'ero d'acheminement} + \gdef\subjecttext {Objet:} + \gdef\termtext {terme} + \gdef\totaltext {Total} + \gdef\totext {\`A l'attention de} + \gdef\vatnotext {no. T.V.A.} + \gdef\vattext {T.V.A.} + \gdef\websitetext {site Web} + \gdef\yourlettertext {Votre lettre du} + \gdef\yourreftext {Vos r\'ef\'erences:} + \gdef\date {\number\day\ifnum\day=1$^{er}$\fi\space\ifcase\month\or + janvier\or f\'evrier\or mars\or avril\or mai\or juin\or + juillet\or ao\^ut\or septembre\or octobre\or + novembre\or d\'ecembre\fi \space \number\year} +} +% \end{macrocode} +% \DescribeMacro{\isodoc@german} +% \begin{macrocode} +\def\isodoc@german{% + \gdef\accountdatatext {Bezahlungsdaten} + \gdef\accountnametext {Name} + \gdef\accountnotext {Konto Nr} + \gdef\amounttext {Betrag} + \gdef\ccname {Kopien an} + \gdef\cellphonetext {Handy} + \gdef\chambertext {Register Nr} + \gdef\datetext {Datum} + \gdef\daystext {Tage} + \gdef\descriptiontext {Umschreibung} + \gdef\emailtext {E-mail} + \gdef\enclosurestext {Anlagen:} + \gdef\enclosuretext {Anlage:} + \gdef\faxtext {Telefax} + \gdef\invoicetext {rechnung} + \gdef\oftext {aus} + \gdef\ourreftext {Unser Zeichen} + \gdef\pagetext {Seite} + \gdef\phonetext {Telefon} + \gdef\referencetext {Beleg Nr} + \gdef\routingnotext {BLZ} + \gdef\subjecttext {Betrifft:} + \gdef\termtext {Zahlungstermin} + \gdef\totaltext {Insgesamt} + \gdef\totext {An} + \gdef\vatnotext {Ustid Nr} + \gdef\vattext {MwSt} + \gdef\websitetext {Webseite} + \gdef\yourlettertext {Ihr Brief vom} + \gdef\yourreftext {Ihr Zeichen} + \gdef\date {\number\day.\space\ifcase\month\or + Januar\or Februar\or M\"arz\or April\or Mai\or Juni\or + Juli\or August\or September\or Oktober\or November\or Dezember\fi + \space\number\year} +} +% \end{macrocode} +% \DescribeMacro{\isodoc@italian} +% contributed by Walter Giocoso: +% \begin{macrocode} +\def\isodoc@italian{% + \gdef\accountdatatext {Coordinate bancarie} + \gdef\accountnametext {intestato a} + \gdef\accountnotext {n$^o$~del conto} + \gdef\amounttext {Prezzo} + \gdef\ccname {Per conoscenza a:} + \gdef\cellphonetext {cellulare:} + \gdef\chambertext {} + \gdef\datetext {Data:} + \gdef\daystext {giorni} + \gdef\descriptiontext {Descrizione} + \gdef\emailtext {e-mail:} + \gdef\enclosurestext {Allegati:} + \gdef\enclosuretext {Allegato:} + \gdef\faxtext {fax:} + \gdef\invoicetext {fattura} + \gdef\oftext {di} + \gdef\ourreftext {Nostro riferimento:} + \gdef\pagetext {Pagina} + \gdef\phonetext {telefono:} + \gdef\referencetext {riferimento} + \gdef\routingnotext {numero di routing} + \gdef\subjecttext {Oggetto:} + \gdef\termtext {scadenza} + \gdef\totaltext {Totale} + \gdef\totext {All'attenzione di:} + \gdef\vatnotext {Partita I.V.A.} + \gdef\vattext {I.V.A.} + \gdef\websitetext {sito Web:} + \gdef\yourlettertext {Vostra lettera del:} + \gdef\yourreftext {Vostro riferimento:} + \gdef\date {\number\day\ifnum\day=1\fi + ~\ifcase\month\or + Gennaio\or Febbraio\or Marzo\or Aprile\or Maggio\or Giugno\or + Luglio\or Agosto\or Settembre\or Ottobre\or Novembre\or Dicembre\fi + \space \number\year} +} +% \end{macrocode} +% \DescribeMacro{\isodoc@norsk} +% contributed by Sveinung Heggen: +% \begin{macrocode} +\def\isodoc@norsk {% + \gdef\accountdatatext {betales til} + \gdef\accountnametext {til} + \gdef\accountnotext {faktura nr} + \gdef\amounttext {Bel\o{}p} + \gdef\ccname {kopi til:} + \gdef\cellphonetext {mobil} + \gdef\chambertext {} + \gdef\datetext {Dato} + \gdef\daystext {dager} + \gdef\descriptiontext {Beskrivelse} + \gdef\emailtext {e-post} + \gdef\enclosurestext {Vedlegg:} + \gdef\enclosuretext {Vedlegg:} + \gdef\faxtext {telefaks} + \gdef\invoicetext {faktura} + \gdef\oftext {av} + \gdef\ourreftext {V\aa{}r ref:} + \gdef\pagetext {Side} + \gdef\phonetext {telefon} + \gdef\referencetext {referanse} + \gdef\routingnotext {routing-nummer} + \gdef\subjecttext {Vedr:} + \gdef\termtext {betalingsfrist} + \gdef\totaltext {Total} + \gdef\totext {Til} + \gdef\vatnotext {Org. nr.} + \gdef\vattext {Mva} + \gdef\websitetext {hjemmeside} + \gdef\yourlettertext {Deres brev av} + \gdef\yourreftext {Deres ref:} + \gdef\date {\number\day.\space\ifcase\month\or + januar\or februar\or mars\or april\or mai\or juni\or + juli\or august\or september\or oktober\or november\or desember\fi + \space \number\year} +} +% \end{macrocode} +% \DescribeMacro{\isodoc@serbian} +% contributed by Zoran T. Filipovic: +% \begin{macrocode} +\def\isodoc@serbian {% + \gdef\totaltext {Ukupno} + \gdef\vattext {PDV} + \gdef\accountdatatext {Podaci o bankarskom sektoru} + \gdef\accountnametext {na ime} + \gdef\accountnotext {Ra\v cun br.} + \gdef\amounttext {Iznos} + \gdef\ccname {Kopije} + \gdef\cellphonetext {Mobilni} + \gdef\chambertext {Spisak br.} + \gdef\datetext {Datum} + \gdef\daystext {dana} + \gdef\descriptiontext {Opis} + \gdef\emailtext {Email} + \gdef\enclosurestext {Prilozi:} + \gdef\enclosuretext {Prilog:} + \gdef\faxtext {Telefax} + \gdef\invoicetext {faktura} + \gdef\oftext {od} + \gdef\ourreftext {Na\v s broj} + \gdef\pagetext {Strana} + \gdef\phonetext {Telefon} + \gdef\referencetext {Dokumet br.} + \gdef\routingnotext {BLZ} + \gdef\subjecttext {Predmet:} + \gdef\termtext {rok pla\' canja} + \gdef\totext {U} + \gdef\vatnotext {porez br.} + \gdef\websitetext {Website} + \gdef\yourlettertext {Va\v se pismo od} + \gdef\yourreftext {Va\v s broj} + \gdef\date{\number\day.~\ifcase\month\or + Januar\or Februar\or Mart\or April\or Maj\or Jun\or + Jul\or Avgust\or Septembar\or Oktobar\or Novembar\or Decembar\fi + \space\number\year} +} +% \end{macrocode} +% \DescribeMacro{\isodoc@spanish} +% contributed by Cristian Peraferrer: +% \begin{macrocode} +\def\isodoc@spanish{% + \gdef\accountdatatext {Datos bancarios} + \gdef\accountnametext {a nombre de} + \gdef\accountnotext {N\'um. de cuenta} + \gdef\amounttext {Cantidad} + \gdef\ccname {cc} + \gdef\cellphonetext {M\'ovil} + \gdef\chambertext {C\'amara de comercio} + \gdef\datetext {Fecha} + \gdef\daystext {d\'{\i}as} + \gdef\descriptiontext {Descripci\'on} + \gdef\emailtext {E-mail} + \gdef\enclosurestext {Anexos:} + \gdef\enclosuretext {Anexo:} + \gdef\faxtext {Fax} + \gdef\invoicetext {factura} + \gdef\oftext {de} + \gdef\ourreftext {Nuestra referencia} + \gdef\pagetext {P\'agina} + \gdef\phonetext {Tel\'efono} + \gdef\referencetext {Referencia} + \gdef\routingnotext {n\'umero de ruta} + \gdef\subjecttext {Asunto} + \gdef\termtext {Plazo de pago} + \gdef\totaltext {Total} + \gdef\totext {A} + \gdef\vatnotext {N\'um. IVA} + \gdef\vattext {IVA} + \gdef\websitetext {Web} + \gdef\yourlettertext {Su carta de} + \gdef\yourreftext {Su referencia} + \gdef\date {\number\day\space\ifcase\month\or + enero\or febrero\or marzo\or abril\or mayo\or junio\or + julio\or agosto\or septiembre\or octubre\or noviembre\or diciembre\fi + \space \number\year + } +} +% \DescribeMacro{\isodoc@UKenglish} +% \begin{macrocode} +\def\isodoc@UKenglish{% + \gdef\accountdatatext {Banking data} + \gdef\accountnametext {in the name of} + \gdef\accountnotext {Account no.} + \gdef\amounttext {Amount} + \gdef\ccname {cc} + \gdef\cellphonetext {cellphone} + \gdef\chambertext {ch.comm.} + \gdef\datetext {Date} + \gdef\daystext {days} + \gdef\descriptiontext {Description} + \gdef\emailtext {email} + \gdef\enclosurestext {Enclosures:} + \gdef\enclosuretext {Enclosure:} + \gdef\faxtext {telefax} + \gdef\invoicetext {invoice} + \gdef\oftext {of} + \gdef\ourreftext {Our reference} + \gdef\pagetext {Page} + \gdef\phonetext {telephone} + \gdef\referencetext {Reference} + \gdef\routingnotext {Routing no} + \gdef\subjecttext {Subject:} + \gdef\termtext {term of payment} + \gdef\totaltext {Total} + \gdef\totext {To} + \gdef\vatnotext {vat no.} + \gdef\vattext {Vat} + \gdef\websitetext {website} + \gdef\yourlettertext {Your letter of} + \gdef\yourreftext {Your reference} + \gdef\date{\ifcase\day\or + 1st\or 2nd\or 3rd\or 4th\or 5th\or + 6th\or 7th\or 8th\or 9th\or 10th\or 11th\or 12th\or 13th\or 14th\or 15th\or 16th\or 17th\or 18th\or 19th\or 20th\or 21st\or 22nd\or 23rd\or 24th\or 25th\or 26th\or 27th\or 28th\or 29th\or 30th\or - 31st\fi~\ifcase\month\or + 31st\fi\space\ifcase\month\or January\or February\or March\or April\or May\or June\or July\or August\or September\or October\or November\or December\fi \space \number\year} - \def\subjecttext{Subject:} - \def\ccname{cc} - \def\enclosuretext{Enclosure:} - \def\enclosurestext{Enclosures:} - \def\faxtext{telefax} - \def\websitetext{website} - \def\emailtext{email} - \def\phonetext{telephone} - \def\cellphonetext{cellphone} - \def\invoicetext{{\bfseries\Large\scshape invoice}} - \def\descriptiontext{Description} - \def\amounttext{Amount} - \def\accountdatatext{Banking data} - \def\termtext{term of payment} - \def\daystext{days} - \def\accountnotext{Account no.} - \def\accountnametext{to the name of} - \def\referencetext{Reference} - \def\chambertext{ch.comm.} - \def\vatnotext{vat no.} - \def\Vattext{Vat} - \def\Totaltext{Total} } % \end{macrocode} -% \DescribeMacro{\americandoc} -% \begin{macrocode} -\def\americandoc{% - \set@lang{american} - \def\yourlettertext{Your letter of} - \def\yourreftext{Your reference} - \def\ourreftext{Our reference} - \def\datetext{Date} - \def\totext{To} - \def\pagetext{Page} - \def\oftext{of} - \def\date{\ifcase\month\or +% \DescribeMacro{\isodoc@USenglish} +% \begin{macrocode} +\def\isodoc@USenglish{% + \gdef\accountdatatext {Bank details} + \gdef\accountnametext {in the name of} + \gdef\accountnotext {Account no.} + \gdef\amounttext {Amount} + \gdef\ccname {cc} + \gdef\cellphonetext {cellphone} + \gdef\chambertext {ch.comm.} + \gdef\datetext {Date} + \gdef\daystext {days} + \gdef\descriptiontext {Description} + \gdef\emailtext {email} + \gdef\enclosurestext {Enclosures:} + \gdef\enclosuretext {Enclosure:} + \gdef\faxtext {telefax} + \gdef\invoicetext {invoice} + \gdef\oftext {of} + \gdef\ourreftext {Our reference} + \gdef\pagetext {Page} + \gdef\phonetext {telephone} + \gdef\referencetext {Reference} + \gdef\routingnotext {Routing no} + \gdef\subjecttext {Subject:} + \gdef\termtext {term of payment} + \gdef\totaltext {Total} + \gdef\totext {To} + \gdef\vatnotext {vat no.} + \gdef\vattext {Vat} + \gdef\websitetext {website} + \gdef\yourlettertext {Your letter of} + \gdef\yourreftext {Your reference} + \gdef\date {\ifcase\month\or January\or February\or March\or April\or May\or June\or July\or August\or September\or October\or November\or December\fi \space\number\day, \number\year} - \def\subjecttext{Subject:} - \def\ccname{cc} - \def\enclosuretext{Enclosure:} - \def\enclosurestext{Enclosures:} - \def\faxtext{telefax} - \def\websitetext{website} - \def\emailtext{email} - \def\phonetext{telephone} - \def\cellphonetext{cellphone} - \def\invoicetext{{\bfseries\Large\scshape invoice}} - \def\descriptiontext{Description} - \def\amounttext{Amount} - \def\accountdatatext{Bank details} - \def\termtext{term of payment} - \def\daystext{days} - \def\accountnotext{Account no.} - \def\accountnametext{to the name of} - \def\referencetext{Reference} - \def\chambertext{ch.comm.} - \def\vatnotext{vat no.} - \def\Vattext{Vat} - \def\Totaltext{Total} -} -% \end{macrocode} -% \DescribeMacro{\germandoc} -% \begin{macrocode} -\def\germandoc{% - \set@lang{german} - \def\yourlettertext{Ihr Brief vom} - \def\yourreftext{Ihr Zeichen} - \def\ourreftext{Unser Zeichen} - \def\datetext{Datum} - \def\totext{An} - \def\pagetext{Seite} - \def\oftext{aus} - \def\date{\number\day.~\ifcase\month\or - Januar\or Februar\or M\"arz\or April\or Mai\or Juni\or - Juli\or August\or September\or Oktober\or November\or Dezember\fi - \space\number\year} - \def\subjecttext{Betrifft:} - \def\ccname{Kopien an} - \def\enclosuretext{Anlage:} - \def\enclosurestext{Anlagen:} - \def\faxtext{Telefax} - \def\websitetext{Webseite} - \def\emailtext{Email} - \def\phonetext{Telefon} - \def\cellphonetext{Handy} - \def\invoicetext{{\bfseries\Large\scshape rechnung}} - \def\descriptiontext{Umschreibung} - \def\amounttext{Betrag} - \def\accountdatatext{Bezahlungsdaten} - \def\termtext{Zahlungstermin} - \def\daystext{Tage} - \def\accountnotext{Konto Nr} - \def\routingnotext{BLZ} - \def\accountnametext{Name} - \def\referencetext{Beleg Nr} - \def\chambertext{Register Nr} - \def\vatnotext{Ustid Nr} - \def\Vattext{MwSt} - \def\Totaltext{Insgesamt} -} -% \end{macrocode} -% \DescribeMacro{\frenchdoc} -% \begin{macrocode} -\def\frenchdoc{% - \set@lang{french} - \def\yourlettertext{Votre lettre du} - \def\yourreftext{Vos r\'ef\'erences:} - \def\ourreftext{Nos r\'ef\'erences:} - \def\datetext{Date:} - \def\totext{\`A l'attention de} - \def\pagetext{Page} - \def\oftext{de} - \def\date{\number\day\ifnum\day=1$^{er}$\fi - ~\ifcase\month\or janvier\or - f\'evrier\or mars\or avril\or mai\or juin\or - juillet\or ao\^ut\or septembre\or octobre\or - novembre\or d\'ecembre\fi \space \number\year} - \def\subjecttext{Objet:} - \def\ccname{Copie \`a} - \def\enclosuretext{Pi\`ece jointe:} - \def\enclosurestext{Pi\`eces jointes:} - \def\faxtext{t\'el\'efax} - \def\websitetext{site Web} - \def\emailtext{email} - \def\phonetext{t\'el\'ephone} - \def\cellphonetext{portable} - \def\invoicetext{{\bfseries\Large\scshape facture}} - \def\descriptiontext{Description} - \def\amounttext{Montant} - \def\accountdatatext{Donn\'ees banquaires} - \def\termtext{terme} - \def\daystext{jours} - \def\accountnotext{no. compte} - \def\accountnametext{au nom de} - \def\referencetext{r\'ef\'erence} - \def\chambertext{c.c.i.} - \def\vatnotext{no. T.V.A.} - \def\Vattext{T.V.A.} - \def\Totaltext{Total} -} -% \end{macrocode} -% \DescribeMacro{\norwegiandoc} -% \begin{macrocode} -\def\norwegiandoc{% - \set@lang{norsk} - \def\yourlettertext{Deres brev av} - \def\yourreftext{Deres ref:} - \def\ourreftext{V\aa{}r ref:} - \def\datetext{Dato} - \def\totext{Til} - \def\pagetext{Side} - \def\oftext{av} - \def\date{\number\day.~\ifcase\month\or - januar\or februar\or mars\or april\or mai\or juni\or - juli\or august\or september\or oktober\or november\or desember\fi - \space \number\year} - \def\subjecttext{Vedr:} - \def\ccname{kopi til:} - \def\enclosuretext{Vedlegg:} - \def\enclosurestext{Vedlegg:} - \def\faxtext{telefaks} - \def\websitetext{hjemmeside} - \def\emailtext{e-post} - \def\phonetext{telefon} - \def\cellphonetext{mobil} - \def\invoicetext{{\bfseries\Large\scshape faktura}} - \def\descriptiontext{Beskrivelse} - \def\amounttext{Bel\o{}p} - \def\accountdatatext{betales til} - \def\termtext{betalingsfrist} - \def\daystext{dager} - \def\accountnotext{faktura nr} - \def\accountnametext{til} - \def\referencetext{referanse} - \def\chambertext{} - \def\vatnotext{Org. nr.} - \def\Vattext{Mva} - \def\Totaltext{Total} } % \end{macrocode} % \Finale \endinput -$Id: isodoc.dtx,v 1.28 2010-01-02 16:54:02 wybo Exp $ +$Id: isodoc.dtx,v 1.31 2010-08-24 19:50:48 wybo Exp $ diff --git a/Master/texmf-dist/source/latex/isodoc/isodoc_letterpaper.dtx b/Master/texmf-dist/source/latex/isodoc/isodoc_letterpaper.dtx new file mode 100644 index 00000000000..d298d48ab6e --- /dev/null +++ b/Master/texmf-dist/source/latex/isodoc/isodoc_letterpaper.dtx @@ -0,0 +1,2147 @@ +% \iffalse meta-comment +% +% Copyright (C) 2006 by Wybo Dekker <wybo@servalys.nl> +% ------------------------------------------------------- +% +% This file may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either version 1.2 +% of this license or (at your option) any later version. +% The latest version of this license is in: +% +% http://www.latex-project.org/lppl.txt +% +% and version 1.2 or later is part of all distributions of LaTeX +% version 1999/12/01 or later. +% +% \fi +% +% \iffalse +%<*driver> +\ProvidesFile{isodoc.dtx} +%</driver> +%<class>\NeedsTeXFormat{LaTeX2e}[1999/12/01] +%<class>\ProvidesClass{isodoc}% +%<*class> + [2010/01/16 v0.8 isodoc class for letters and invoices] +%</class> +%<class>\ifx\pdfoutput\undefined\else% +%<class>\ifnum\pdfoutput=1\else\ClassError{isodoc}{Compile me with pdflatex or xelatex!}{} +%<class>\fi\fi +%<*driver> +\documentclass{ltxdoc} +\usepackage[l2tabu,orthodox]{nag} +\usepackage{ctable,pdfpages,paralist,eurosym,sverb,ltablex} +\parindent0pt\parskip1ex +\PageIndex +\IndexPrologue{\section*{Index}} +\newcommand{\FIG}[3]{ % pdfname label caption + \ctable[label={#2},caption={#3},figure,botcap,framerule=.5pt]{@{}c@{}}{}{% + \includegraphics[width=\textwidth]{#1} + } +} +\newcommand{\OPTS}[3]{ + \smallskip\noindent + \begin{tabularx}{\hsize}{@{}lX@{}} + \multicolumn{2}{@{}l}{\bfseries #1}\NN + \multicolumn{2}{@{}p{\hsize}@{}}{#2}\NN\NN + #3 + \end{tabularx} +} +\def\T#1{\texttt{#1}} +\def\C#1{\texttt{$\mathtt{\backslash}$#1}} +\def\CMP#1{\C{#1}\marginpar{\C{#1}}} +\begin{document} + \DocInput{isodoc.dtx} +\end{document} +%</driver> +% \fi +% +% \CheckSum{0} +% +% \CharacterTable +% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +% Digits \0\1\2\3\4\5\6\7\8\9 +% Exclamation \! Double quote \" Hash (number) \# +% Dollar \$ Percent \% Ampersand \& +% Acute accent \' Left paren \( Right paren \) +% Asterisk \* Plus \+ Comma \, +% Minus \- Point \. Solidus \/ +% Colon \: Semicolon \; Less than \< +% Equals \= Greater than \> Question mark \? +% Commercial at \@ Left bracket \[ Backslash \\ +% Right bracket \] Circumflex \^ Underscore \_ +% Grave accent \` Left brace \{ Vertical bar \| +% Right brace \} Tilde \~} +% +% \changes{v0.1}{2006/03/18}{Initial version} +% \changes{v0.2}{2007/04/05}{added options phoneprefix, routingno, logoaddress +% accountname now optional +% accountnumber $\Rightarrow$ accountno +% german and french translations corrected +% indents removed in header fields +% expect printer to have more unprintable border +% ascriptiontext $\Rightarrow$ accountnametext for dutch +% Interdocument language changes now work; +% Vatno, if defined, is reported with accountdata; +% country in returnaddress now separated with dot; +% option changes kept local to the letter/invoice; +% English/American accountname text adapted +% } +% \changes{v0.3}{2007/08/21}{several errors in documentation corrected +% } +% \changes{v0.3b}{2007/08/21}{non-zero parskip generated whitespace in standard textblocks; +% several accept positions fixed, +% added option shift, +% whitespace problems solved, +% added option currency, +% added option cityzip - without documentation +% } +% \changes{v0.4}{2008/05/01}{options shift, currency, cityzip added +% norwegian translations added (thanks Sveinung Heggen) +% } +% \changes{v0.5}{2008/07/12}{text misplacement in subject-less letters +% corrected +% norwegian translations corrected +% } +% \changes{v0.6}{2008/07/12}{moved all documentation files in subdirectory doc, +% because files appeared to be wrongly placed on the +% TeX Collection DVD +% Some minor corrections +% } +% \changes{v0.7}{2010/01/02}{using eurosym package instead of marvosym; +% using frenchb package instead of french; +% added addresswidth option, default stays 2 cols; +% changes suggested by Fabrice Niessen (thanks!): +% added header/noheader options; +% added bodyshift option; +% date format can be yyyy-mm-dd or a literal `today'; +% added forcedate option to enter anything for date; +% added foldleft and foldright options, default stays right; +% headingcolor, if defined, colors fancy headings; +% headcolor, if defined, colors headings in header and footer; +% foldmarkcolor, if defined, colors foldmark +% } +% +% \DoNotIndex{% +% \ , \", \', \@auxout, \AtBeginDocument, \AtEndDocument, \Cbox, \CurrentOption, +% \DeclareOption, \DescribeMacro, \EUR, \LARGE, \Large, \LoadClass, \ML, \NN, +% \PassOptionsToClass, \ProcessOptions, \RequirePackage, \TPGrid, \Tbox, \\, \^, +% \`, \aa, \addtocounter, \advance, \barsep, \baselineskip, \begin, \bfseries, +% \bgroup, \clearpage, \cmidrule, \colorbox, \csname, \def, \define@key, +% \definecolor, \egroup, \else, \empty, \end, \endcsname, \enspace, +% \expandafter, \fancyhead, \fancyhf, \fi, \filedat, \fileversion, +% \footnotesize, \geometry, \hfill, \hsize, \hspace, \ht, \if@twoside, +% \ifcase, \ifdim, \ifnum, \ifx, \ignorespaces, \immediate, \includegraphics, +% \lastpage@putlabel, \let, \long, \multicolumn, \newcommand, \newcount, +% \newdimen, \newenvironment, \newif, \newlabel, \noindent, \number, \o, \or, +% \pageref, \pagestyle, \paperheight, \paperwidth, \par, \parindent, \parskip, +% \pdfinfo, \qquad, \quad, \raggedright, \raisebox, \relax, +% \rightskip, \rule, \scriptsize, \scshape, \selectlanguage, \setbox, +% \setcounter, \setkeys, \sffamily, \space, \string, \tbfigures, \textbf, +% \textbullet, \thepage, \thispagestyle, \undefined, \unskip, \usepackage, +% \vbox, \vfill, \vspace, \write +% } +% +% \GetFileInfo{isodoc.dtx} +% +% \title{The \textsf{isodoc} class\thanks{This document +% corresponds to \textsf{isodoc}~\fileversion, dated \filedate.}\\for +% letters, invoices, and more} +% \author{Wybo Dekker \\ \texttt{wybo@servalys.nl}} +% +% \maketitle +% +% \begin{abstract}\noindent +% The \texttt{isodoc} class can be used for the preparation of letters, +% invoices, and, in the future, similar documents. +% Documents are set up with options, thus making the class easily adaptable to +% user's wishes and extensible for other document types. +% \\[2ex] +% \textbf{Keywords:} letter, invoice, key/value, \textsc{nen1026} +% +% \end{abstract} +% \tableofcontents +% \section{Introduction} +% +% This class is intended to be used for the preparation of letters and +% invoices. Its starting point was Victor Eijkhout's NTG +% {\texttt{brief}} class\footnote{CTAN: ntgclass/briefdoc.pdf}, which +% implements the \textsc{nen 1026} standard. The \texttt{brief} class +% does not provide facilities for invoices and it is not easily +% extensible. +% +% The goal for the \texttt{isodoc} class is to be extensible and easy to +% use by providing \textsl{key=value} configuration. Furthermore, texts +% that need to be placed on prescribed positions on the page (there are +% many such texts) are positioned by using the {\texttt{textpos}} +% package.\footnote{CTAN: textpos/textpos.pdf} This provides a very +% robust construction of the page. +% +% The class itself contains many general definitions, but variable data, such as +% opening, closing, +% address and many more, have to be defined using \textsl{key=value} +% definitions, either in the document or +% in a style file. The latter is indicated for definitions that don't vary on a +% per document basis, such as your company name, address, email address and so +% on. Thus if you run a company and also are the secretary of a club, +% you would have style files for each of them, plus one for your private letters +% or invoices.\footnote{If you archive your documents in their source form +% only, it may be wise to work without a style file and set all options in the +% document itself!} +% +% The general setup of a document producing one or more letters is (see +% figures~\ref{letter1}--\ref{logo2}, page~\pageref{logo1}--\pageref{logo2}, +% for examples): +% \begin{verbatim} +% \documentclass{isodoc} +% \usepackage{<somestyle>} +% \setupdocument{<generaloptions>} +% \begin{document} +% \letter[<addressee_specific_options>]{<letter_content>} +% ... more \letter calls ... +% \end{document} +% \end{verbatim} +% Similarly, the general setup of a document producing one or more invoices is +% (figure~\ref{invoice}, page~\pageref{invoice}): +% \begin{verbatim} +% \documentclass{isodoc} +% \usepackage{<somestyle>} +% \setupdocument{<generaloptions>} +% \begin{document} +% \invoice[<addressee_specific_options>]{<invoice_content>} +% ... more \invoice calls ... +% \end{document} +% \end{verbatim} +% +% \section{Options} +% +% Options are given as key=value pairs, separated by comma's. +% Extra comma's, including one behind the last pair, don't hurt. +% An option argument should be enclosed in braces if it contains +% comma's or equals signs. +% +% As shown in the two examples in the previous section, there are three commands +% that can set options: |\setupdocument|, |\letter|, and |\invoice|. +% These commands will be further explained in the \textsl{Commands} section. +% |\setupdocument| is normally used to set options that are common to all +% letters or invoices in the document, like your company data; the optional +% arguments of |\letter| and |\invoice| set only those options +% that are different for each letter or invoice, such as the |to| +% and |opening| options. +% +% This section lists and explains all available options. +% All options can be used in both the style files and in the document +% source, although several will normally only be used in style files (such as +% |company|) and some only in the document source (such as |to| or |opening|). +% +% \OPTS{Language}{The options described here relate to the language used +% for the isodoc interface (headings, footings, date, banking data and so +% on.) This language is independent of the language you set with the |babel| +% or |polyglossia| packages. So, for example, you can write your document in english and +% use dutch for the interface. Also, use of |babel| or |polyglossia| is not required. +% +% Currently only a few interface languages are defined. As I am not particularly +% strong in the translation of administrative terminology, please feel free to +% send me corrections. And if you don't find your own language here, please send +% me your translations and your language will be added. +% +% The options below set the language, UKenglish is used by default. Preferably, the |language| +% option should be used; the other options are there for compatibility with earlier versions.}{ +% \T{language = ...} & sets the interface language to any language defined by the class. +% Currently these are: UKenglish, USenglish, french, german, dutch, +% italian, spanish, catalan, norsk, serbian\NN +% \T{dutch} & a synonym for |language = dutch|, \NN +% \T{english} & a synonym for |language = UKenglish|,\NN +% \T{german} & a synonym for |language = german|,\NN +% \T{american} & a synonym for |language = USenglish|,\NN +% \T{french} & a synonym for |language = french|.\NN +% } +% +% \OPTS{Logo}{Information about the sender is defined here. The logo, by +% default, consists of a large company name on top a rule with, hanging under the rule, +% a contact person's data. +% You can define the latter either explicitly with the \T{logoaddress} option, +% or let it automatically be created from the contents of the options \T{who}, \T{street}, +% \T{prezip}, \T{zip}, \T{city}, \T{country}, and \T{foreign}, as far as you have defined those. +% Definition in parts can be useful if you need +% them elsewhere in your document.}{ +% \T{company = ...} & Your company name as it should appear in the logo (if +% you use the default logo) and in the return address +% (where it may get overridden by the \T{returnaddress} +% keyword.) For private documents, use your name or +% nickname here.\NN +% \T{logoaddress = ...}& Contact person's data; use \C{}\C{} commands for line breaks. +% If you don't define this option, the data will be constructed +% from the following options.\NN +% \T{who = ...} & Contact person's name; probably your own name.\NN +% \T{street = ...} & Street in the sender's address.\NN +% \T{city = ...} & City in the sender's address.\NN +% \T{zip = ...} & Zip in the sender's address.\NN +% \T{cityzip} & Place zip \textsl{after} city, instead of before it (the default).\NN +% \T{country = ...} & Country in the sender's address. Only used if \T{foreign} +% key was used.\NN +% \T{countrycode = ...}& Sender's country code. For The Netherlands: NL\NN +% \T{areacode = ...} & Sender's area code. For The Netherlands: 31\NN +% \T{foreign} & Use this key if you send your letter to a foreign +% country. With it, your country will be added to +% return and logo addresses, your zip code will be +% prefixed with your country code, telephone numbers will +% be prefixed with +31-- (or whatever your \T{areacode} +% option has been set to) instead of just a 0. In +% the \C{accountdata} command, it causes \textsc{iban} en +% \textsc{bic} code to be included, unless the |localbank| +% option is used.\NN +% } +% +% \OPTS{Address window}{The addressee's address is printed in a window. The +% width of the window is two columns (70 mm), and its contents are vertically +% centered in it. There are no limits to the vertical size of the +% window, other than the physical size of the window in the envelopes you use. +% The vertical position of the window's center is set with the \T{addresscenter} +% keyword. Horizontally there are two options: left or right.}{ +% \T{leftaddress} & Places the window over columns 2 and 3; this is the +% default.\NN +% \T{rightaddress} & Places the window over columns 4 and 5.\NN +% \T{addresscenter = ...} & Distance in mm of the center of the window from the top of the +% paper; the default value is 63.5 mm, fitting for a DL +% envelope for triple folded A4 (110x220mm) with a window +% at 50 mm from the top, 30mm high.\footnote{The middle of +% the window is at 50+30/2=65 mm from the top of the +% envelope; the paper is folded (see the folding options +% below) to give the folded paper a tolerance of 1.5mm on +% both sides in the envelope, so the address should be +% placed 1.5 mm higher at 65-1.5=63.5 mm.}\NN +% \T{addresswidth = ...}& The address window's width. The default is 70 mm (2 columns).\NN +% \T{to = ...} & The addressee's address. New lines can be introduced with the \C{}\C{} +% command; lines longer than 70 mm will cause extra +% newlines.\NN\relax +% \T{[no]return} & Do or don't print a return address on top of the +% addressee's address. This is useful if blank window envelopes +% are used. The return address is composed from the +% contents of the \T{company}, \T{street}, \T{zip}, \T{city}, and +% \T{country} keywords; it is printed in a bold +% script size sans serif font and is is separated from +% the addressee's address with a rule. The country will +% only be printed if the \T{foreign} keyword has been used.\NN +% \T{returnaddress = ...}& The return address, if it is composed as just +% described, may become too long to fit in the address +% window. Or you may want to define a completely +% different return address. With the \T{returnaddress} keyword you can +% redefine the return address. Use \C{}\C{} to insert +% bullets.\NN +% } +% +% \pagebreak +% \OPTS{Header fields}{Under the address window, a header is printed. The +% page is vertically divided in six columns, one each for the left and right +% margins, and four which, in the header, +% say: \textsl{Your letter of}, \textsl{Your reference}, \textsl{Our reference}, +% and \textsl{Date}, each with their respective contents under them. If the +% \T{subject} keyword is used, an extra line starting with \textsl{Subject:} will +% appear, followed by the contents on the same line and over a width of 2.5 +% columns. If needed, extra lines will be used.}{ +% \T{bodyshift = ...} & The header starts 98mm from the top of the paper, +% but it can be shifted with the |bodyshift| option.\NN +% \T{[no]header} & The |noheader| option disables all header fields, the +% |header| option re-enables them (|header| is the default.)\NN +% \T{yourletter = ...} & first field in the header: the date of the letter +% this document is reaction on; empty by default.\NN +% \T{yourref = ...} & second field in the header: addressee's reference of the letter +% this document is reaction on; empty by default.\NN +% \T{ourref = ...} & third field in the header: your own reference for +% this document.\NN +% \T{date = ...} & fourth field of the header. The argument must +% have the form \T{yyyymmdd} or \T{yyyy-mm-dd}; it will +% be translated into a date like ``May 3, 2006'' if the +% document language is English, or into its translation +% in the actual language. The default value is +% `Undefined date', i.e.\ the date of \C{today} is not +% the default as this would make the date untraceable +% from the document source only. However, you can force +% the use of \C{today} by providing the string |today| +% for the argument.\NN +% \T{forcedate = ...} & The restrictions of the |date| option can be overridden by +% using the |forcedate| option instead; you can thus enter +% anything you like for the date.\NN +% \T{subject = ...} & subject of this document; is placed under the other fields, +% over the width of the first, second and half of the +% third fields.\NN +% } +% +% \OPTS{Opening and Closing}{A letter is started with an opening -- something +% like `Dear John', and ended with a closing -- something like +% `Regards,\T{<newline>}Betty', perhaps with an autograph (or white space) in between.}{ +% \T{opening = ...} & Dear John\NN +% \T{closing = ...} & Regards\NN +% \T{signature = ...} & Betty\NN +% \T{autograph = ...} & \begin{minipage}[t]{\hsize} +% This keyword can have one of the 10 values 0--9:\\[-\baselineskip] +% \begin{compactitem} +% \item [0:] no autograph; the \T{signature} appears right under +% the \T{closing}. This is the default if the \T{autograph} option +% is not used (using it without a value is equivalent to +% \T{autograph=2}). +% \item [1:] generates extra whitespace between +% \T{signature} and \T{closing} for a hand-written +% autograph. Change with the \T{closingskip} key. +% \item [2--9:] inserts one of eight autograph images +% which, with the \C{autograph} command, +% may have been defined in the style file.\\\mbox{} +% \end{compactitem} +% \end{minipage} +% \NN +% \T{enclosures = ...} & This keyword can be used to add a note, at the end of +% the document, which starts with \textbf{Enclosure:} +% followed by the value of the keyword. Multiple +% enclosures can be separated with \C{}\C{} commands. If +% those are found, the starting text will be +% \textbf{Enclosures:}.\NN +% \T{closingskip = ...} & white space between signature and closing. The +% default is \T{2}\C{baselineskip}. +% } +% +% \OPTS{Footer fields}{Footer fields are shown in the order in which +% they appear below; they are empty by default, and empty +% fields are not displayed.}{ +% \T{[no]footer} & enables or disables printing a page footer; there is room +% for upto four fields, if you set five fields, the last +% one will appear in the right margin.\NN +% \T{phoneprefix} & prefix for phone numbers. The default is `0'; will be changed +% into `+$<$areacode$>$-' if the \T{foreign} option is used.\NN +% \T{phone = ...} & if not empty, prints `phone' in the first field of the +% page footer, with the contents under it, prefixed with a~0 or, +% if the \T{foreign} option was used, the areacode (set with the +% \T{areacode} option.) Telephone numbers should thus be entered +% without a prefix.\NN +% \T{cellphone = ...} & same for cellphone...\NN +% \T{fax = ...} & fax...\NN +% \T{email = ...} & email...\NN +% \T{website = ...} & and website.\NN +% } +% +% \OPTS{Folding marks}{Folding marks can be useful, particularly if your address +% window is used to its limits. Correctly folding your letter then prevents +% parts of the address to become invisible because of the letter loosely filling +% the envelope.}{ +% \T{nofold} & Disable folding marks.\NN +% \T{foldleft} & The folding mark is printed in the left margin.\NN +% \T{foldright} & The folding mark is printed in the right margin. This is the default.\NN +% \T{fold2} & Folding mark at about halfway, set for tight fitting +% into a 220x162 mm envelope, with a tolerance of 2 mm +% at both sides.\NN +% \T{fold3} & Folding mark at about one third from the top, set for +% tight fitting into a 220x110 mm envelope, with a +% tolerance of 1.5 mm at both sides.\NN +% \T{fold = ...} & For non-standard envelopes and paper formats the position +% of the folding mark can be set at any position (in mm) +% from the top of the paper. +% } +% +% \OPTS{Payment data}{In invoices you probably want to make clear where you want +% your debtor to transfer his money to. You can do so by calling +% the \C{accountdata} command, which generates a little table containing these data. +% The contents of this table can be defined with the following keywords:}{ +% \T{term = ...} & Payment term in days; default is 30.\NN +% \T{currency = ...} & Currency; default is euro.\NN +% \T{accountno = ...} & Your bank account number.\NN +% \T{routingno = ...} & Your bank's routing number. Will not be cited if undefined.\NN +% \T{accountname = ...} & Your bank account's ascription. +% Will not be cited if undefined.\NN +% \T{iban = ...} & Your account's \textsc{iban}...\NN +% \T{bic = ...} & and \textsc{bic} code; \textsc{iban} and \textsc{bic} +% are only reported in invoices to foreign +% customers---see the \T{foreign} keyword.\NN +% \T{vatno = ...} & Your \textsc{vat} reference number, not yet used.\NN +% \T{chamber = ...} & Your Chamber of Commerce subscription number, not yet +% used.\NN +% } +% +% \OPTS{Accept data}{These keys pertain to data needed for accept forms:}{ +% \T{acceptaccount = ...} & Payer's bank account number\NN +% \T{acceptaddress = ...} & Payer's address lines, separated with \C{}\C{}\NN +% \T{accepteuros = ...} & Euro part of the amount to be paid\NN +% \T{acceptcents = ...} & Cents part of the amount to be paid\NN +% \T{acceptdescription = ...} & Description to be quoted on the accept form\NN +% \T{acceptdesc = ...} & Short version of the description for the +% detachable strip of the form to be kept by the payer\NN +% \T{acceptreference = ...} & Reference\NN +% } +% +% \OPTS{Miscellaneous}{}{ +% \T{[no]fill} & Use the \T{fill} keyword to justify text both left and +% right; the default is \T{nofill}: left justification +% only.\NN +% \T{shift = ...} & The many textpositions in isodoc are defined in millimeters, +% but sometimes printers show an aberration in their horizontal +% or vertical printing position. You can correct for this with the +% \T{shift = x,y} option, where x and y (both 0 by default) shift +% the output to the right and down, respectively, in millimeters.\NN +% } +% +% \section{Commands} +% \DescribeMacro{\showkeys} +% The \C{showkeys} command can be useful for debugging. It prints a table +% showing the option keys described in the previous section, and their current values. +% +% \DescribeMacro{\setupdocument} +% Most of the setup, both in the style files and in the documents +% themselves, is done setting options in a call to the class-defined +% |\setupdocument| command. The options can be either a key/value pair, or just +% a key. +% Options with values and those without may occur in any order, with +% the exception of |addresscenter| (see there.) +% Values need +% their surrounding \{\}'s only if they contain any comma's. +% The \textsl{Options} section explains the available options. +% +% Most of the options have a corresponding command with the same name. +% Although not very often, it may sometimes be useful to have those +% commands available. These are the options with a corresponding +% command:\footnote{Note for developers: the table lines below can be +% generated with a ruby script listkeys (included in the distribution): +% |listkeys show|} +% +% \noindent\begin{tabular}{@{}lllll@{}} +% accept &addresswidth ¤cy &ourref &website \NN +% acceptaccount &areacode &email &phone &who \NN +% acceptaddress &autograph &enclosures &phoneprefix &yourletter \NN +% acceptcents &bic &fax &returnaddress &yourref \NN +% acceptdesc &cellphone &rightaddress &zip \NN +% acceptdescription &chamber &forcedate &routingno & \NN +% accepteuros &city &iban &signature & \NN +% acceptreference &closing &leftaddress &street & \NN +% accountname &company &logoaddress &subject & \NN +% accountno &country &opening &term & \NN +% addresscenter &countrycode &openingcomma &vatno & \NN +% \end{tabular} +% +% \noindent So you could write in your letter: ``please send me the money on my bank +% account: |\accountno\| as soon as possible.'' +% +% \DescribeMacro{\letter} +% The |\letter| command produces one letter and can be called multiple times. It +% has two arguments. The first argument is optional and must be a list of +% \textsl{key=value} pairs. The options set here are usually those that vary among +% different letters. The second argument contains the letter's content. This +% content will, depending on the options set, automatically be surrounded by an +% opening, a closing, an autograph, a signature and a remark about any +% enclosures. The first page of each letter will be decorated with a logo, +% the addressee's address, a return address, +% various reference fields, a footer, a folding mark---all as defined by +% \textsl{key=value} pairs in |\setupdocument| or in the |\letter| command itself. +% +% The second an following pages will have a heading, quoting the name of the +% addressee and a page number. Examples of letters can be found in the +% section \textsl{Usage: letters}. +% +% \DescribeMacro{\invoice} +% The |\invoice| command is essentially the same as the |\letter| command, except +% that the opening is always ``\textbf{\textsc{invoice}}'', and the content +% (argument 2) is largely composed using the |\itable|, |\iitem|, |\itotal|, and +% |\accountdata| commands described hereafter. Closing, autograph, and signature +% are disabled. +% +% In the Netherlands, invoices can be provided with an accept form on the lower +% third part of the page. If the |accept| option was used, this accept form +% will be filled with the available data, in the |ocrb| font where needed. +% +% The following commands pertain to invoices: +% \DescribeMacro{\itable} +% The |\itable| command uses |tabularx| to create a two-column table. The +% first column of the table will have the header `Description' (or its +% equivalent in the language selected), the header of the second column says +% `Amount (\EUR)'. The single argument of |\itable| should contain the +% contents of the table and is of the form: +% \begin{verbatim} +% item 1 & amount 1\NN +% item 2 & amount 2\NN +% ... +% item n & amount n \NN +% \cmidrule[.05em]{2-2} +% Total & amount \NN +% \end{verbatim} +% However, the next two commands may be used to enter these data more cleanly: +% +% \DescribeMacro{\iitem} +% The |\iitem{item}{amount}| command (|iitem| stands for Invoice Item) is +% equivalent to writing |item & amount\NN|. +% +% \DescribeMacro{\itotal} +% The |\itotal{amount}| command (|itotal| stands for Invoice total) is +% equivalent to writing: +% |\cmidrule[.05em]{2-2} Total & amount \NN|, with the additional +% advantage that the word `Total' will be replaced with its equivalent +% in the current language. Thus, the argument to the |\itable| +% command show above can also be written: +% \begin{verbatim} +% \iitem{item 1}{amount 1} +% \iitem{item 2}{amount 2} +% ... +% \iitem{item n}{amount n} +% \total{amount} +% \end{verbatim} +% \DescribeMacro{\accountdata} +% The |\accountdata| command prints a little table with accounting information +% needed by the creditor for paying the invoice. It is constructed using the +% values of the options |accountno|, |accountname|, |routingno|, |iban|, and +% |bic|. The latter two are only included if the |foreign| option was used. +% +% \DescribeMacro{\autograph} +% The \C{autograph} command, which will normally appear in a style file, +% serves to define up to eight autographs based +% on \textsc{pdf}, \textsc{jpeg} or \textsc{png} images. One of these +% autographs will be drawn between the closing (\textsl{Best regards}) +% and the signature (\textsl{Betty}) if you use the \T{autograph} option +% with a value from 2 through 9. \C{autograph} has 7 arguments: +% +% \begin{tabularx}{\hsize}{@{}rX@{}} +% arg 1:&2,3,...9: autograph number; will be translated internally to define +% |\autographA|, |\autographB|... |\autographH|\NN +% 2:&scaling factor for the image\NN +% 3:&distance the autograph outdents in the margin\NN +% 4:&vertical position of the baseline of the closing +% (\textsl{Regards,}) from the top\NN +% 5:&vertical position of the baseline of the signature (\textsl{John +% Letterwriter}) from the top\NN +% 6:&height of the image\NN +% 7:&the image (jpg, png, pdf...)\NN +% \end{tabularx} +% +% The arguments 3--6 must be dimensions, and for a given autograph image should +% be inferred by inspecting the image with an image manipulation program +% like, for example, the gimp. In the lower left corner of the gimp window, +% select the units of length, move the pointer to the positions where you want +% margin, closing, and signature and to the bottom of the image, read the x, y, +% y and y positions respectively and use those for the argument 3, 4, 5, and 6. +% +% \FIG{letter}{letter1}{Minimal letter example} +% +% \DescribeMacro{\logo} +% The |\logo| command is internally used to define the default logo; you can +% redefine it with |\renewcommand{\logo}{...}|. An example of logo redefinition +% can be found on page~\pageref{logoredef}. +% +% \section{Usage: letters} +% +% Usage of the class is best explained by example. +% \subsection{A simple letter} +% Here is the latex source for a small letter; its result appears in figure~\ref{letter1}: +% \verbinput{letter.txt} +% This source essentially shows three items: +% \begin{compactenum} +% \item the inclusion of a package |mystyle|; we'll come to that shortly. +% \item the command |\setupdocument| called with many \textsl{key=value} arguments, each +% defining one of the texts that go into the letter. +% \item the command |\letter|, enclosing the body of the letter; +% just to give the letter some real body, a small text has +% been included using |\input|. +% \end{compactenum} +% Of course this is not all of the information needed to create a +% letter. For example, there should be a logo, telling the addressee who I am +% and there should be contact information such as my address, telephone number +% and so on. This is where the included |mystyle| package plays its part. Here +% is an example of such a style file: +% \verbinput{mystyle.txt} +% So in the style file, too, |\setupdocument| is used to register +% information that will common to almost all of my letters. The +% |\autograph| command sets up an autograph, based on an image file. Apart +% from the code shown here, a style file can contain definitions for more +% autographs, and a definition for a logo. Without the latter, a default logo is +% produced. Note also that I have included defaults for |opening|, |closing|, +% and |signature| in the style file, and that I did not override those in the +% letter's source. +% +% \FIG{logo1}{logo1}{Long letter example with a non-standard logo, page 1} +% \FIG{logo2}{logo2}{Long letter example with a non-standard logo, page 2} +% +% The letter source example shown above, in combination with this style example, +% compiles to the letter shown in figure~\ref{letter1}. +% This example illustrates some aspects of isodoc: +% \begin{compactitem} +% \item At the top, you see the default letterhead (logo). You can create your +% own logo by redefining the |\logo| command. +% \item Under it is the address. It has a return address in script sized sans +% serif boldface over +% it, because the |return| key has been used. A return address is useful if you +% send your letters in a standard window envelope. The positioning of the +% address is done in the style file, using the |addresscenter| and |leftaddress| or +% |rightaddress| keywords. +% \item The paper is vertically divided in six equally wide columns. The outer +% two columns are the left and right margins, the second to fifth columns contain +% header and footer fields. +% \item The ``Your reference'' and ``Our reference'' fields have not been set +% (with the |yourref| and |ourref| keys) and therefore stay empty by default, +% the date field has also not been set, but it should be. Therefore, the default +% value is ``Undefined date'', and a warning is issued by a pink background. +% \item A folding mark has been printed in the extreme right margin, such that +% on folding the paper along it, it will correctly fit in a 220 x 110 mm +% envelope; this has been achieved by using the |fold3| key. +% \item In between closing (\textsl{Best regards,}) and signature +% (\textsl{W.H.~Dekker}) an autograph has been placed. This was done by setting +% |autograph=2|. Alternative values are |0| (nothing between closing and +% signature), |1| for white space where an autograph can be placed with a pen +% after printing, or one of the values |2-9|, which may have been associated +% with other autograph images. In this case, I have used an autograph image in +% which I have drawn the boundary box and the \textsl{outdent}, +% \textsl{closing}, and \textsl{signature} positions defined in the +% |\autograph| command (see the section \textsl{Commands}) with red lines. +% \item The bottom of the letter has (up to) four fields with contact +% information. This is useful if your logo does not show that information. If it +% does, you can omit these fields by using the |nofooter| key, or by not +% using the |footer| key, depending on the default set in the style file. +% \end{compactitem} +% +% \subsection{Multiple letters, redefined logo} +% Let's try another illustrative example, see figures~\ref{logo1} +% and~\ref{logo2}: we use a modified style file, with a +% redefined logo, so we don't need a page footer; we use preprinted right-windowed +% envelopes, so a return address is not needed. Here is the style file +% (|logostyle.sty|): +% \verbinput{logostyle.txt} +% \label{logoredef} +% \FIG{invoice}{invoice}{Invoice example} +% The letter source does not use the |autograph| key, so the default value of +% |2| is used; we write it in Dutch and use +% a larger text, just to see what happens if more than one page is generated: +% \verbinput{logoletter.txt} +% In this case, the same letter had to be sent to two different people, +% with different openings and addresses of course. So the letter's body +% is separately defined and the |\letter| command is called twice, with +% the same body, but different |to| and |opening| keys. +% Figures~\ref{logo1} and~\ref{logo2} show the first two pages (the +% first letter) of this document, which actually has four pages. +% +% \section{Usage: invoices} +% \subsection{A simple invoice} +% \FIG{accept}{accept}{Invoice example with accept form} +% +% Invoices (can) have the same structure as letters, except that the |\opening| +% isn't ``Dear Somebody'' anymore, but something like ``Invoice''. And the +% |\closing| doesn't say ``Best regards'', but may provide payment information. +% And the body is not a simple text, but a table with descriptions of things to +% be paid, and the corresponding amounts of money. +% +% An example, as usual, is most instructive: +% \verbinput{invoice.txt} +% The result is shown in figure~\ref{invoice}. +% +% \subsection{Invoice with redefined logo} +% When the |accept| option is used, the invoice will be created with an invoice +% form on the lower third part of the page. Here is an example: +% \verbinput{accept.txt} +% Normally such invoices are printed on preprinted paper with an easily +% detachable, perforated form. In this example, the form itself has been +% printed, too. The |graphicx| and |textpos| packages have already been made +% available by the |isodoc| class. Figure~\ref{accept} shows the output of this +% example. +%% \StopEventually{} +% +% \section{Implementation} +% The basis is the |article| class with all options: +% +% \begin{macrocode} +\DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}} +\ProcessOptions +\LoadClass{article} +% \end{macrocode} +% We use |\ctable| floats here, and we need |ctable|'s commands for decent +% spacing in tables and more. |ctable| also brings us |array|, |tabularx|, +% |color|, and |xkeyval|. |eurosym| is used for the euro symbol. +% \begin{macrocode} +\RequirePackage{ctable,eurosym,graphicx,stringstrings,calc} +% \end{macrocode} +% +% Since the name of the package contains 'iso', make the page A4. +% For textpos, divide the page in 210 columns of 1mm each +% and 297 rows, 1mm each. The page is vertically divided in 6 columns of +% 35mm each: a left margin, 4 fields, and a right margin. +% +% \begin{macrocode} +\RequirePackage[nofoot,head=\baselineskip]{geometry} +\RequirePackage[absolute,overlay]{textpos} +\def\isdc@cw{35} +\def\isdc@iicw{70} +\def\isdc@iiicw{105} +\def\isdc@ivcw{140} +\def\isodoc@footpos{275} +\geometry{papersize={210mm,297mm},margin=\isdc@cw mm} +\TPGrid{210}{297} +% \end{macrocode} +% Several colors can be changed, by using the |\definecolor| command; +% the defaults (all black) are set here:\\ +% \DescribeMacro{headcolor} +% \texttt{headcolor:} color for the header and footer field texts\\ +% \DescribeMacro{headingcolor} +% \texttt{headingcolor:} color for the fancy headings\\ +% \DescribeMacro{markercolor} +% \texttt{markercolor:} color for the folding marks +% \begin{macrocode} +\definecolor{headcolor}{gray}{0} +\definecolor{headingcolor}{gray}{0} +\definecolor{markercolor}{gray}{0} +% \end{macrocode} +% +% Use fancy headings, except for the first page. +% The heading, on a rule, looks like:\\[2ex] +% To: John Doe (April 1st, 2006)\hfill Page 2 of 3\\[2ex] +% \begin{macrocode} +\RequirePackage{fancyhdr} +\pagestyle{fancy} +\AtBeginDocument{\addtolength{\headheight}{\baselineskip}} +% \end{macrocode} +% The |\xxxdoc| commands (like |\dutchdoc|) set the default language via +% |\AtBeginDocument|, but other language changes should be done without that. +% So we must have a boolean to check if we are in the preamble: +% +% \begin{macrocode} +\newif\ifpreamble\preambletrue +\AtBeginDocument{\preamblefalse} +% \end{macrocode} +% Background color for signaling items that should have been defined, but +% weren't: +% \begin{macrocode} +\definecolor{isodocpink}{rgb}{1,.7,.7} +\def\Undefined#1{\colorbox{isodocpink}{Undefined #1}} +% \end{macrocode} +% A small sans serif font is used for header and footer field names and the +% sender's address information. The idea is that this is used for all +% pre-printed text on the letter paper. +% \begin{macrocode} +\def\@hft{\footnotesize\sffamily\color{headcolor}} +% \end{macrocode} +% \subsection{The options and their defaults} +% \subsubsection{General options} +% The default shift is 0mm,0mm. +% \DescribeMacro{shift} +% The |shift| option moves the output to the right and down: +% \begin{macrocode} +\def\@xyshift#1,#2@@@{\def\@xshift{#1}\def\@yshift{#2}} +\define@key{isodoc}{shift}{% + \@xyshift#1@@@ + \AtBeginDocument{\textblockorigin{\@xshift mm}{\@yshift mm}} +} +% \end{macrocode} +% Several items in the letter/invoice will be different in documents that are to +% be sent abroad; this is set with the |foreign| option, false by default: +% \DescribeMacro{foreign} +% \begin{macrocode} +\define@key{isodoc}{letterpaper}[]{ + \def\isdc@cw{36} + \def\isdc@iicw{72} + \def\isdc@iiicw{108} + \def\isdc@ivcw{144} + \def\isodoc@footpos{247} + \TPGrid{216}{279} + \geometry{papersize={8.5in,11in},margin=\isdc@cw mm} +} +\define@key{isodoc}{foreign}[\foreigntrue]{\foreigntrue} + \newif\ifforeign\foreignfalse +% \end{macrocode} +% \DescribeMacro{cityzip} +% By default, the zip code is typeset before the city. +% The |cityzip| option reverses this: +% \begin{macrocode} +\define@key{isodoc}{cityzip}[\cityziptrue]{\cityziptrue} + \newif\ifcityzip\cityzipfalse +% \end{macrocode} +% \DescribeMacro{localbank} +% When the |foreign| option is used, \textsc{iban} and \textsc{bic} codes are +% reported, but this can be suppressed with the |localbank| option: +% \begin{macrocode} +\define@key{isodoc}{localbank}[\localbanktrue]{\localbanktrue} + \newif\iflocalbank\localbankfalse +% \end{macrocode} +% \DescribeMacro{dutch} +% \DescribeMacro{english} +% \DescribeMacro{german} +% \DescribeMacro{american} +% \DescribeMacro{french} +% \DescribeMacro{language} +% The following keys set the language; English, set at the |\EndOfClass| is the +% default. +% \begin{macrocode} +\define@key{isodoc}{dutch} []{\isodoc@dutch} +\define@key{isodoc}{english} []{\isodoc@UKenglish} +\define@key{isodoc}{german} []{\isodoc@german} +\define@key{isodoc}{american}[]{\isodoc@USenglish} +\define@key{isodoc}{french} []{\isodoc@french} +\define@key{isodoc}{language}{\csname isodoc@#1\endcsname} +% \end{macrocode} +% \DescribeMacro{fill} +% \DescribeMacro{nofill} +% The default is to have left, but not right justification, allowing for hyphenation +% in extreme cases: +% \begin{macrocode} +\define@key{isodoc}{fill} []{\rightskip=1\rightskip} +\define@key{isodoc}{nofill}[]{\rightskip=0mm plus 35mm} + \rightskip=0mm plus 35mm +% \end{macrocode} +% \subsubsection{Logo} +% \DescribeMacro{company} +% \DescribeMacro{logoaddress} +% \DescribeMacro{who} +% \DescribeMacro{street} +% \DescribeMacro{city} +% \DescribeMacro{zip} +% \DescribeMacro{country} +% \DescribeMacro{countrycode} +% The logo, by default, consists of a large company or personal name on top a +% rule, with a contact person's name (probably your own name) and address +% hanging under the rule. +% Its contents are defined by the following options: +% \begin{macrocode} +\define@key{isodoc}{company} {\def\company{#1}} + \def\company{\Undefined{company}} +\define@key{isodoc}{logoaddress}{\def\logoaddress{#1}} +\define@key{isodoc}{who} {\def\who{#1}} + \def\who{\Undefined{who}} +\define@key{isodoc}{street} {\def\street{#1}} + \def\street{\Undefined{street}} +\define@key{isodoc}{city} {\def\city{#1}} + \def\city{\Undefined{city}} +\define@key{isodoc}{country} {\def\country{#1}} + \def\country{\Undefined{country}} +\define@key{isodoc}{countrycode}{\def\countrycode{#1}} + \def\countrycode{\Undefined{countrycode}} +\define@key{isodoc}{zip} {\def\zip{#1}} + \def\zip{\Undefined{zip}} +\def\prezip{\ifforeign\countrycode\else\fi} +% \end{macrocode} +% \subsubsection{Address window} +% \DescribeMacro{leftaddress} +% \DescribeMacro{rightaddress} +% \DescribeMacro{addresscenter} +% \DescribeMacro{addresswidth} +% The address can be positioned vertically with the |addresscenter| option; the +% default is 63.5mm. This is the vertical position of the center of the address. +% Horizontally, the address is positioned either left or right, depending on the +% |leftaddress| or |rightaddress| options being used. In the first case, the +% address start at x=35mm, which is the left margin (the default), and thus in +% line with the first header field, in the second case at 105mm, in line with +% the one-but-last header field. +% \begin{macrocode} +\define@key{isodoc}{leftaddress} []{\def\xaddress{\isdc@cw}} + \def\xaddress{\isdc@cw} +\define@key{isodoc}{rightaddress}[]{\def\xaddress{\isdc@iiicw}} +\define@key{isodoc}{addresscenter} {\def\addresscenter{#1}} + \def\addresscenter{63.5} +\define@key{isodoc}{addresswidth} {\def\addresswidth{#1}} + \def\addresswidth{\isdc@iicw} +% \end{macrocode} +% \DescribeMacro{to} +% The |to| option takes the addressee's address lines. Use |\\| to +% separate lines. The info will be split by |\processto| on the first +% |\\| separator into the addressee's name (|\toname|) and his address +% (|\toaddress|) +% The |\toname| will be reported in the pdf's document properties. +% However, this works only if the |to| key is set, with |\setupdocument|, in the +% preamble. If several letters are composed, |to| is normally set in the +% |\letter| or |\invoice| commands and thus is not seen by the |\hypersetup|, +% which is called |\AtBeginDocument|; so set the defaults to +% |Various people| for the |\toname| and make the address undefined: +% \begin{macrocode} +\define@key{isodoc}{to}{\processto{#1}}\def\toname{Various people} + \def\toaddress{\Undefined{to}} +\long\def\processto#1{\xproc #1\\@@@\ifx\toaddress\empty + \else \yproc #1@@@\fi} +\long\def\xproc #1\\#2@@@{\def\toname{#1}\def\toaddress{#2}} +\long\def\yproc #1\\#2@@@{\def\toaddress{#2}} +% \end{macrocode} +% \DescribeMacro{return} +% \DescribeMacro{noreturn} +% \DescribeMacro{returnaddress} +% The default is to have no return address; but this can be changed by using +% the |return| (either in the style file or in the source) or, if the default +% was changed in the style file, remove it with |noreturn| in the source. +% Company and country names are often too long to fit in the address window. Or +% you may want to define an entirely different return address. The +% |returnaddress| option is provided to redefine the return address: +% \begin{macrocode} +\define@key{isodoc}{return} []{\returntrue} + \newif\ifreturn\returnfalse +\define@key{isodoc}{noreturn} []{\returnfalse} +\define@key{isodoc}{returnaddress}{\def\returnaddress{#1}} +% \end{macrocode} +% +% \subsubsection{Header} +% \DescribeMacro{header} +% \DescribeMacro{noheader} +% A header is switched on or off with the |header| and |noheader| options. +% The default is to have a header. +% \begin{macrocode} +\define@key{isodoc}{header} []{\headertrue} + \newif\ifheader\headertrue +\define@key{isodoc}{noheader}[]{\headerfalse} +% \end{macrocode} +% \DescribeMacro{bodyshift} +% The header is the start of the body. It is initially positioned +% at 98mm from the top of the paper, but it can be shifted with +% the |bodyshift| option. +% \begin{macrocode} +\define@key{isodoc}{bodyshift} {\advance\headerpos#1\advance\bodyskip#1mm} + \newdimen\bodyskip\bodyskip=0mm +\newcount\headerpos\headerpos=98 +% \end{macrocode} +% +% \subsubsection{Footer} +% \DescribeMacro{footer} +% \DescribeMacro{nofooter} +% A footer is switched on or off with the |footer| and |nofooter| options. +% The default is the have no footer. +% \begin{macrocode} +\define@key{isodoc}{footer} []{\footertrue} + \newif\iffooter\footerfalse +\define@key{isodoc}{nofooter}[]{\footerfalse} +% \end{macrocode} +% \DescribeMacro{areacode} +% \DescribeMacro{phone} +% \DescribeMacro{phoneprefix} +% \DescribeMacro{cellphone} +% \DescribeMacro{fax} +% \DescribeMacro{website} +% \DescribeMacro{email} +% If there \textsl{is} a page footer, only those fields will be displayed which are not empty. +% Currently the |phone|, |cellphone|, |fax|, |email| and |website| are +% recognised as possible footer fields. Phone and fax number will be prefixed +% with a 0, unless the |foreign| option was used: then the prefix will be +% `+nn-', where nn is the areacode. The latter is set with the |areacode| +% option, which is `Undefined areacode' by default. +% \begin{macrocode} +\define@key{isodoc}{areacode} {\def\areacode{#1}} + \def\areacode{\Undefined{areacode}} +\define@key{isodoc}{phone} {\def\phone{#1}} + \def\phone{} +\define@key{isodoc}{phoneprefix}{\def\phoneprefix{#1}} + \def\phoneprefix{0} +\define@key{isodoc}{cellphone} {\def\cellphone{#1}} + \def\cellphone{} +\define@key{isodoc}{fax} {\def\fax{#1}} + \def\fax{} +\define@key{isodoc}{website} {\def\website{#1}} + \def\website{} +\define@key{isodoc}{email} {\def\email{#1}} + \def\email{} +\def\lead{\ifforeign+\areacode-\else\phoneprefix\fi} +% \end{macrocode} +% \subsubsection{Folding mark} +% \DescribeMacro{nofold} +% The default is to have no folding mark. So start with the folding mark +% position outside the paper boundaries: +% \begin{macrocode} +\define@key{isodoc}{nofold}[]{\yfold=-1mm} + \newdimen\yfold\yfold=-1mm +% \end{macrocode} +% \DescribeMacro{foldleft} +% \DescribeMacro{foldright} +% The folding mark is in the right margin, but it can be moved to the left +% margin with the |foldleft| option, or, if made that the default in your style +% file, back to the right margin with the |foldright| option: +% \begin{macrocode} +\define@key{isodoc}{foldleft}[]{\xfold=9mm} + \newdimen\xfold\xfold=201mm +\define@key{isodoc}{foldright}[]{\xfold=201mm} +% \end{macrocode} +% \DescribeMacro{fold2} +% The envelope for double folded A4 is C5: 162x220mm, +% window 40x110mm, upper left corner at 20x50mm. +% Fold the A4 to have a tolerance of 2mm at top and bottom, by +% putting the fold mark at 162-4=158 mm. +% \begin{macrocode} +\define@key{isodoc}{fold2}[]{\yfold=158mm} +% \end{macrocode} +% \DescribeMacro{fold3} +% The envelope for triple folded A4 is DL: 110x220mm, +% Fold the A4 to have a tolerance of 1.5mm at top and bottom, by +% putting the fold mark at 110-3=107mm. +% \begin{macrocode} +\define@key{isodoc}{fold3}[]{\yfold=107mm} +% \end{macrocode} +% \DescribeMacro{fold} +% For non-standard envelopes and paper formats the position of the +% folding mark can be set at any position (in mm) from the top of the paper: +% \begin{macrocode} +\define@key{isodoc}{fold}{\yfold=#1mm} +% \end{macrocode} +% +% \subsubsection{Header fields} +% There are four header fields, each one quarter of the textwidth wide. +% Under those, if the subject has been defined, a subject line. +% The header position is 98mm by default, but it can be shifted with the |bodyshift| option. +% \DescribeMacro{ourref} +% \DescribeMacro{yourref} +% \DescribeMacro{yourletter} +% \begin{macrocode} +\define@key{isodoc}{ourref} {\def\ourref{#1}} + \def\ourref{} +\define@key{isodoc}{yourref} {\def\yourref{#1}} + \def\yourref{} +\define@key{isodoc}{yourletter}{\def\yourletter{#1}} + \def\yourletter{} +% \end{macrocode} +% \DescribeMacro{date} +% The date must be entered in either of three formats: yyyy-mm-dd, yyyymmdd +% or the string |today|. Here we check that a correct format is offered and +% that the values for |mm| and |dd| are in the range 1--12 and 1--31 respectively. +% The string |today| sets the date to today's date. +% \begin{macrocode} +\define@key{isodoc}{date}{\@isomakedate{#1}} + \def\date{\Undefined{date}} +% \end{macrocode} +% \DescribeMacro{forcedate} +% If you know what you do you can substitute anything you like for the date by +% using the |forcedate| option instead of |date|: +% \begin{macrocode} +\define@key{isodoc}{forcedate}{\def\forcedate{#1}}\def\forcedate{} +% \end{macrocode} +% \DescribeMacro{subject} +% The subject is empty by default and will be typeset. +% \begin{macrocode} +\define@key{isodoc}{subject}{\def\subject{#1}} + \def\subject{} +% \end{macrocode} +% \DescribeMacro{opening} +% \DescribeMacro{openingcomma} +% The opening, something like `Dear Reader', is set by the |opening| option; the +% default is `Undefined opening'. It is followed by a comma, unless the +% |openingcomma| has been used to set it to a different character, like a +% semicolon or an exclamation mark. +% \begin{macrocode} +\newcount\openingpos +\define@key{isodoc}{opening} {\def\opening{#1}} + \def\openingcomma{,} +\define@key{isodoc}{openingcomma}{\def\openingcomma{#1}} + \def\opening{\Undefined{opening}} +% \end{macrocode} +% \subsubsection{Closing, autograph, signature} +% \DescribeMacro{closing} +% \DescribeMacro{closingskip} +% The closing, something like `Best regards', is set by the |closing| option; +% the default is `Undefined closing'. It will be preceded by a vertical skip, +% which can be set by the |closingskip| option, which is |2\baselineskip| by +% default: +% \begin{macrocode} +\define@key{isodoc}{closing} {\def\closing{#1,}} + \def\closing{\Undefined{closing}} % Best regards, +\define@key{isodoc}{closingskip}{\closingskip=#1} + \newdimen\closingskip\closingskip=2\baselineskip +% \end{macrocode} +% \DescribeMacro{autograph} +% The autograph is either just a newline, or a vertical spacing where you can +% put your autograph manually, or a graphic. In the latter case, is must have +% been defined with the macro |\autograph|, which defines an autograph from an +% image, see the section \textsl{User Macros}. +% Not using the |autograph| option is equivalent to |autograph=0| (just a newline). +% Using it without a value is equivalent to |autograph=2| (image inserted): +% \begin{macrocode} +\define@key{isodoc}{autograph}[2]{\def\autographversion{#1}} + \def\autographversion{0} +% \end{macrocode} +% \DescribeMacro{signature} +% The signature, something like `John Letterwriter', is set by the |signature| option; +% the default is `Undefined signature'. +% \begin{macrocode} +\define@key{isodoc}{signature}{\def\signature{#1}} + \def\signature{\Undefined{signature}} +% \end{macrocode} +% \DescribeMacro{enclosures} +% Enclosures are set by the |enclosures| option. There are none by default. +% \begin{macrocode} +\define@key{isodoc}{enclosures} {\def\enclosures{#1}} + \def\enclosures{} +% \end{macrocode} +% \subsubsection{Invoice specific data} +% \DescribeMacro{term} +% \DescribeMacro{accountno} +% \DescribeMacro{routingno} +% \DescribeMacro{accountname} +% \DescribeMacro{iban} +% \DescribeMacro{bic} +% \DescribeMacro{vatno} +% \DescribeMacro{chamber} +% \DescribeMacro{currency} +% Invoices need to state some specific data, like account data and term of +% payment: +% \begin{macrocode} +\define@key{isodoc}{term} [30]{\def\term{#1}} +\define@key{isodoc}{accountno} {\def\accountno{#1}} +\define@key{isodoc}{routingno} {\def\routingno{#1}} +\define@key{isodoc}{accountname}{\def\accountname{#1}} +\define@key{isodoc}{iban} {\def\iban{#1}} +\define@key{isodoc}{bic} {\def\bic{#1}} +\define@key{isodoc}{vatno} {\def\vatno{#1}} +\define@key{isodoc}{chamber} {\def\chamber{#1}} + \def\chamber{Undefined{chamber}} +\define@key{isodoc}{currency} {\def\currency{#1}} + \def\currency{\EUR} +% \end{macrocode} +% \DescribeMacro{accept} +% \DescribeMacro{acceptaccount} +% \DescribeMacro{acceptaddress} +% \DescribeMacro{acceptcents} +% \DescribeMacro{acceptdescription} +% \DescribeMacro{acceptdesc} +% \DescribeMacro{accepteuros} +% \DescribeMacro{acceptreference} +% If an accept form is to be printed, here are the options to fill in all the +% fields: +% \begin{macrocode} +\define@key{isodoc}{accept}[E05]{\def\accepttype{#1} + \newfont\ocrb{ocrb10} + } +\define@key{isodoc}{acceptaccount} {\def\acceptaccount{#1}} + \def\acceptaccount{} +\define@key{isodoc}{acceptaddress} {\def\acceptaddress{#1}} + \def\acceptaddress{} +\define@key{isodoc}{acceptcents} {\def\acceptcents{#1}} + \def\acceptcents{Undefined{}} +\define@key{isodoc}{acceptdescription}{\def\acceptdescription{#1}} + \def\acceptdescription{} +\define@key{isodoc}{acceptdesc} {\def\acceptdesc{#1}} + \def\acceptdesc{} +\define@key{isodoc}{accepteuros} {\def\accepteuros{#1}} + \def\accepteuros{Undefined{}} +\define@key{isodoc}{acceptreference} {\def\acceptreference{#1}} + \def\acceptreference{Undefined{ref}} +% \end{macrocode} +% For now, we define field positons for the E05 accept form only; when data for +% other forms become available, the content of |\accepttype| will have to be +% checked. Here is a rough layout of the E05 accept form -- the last character +% tells if the items are tyepset in a Tbox (T) or in a Cbox (C): +% \pagebreak%%% +% \begin{verbatim} +% description T +% ref description T +% ref euros cents reference C +% +% eur ct account C +% +% desc address T +% desc address +% desc address +% \end{verbatim} +% \begin{macrocode} +\def\xacceptdescription{105}\def\yacceptdescription{200}\def\wacceptdescription{100} %T +\def\xacceptref{7} \def\yacceptref{212} \def\wacceptref{30} %T +\def\xaccepteuros{60} \def\yaccepteuros{216} \def\waccepteuros{32} %C +\def\xacceptcents{89} \def\yacceptcents{216} \def\wacceptcents{13} %C +\def\xacceptreference{125} \def\yacceptreference{216} \def\wacceptreference{55} %C +\def\xaccepteur{14.4} \def\yaccepteur{228.5} \def\waccepteur{21} %C +\def\xacceptct{32} \def\yacceptct{228.5} \def\wacceptct{9} %C +\def\xacceptaccount{75} \def\yacceptaccount{228.5} \def\wacceptaccount{65} %C +\def\xacceptdesc{7} \def\yacceptdesc{241} \def\wacceptdesc{26} %T +\def\xacceptaddress{58} \def\yacceptaddress{241} \def\wacceptaddress{90} %T +% \end{macrocode} +% This is the |\baselineskip| for the two-line reference of the detachable strip: +% \begin{macrocode} +\newdimen\acceptreferenceskip\acceptreferenceskip=5.15mm +% \end{macrocode} +% \subsection{User Macros} +% The autograph is either just a newline, or a vertical spacing where you can +% put your autograph manually, or a graphic. In the latter case, is must have +% been defined with the macro |\autograph|, which defines an autograph from an +% image.\footnote{Thanks, Hans Hagen and Piet van Oostrum, for its definition}\\ +% The arguments 3 - 6 can be found by measuring those (with the gimp, for example) +% in the unscaled (raw) image (which is the last argument). +% \\[1ex] +% \begin{tabularx}{\hsize}{@{}rX@{}} +% arg 1:&2,3,...9: autograph number; will be translated internally to define +% |\autographA|, |\autographB|... |\autographH|\NN +% 2:&scaling factor for the image\NN +% 3:&the distance the autograph outdents in the margin\NN +% 4:&the vertical position of the baseline of the closing (Regards,) from the top\NN +% 5:&the vertical position of the baseline of the signature (John Letterwriter) from the top\NN +% 6:&the height of the image\NN +% 7:&the image (jpg, png, pdf...)\NN +% \end{tabularx} +% \DescribeMacro{\autograph} +% \begin{macrocode} +\newdimen\myoutdent +\newdimen\signskip +\newdimen\mydown +\def\autograph#1#2#3#4#5#6#7{% + \ifnum #1<2 + \ClassError{isodoc}{autograph #1 cannot be changed (first arg must be 2..9)}{} + \fi + \ifnum #1>9 + \ClassError{isodoc}{autograph #1 cannot be changed (first arg must be 2..9)}{} + \fi + \bgroup + \lccode`2=`A \lccode`6=`E + \lccode`3=`B \lccode`7=`F + \lccode`4=`C \lccode`8=`G + \lccode`5=`D \lccode`9=`H + \lowercase{\def\temp{#1}}% + \expandafter\egroup\expandafter\def\csname autograph\temp\endcsname{% + \myoutdent=#3 + \signskip=#5\advance\signskip-#4 + \mydown=#6\advance\mydown-#4 + \par\hspace*{-#2\myoutdent}% + \raisebox{-#2\mydown}[0bp][0bp]{\includegraphics[scale=#2]{#7}}\\[-\baselineskip] + \closing\\[-2\baselineskip]\\[#2\signskip]\signature% + } +} +% \end{macrocode} +% \subsubsection{Logo} +% The logo, by default, consists of a large company name on top a rule, +% with a contact person's name (probably your own name) and address +% hanging under the rule. +% If the osf-txfonts package is used, oldstyle figures are disabled here. +% \DescribeMacro{\logo} +% \begin{macrocode} +\newcommand{\zippedcity}{\ifcityzip\city\ \prezip\ \zip\else\prezip\ \zip\ \city\fi} +\newcommand{\logo}{% + { \parskip=0pt\parindent=0pt + \begin{textblock}{\isdc@ivcw}[0,1](\isdc@cw,20)% + \textsf{\LARGE\company}\\[-1.7ex] % large company name + \rule{\hsize}{.3pt} % on top a rule + \end{textblock} + } + \Tbox{\isdc@ivcw}{22}{\isdc@cw}{\noindent + \footnotesize\sffamily + \ifx\undefined\logoaddress% + \ifx\undefined\tbfigures\else\tbfigures\fi + \ifx\who\empty\else\who\\\fi + \ifx\street\empty\else\street\\\fi + \zippedcity + \ifforeign\\\country\fi + \else\logoaddress\fi + } +} +% \end{macrocode} +% \DescribeMacro{\returnaddress} +% \begin{macrocode} +\def\returnaddress{% + \ifx\undefined\tbfigures\else\tbfigures\fi % when using osf-txfonts... just for me + \company\\ + \street\\ + \zippedcity + \ifforeign\\\country\fi +} +% \end{macrocode} +% \DescribeMacro{\setupdocument} +% \begin{macrocode} +\newcommand{\setupdocument}[1]{ + \setkeys{isodoc}{#1} + \iffooter\else\geometry{bottom=25mm}\fi +} +% \end{macrocode} +% \DescribeMacro{\@isomakedate} +% \begin{macrocode} +\newcount\@isoyear \@isoyear=\year \year=0 +\newcount\@isomonth \@isomonth=\month +\newcount\@isoday \@isoday=\day +\def\@isomakedate#1{% + \def\@isoarg{#1}\def\@isotoday{today} + \ifx\@isoarg\@isotoday + \year=\@isoyear + \month=\@isomonth + \day=\@isoday + \else + \stringlength[q]{\@isoarg} + \ifnum\theresult=10 + \substring[q]{\@isoarg}{5}{5} + \if\thestring-\else\ClassError{isodoc}{ + Illegal date separator: \thestring (must be -)}{}\fi + \substring[q]{\@isoarg}{8}{8} + \if\thestring-\else\ClassError{isodoc}{ + Illegal date separator: \thestring (must be -)}{}\fi + \else + \ifnum\theresult=8\else\ClassError{isodoc}{ + Illegal date: not yyyymmdd | yyyy-mm-dd | today}{}\fi + \fi + \Treatments{0}{0}{0}{1}{0}{0} + \substring[q]{\@isoarg}{1}{$} \let\@isodigits=\thestring \def\@isoarg{\thestring} + \stringlength[q]{\@isodigits} + \ifnum\theresult=8\else\ClassError{isodoc}{Illegal date: must have 8 digits}{}\fi + \substring[q]{\@isoarg}{1}{4} \year=\thestring \def\@isoarg{\@isodigits} + \substring[q]{\@isoarg}{5}{6} \month=\thestring \def\@isoarg{\@isodigits} + \substring[q]{\@isoarg}{7}{8} \day=\thestring \def\@isoarg{\@isodigits} + \ifnum \month > 12 \ClassError{isodoc}{Illegal date: month>12}{}\fi + \ifnum \day > 31 \ClassError{isodoc}{Illegal date: day>31}{}\fi + \fi +} +% \end{macrocode} +% \DescribeMacro{\footfield} +% Create any non-empty footfields, starting at left arguments: +% \begin{compactenum} +% \item fieldlabel +% \item a prefix for the content (for phone numbers) +% \item the content +% \end{compactenum} +% \begin{macrocode} +\def\footfield#1#2#3{% + \ifx#3\empty\else + \Tbox{\footcount}{\isodoc@footpos}{\isdc@cw}{\noindent + {\@hft#1}\\ + #2#3 + } + \advance\footcount\isdc@cw + \fi +} +% \end{macrocode} +% \DescribeMacro{\accountdata} +% Print a table with banking information. Show account number, account +% name + city, and a reference. If the |foreign| key was used, +% \textsc{iban} and \textsc{bic} codes are also reported, but can be suppressed +% with the |localbank| option. +% \begin{macrocode} +\def\accountdata{ + \textbf{\accountdatatext:}\\ + \begin{tabular}{@{}rl@{}} + \ifx\term\undefined\else + \termtext: & \term\ \daystext\\ + \fi + \accountnotext: & \accountno\\ + \ifx\accountname\undefined\else + \accountnametext: & \accountname{}\\ + \fi + \ifx\routingno\undefined\else + \routingnotext: & \routingno{}\\ + \fi + \referencetext: & \ourref\\ + \ifforeign + \iflocalbank\else + iban: & \scshape \iban\\ + bic: & \scshape \bic\\ + \fi + \fi + \ifx\vatno\undefined\else + \vatnotext: & \vatno\\ + \fi + \end{tabular} +} +% \end{macrocode} +% The |\showkeys| command is useful for debugging. It prints a table showing the +% values of most keys.\footnote{Note for developers: the table lines below can +% be generated with a ruby script listkeys (included in the distribution): +% |listkeys defs|} +% \DescribeMacro{\showkeys} +% \begin{macrocode} +\def\showkeys{% + \begin{tabular}{ll} + accept & \accept\NN + acceptaccount & \acceptaccount\NN + acceptaddress & \acceptaddress\NN + acceptcents & \acceptcents\NN + acceptdesc & \acceptdesc\NN + acceptdescription & \acceptdescription\NN + accepteuros & \accepteuros\NN + acceptreference & \acceptreference\NN + accountname & \accountname\NN + accountno & \accountno\NN + addresscenter & \addresscenter\NN + addresswidth & \addresswidth\NN + areacode & \areacode\NN + autograph & \autograph\NN + bic & \bic\NN + cellphone & \cellphone\NN + chamber & \chamber\NN + city & \city\NN + closing & \closing\NN + company & \company\NN + country & \country\NN + countrycode & \countrycode\NN + currency & \currency\NN + email & \email\NN + enclosures & \enclosures\NN + fax & \fax\NN + forcedate & \forcedate\NN + iban & \iban\NN + leftaddress & \leftaddress\NN + logoaddress & \logoaddress\NN + opening & \opening\NN + openingcomma & \openingcomma\NN + ourref & \ourref\NN + phone & \phone\NN + phoneprefix & \phoneprefix\NN + returnaddress & \returnaddress\NN + rightaddress & \rightaddress\NN + routingno & \routingno\NN + signature & \signature\NN + street & \street\NN + subject & \subject\NN + term & \term\NN + vatno & \vatno\NN + website & \website\NN + who & \who\NN + yourletter & \yourletter\NN + yourref & \yourref\NN + zip & \zip\NN + \end{tabular} +} +\AtEndOfClass{% + \usepackage{hyperref} + \year=0 +} +\AtEndDocument{% + \hypersetup{pdfauthor={\who}, + pdfproducer={isodoc v\fileversion} + } +} +% \DescribeMacro{\itable} +% |\itable| inserts an invoice table; arg1 should be the rows of the table. +% \begin{macrocode} +\def\itable#1{ + \begin{tabularx}{\hsize}{@{}X@{\barsep\quad\qquad}r@{}} + \multicolumn{2}{@{}c@{}}{\sffamily\descriptiontext\hfill + \amounttext (\currency)}\ML + #1 + \end{tabularx} +} +% \DescribeMacro{\iitem} +% |\iitem| inserts an invoice item in the |\itable|. +% It inserts |arg1 & arg2\NN|: +% \begin{macrocode} +\def\iitem#1#2{#1\NN} +% \DescribeMacro{\itotal} +% \end{macrocode} +% |\itotal| inserts an invoice total in the |\itable|.\\ +% It inserts |\cmidrule[.05em]{2-2}Total & arg1\NN|: +% \begin{macrocode} +\def\itotal#1{\cmidrule[.05em]{2-2}\totaltext&\textbf{#1}\NN} +% \end{macrocode} +% The counter |\lettercount| is used to construct a label on the last +% page of each letter/invoice of this document; it wil be set to +% \texttt{LastPageOf\textsl{n}}, where \textsl{n} is the letter +% number: 1, 2, 3, ... This allows for page headings saying ``Page n +% of m.'' This label is automatically added at the end of each letter. +% \begin{macrocode} +\newcounter{lettercount}\setcounter{lettercount}{0} +% \end{macrocode} +% \DescribeMacro{\invoice} +% |\invoice| prints an invoice. The first argument is optional, and may +% contain the same \textsl{key=value} statement as |\setupdocument|. This is +% useful if the document contains more than one invoice for different +% addressees. +% +% The second argument creates a two-column table with headings +% ``Description'' and ``Amount (\EUR)''. The two columns are separated +% with a vertical rule; its construction is somewhat complicated, as the +% booktabs/ctable packages are in use that don't provide decent vertical +% separators. The |\barsep| macro extends these separators vertically. +% \begin{macrocode} +\newif\ifclosing\closingtrue +\newcount\footcount +\newcommand{\invoice}[2][]{% + \closingfalse + \def\barsep{\raisebox{-1.5ex}[0pt][0pt]{\rule{.05em}{4ex}}}% + \letter[#1, + opening={\bfseries\scshape\Large\invoicetext}, + openingcomma={}, + closing={}, + signature={}]{% + \Tbox{\isdc@cw}{127}{\isdc@ivcw}{#2} + } +} +% \end{macrocode} +% \DescribeMacro{\letter} +% |\letter| prints a letter... +% The code is enclosed in an extra pair of braces, in order to keep option changes local +% \begin{macrocode} +\newcommand{\letter}[2][]{{% + \newpage + \setkeys{isodoc}{#1} +% \end{macrocode} +% By now, a language should have been chosen; if not, issue a warning +% and set the language to the default: UKenglish +% \begin{macrocode} + \ifx\yourlettertext\undefined\ClassWarning{isodoc}{ + You did not use the language option; using the default: English + }\isodoc@UKenglish\fi + \ifnum\value{lettercount}=0% + \hypersetup{pdftitle={letter to \toname\ dated \today}, + pdfsubject={\subject}} + \fi + \addtocounter{lettercount}{1} + \setcounter{page}{1} + \setcounter{footnote}{0} + \fancyhf{} + \if@twoside + \fancyhead[LE,RO]{\color{headingcolor}% + \pagetext\ \thepage\ \oftext{} \begin{NoHyper}\pageref{LastPageOf\thelettercount}\end{NoHyper}} + \fancyhead[RE,LO]{\color{headingcolor}% + \totext: \toname\ (\date)} + \else + \fancyhead[L]{\color{headingcolor}% + \totext: \toname\ (\date)} + \fancyhead[R]{\color{headingcolor}% + \pagetext\ \thepage\ \oftext{} \begin{NoHyper}\pageref{LastPageOf\thelettercount}\end{NoHyper}} + \fi + \logo +% \end{macrocode} +% addresscenter is the center, vertically, of the to-address block: +% xaddress should be 1 or 3 for left- and right address windows +% \begin{macrocode} + { \parskip=0pt\parindent=0pt + \begin{textblock}{\addresswidth}[0,.5](\xaddress,\addresscenter)% + \ifreturn + {\def\\{\unskip\enspace\textbullet\enspace\ignorespaces}% + \sffamily\bfseries\scriptsize\returnaddress + }\\[-.8\baselineskip] + \rule{\hsize}{.2pt}\\ + \fi + \toname\\\toaddress + \end{textblock} + } + \openingpos=\headerpos + \ifheader + \advance\openingpos12 + \advance\bodyskip12mm + \Tbox{\isdc@cw}{\headerpos}{\isdc@cw}{\noindent + {\@hft\yourlettertext}\\ + \yourletter + } + \Tbox{\isdc@iicw}{\headerpos}{\isdc@cw}{\noindent + {\@hft\yourreftext}\\ + \raggedright\yourref + } + \Tbox{\isdc@iiicw}{\headerpos}{\isdc@cw}{\noindent + {\@hft\ourreftext}\\ + \raggedright\ourref + } + \Tbox{\isdc@ivcw}{\headerpos}{\isdc@cw}{\noindent + {\@hft\datetext}\\ + \ifx\forcedate\empty% + \ifnum\year=0\Undefined{date}\else\date\fi + \else\forcedate\fi + } + \ifx\subject\empty\else% + \advance\openingpos10 + \advance\bodyskip10mm + \Tbox{\isdc@cw}{108}{\isdc@iiicw}{\noindent + \begin{tabularx}{\hsize}{@{}l>{\raggedright}X@{}} + \@hft\subjecttext&\subject + \end{tabularx} + } + \fi + \fi + \footcount=\isdc@cw + \iffooter + \footfield{\websitetext}{}{\website} + \footfield{\phonetext}{\lead}{\phone} + \footfield{\cellphonetext}{\lead}{\cellphone} + \footfield{\faxtext}{\lead}{\fax} + \footfield{\emailtext}{}{\email} + \fi + { \parskip=0pt\parindent=0pt + \begin{textblock*}{3mm}(\xfold,\yfold)% + {\color{markercolor}\rule{\hsize}{.2pt}} + \end{textblock*} + } + \ifx\undefined\accepttype\else\accept\fi + \ifx\subject\empty\vspace*{80mm}\else\vspace*{90mm}\fi + \noindent\Tbox{\isdc@cw}{\ifx\subject\empty110\else120\fi}{\isdc@ivcw}{\opening\openingcomma} + \thispagestyle{empty} + \noindent + #2 + {\parindent=0pt\parskip=\baselineskip + \ifclosing + \ifcase\autographversion + \par\closing\\\signature % 0: closing on the next line + \or\par\closing\\[\closingskip]\signature % 1: whiteskip + \or\autographA + \or\autographB + \or\autographC + \or\autographD + \or\autographE + \or\autographF + \or\autographG + \or\autographH + \else + \par\Undefined{autograph: \autographversion}\\ + \fi + \fi + \ifx\enclosures\empty\else + \vfill + \setbox1=\vbox{\enclosures}% + \textbf{\ifdim\ht1>\baselineskip\enclosurestext\else\enclosuretext\fi}% + \\\enclosures + \fi + } + \label{LastPageOf\thelettercount} +}} +% \end{macrocode} +% \subsection{Internal Macros} +% The accept is produced from |\Tbox| and |\Cbox| commands only, using the +% |textpos| package: +% \DescribeMacro{\Cbox} +% |\Cbox{x}{y}{width}{text}| places |text| in a box of |\testsl{width}| mm, centered around (|x|,|y|) in mm: +% \begin{macrocode} +\def\Cbox#1#2#3#4{% + { \parskip=0pt\parindent=0pt + \begin{textblock}{#3}[.5,.5](#1,#2)% + \begin{center} + #4 + \end{center} + \end{textblock} + } +} +% \end{macrocode} +% \DescribeMacro{\Tbox} +% |\Tbox{x}{y}{width}{text}| places |text| in a box of |\testsl{width}| mm, with the upper left corner at (|x|,|y|) in mm: +% \begin{macrocode} +\long\def\Tbox#1#2#3#4{% + { \parskip0pt\parindent=0pt + \begin{textblock}{#3}(#1,#2)% + \begin{minipage}[t]{\hsize} + \noindent#4 + \end{minipage} + \end{textblock} + } +} +% \end{macrocode} +% \DescribeMacro{\accept} +% This macro will have a parameter if other accept forms will have to be +% programmed: +% \begin{macrocode} +\def\accept{ + \Tbox{\xacceptdescription} + {\yacceptdescription} + {\wacceptdescription} + {\acceptdescription} + \Tbox{\xacceptdesc} + {\yacceptdesc} + {\wacceptdesc} + {\acceptdesc} + \Tbox{\xacceptaddress} + {\yacceptaddress} + {\wacceptaddress} + {\ifx\acceptaddress\empty\toname\\\toaddress\else\acceptaddress\fi} + \Cbox{\xacceptreference} + {\yacceptreference} + {\wacceptreference} + {\ocrb\acceptreference} + \Tbox{\xacceptref} + {\yacceptref} + {\wacceptref} + {\baselineskip=\acceptreferenceskip\ocrb\acceptreference} + \Cbox{\xaccepteuros} + {\yaccepteuros} + {\waccepteuros} + {\ocrb\accepteuros} + \Cbox{\xacceptaccount} + {\yacceptaccount} + {\wacceptaccount} + {\ocrb\acceptaccount} + \Cbox{\xacceptcents} + {\yacceptcents} + {\wacceptcents} + {\ocrb\acceptcents} + \Cbox{\xaccepteur} + {\yaccepteur} + {\waccepteur} + {\ocrb\accepteuros} + \Cbox{\xacceptct} + {\yacceptct} + {\wacceptct} + {\ocrb\acceptcents} +} +% \end{macrocode} +% \DescribeMacro{\isodoc@catalan} +% contributed by Cristian Peraferrer: +% \begin{macrocode} +\def\isodoc@catalan{% + \gdef\accountdatatext {Dades banc\`aries} + \gdef\accountnametext {a nom de} + \gdef\accountnotext {N\'um. de compte} + \gdef\amounttext {Quantitat} + \gdef\ccname {cc} + \gdef\cellphonetext {M\`obil} + \gdef\chambertext {Cambra de comer\c{c}} + \gdef\datetext {Data} + \gdef\daystext {dies} + \gdef\descriptiontext {Descripci\'o} + \gdef\emailtext {E-mail} + \gdef\enclosurestext {Annexos:} + \gdef\enclosuretext {Annex:} + \gdef\faxtext {Fax} + \gdef\invoicetext {factura} + \gdef\oftext {de} + \gdef\ourreftext {La nostra refer\`encia} + \gdef\pagetext {P\`agina} + \gdef\phonetext {Tel\`efon} + \gdef\referencetext {Refer\`encia} + \gdef\routingnotext {Nombre de ruta} + \gdef\subjecttext {Assumpte} + \gdef\termtext {Termini del pagament} + \gdef\totaltext {Total} + \gdef\totext {A} + \gdef\vatnotext {N\'um. IVA} + \gdef\vattext {IVA} + \gdef\websitetext {Web} + \gdef\yourlettertext {La seva carta del} + \gdef\yourreftext {La seva refer\`encia} + \gdef\date {\number\day\space\ifcase\month\or + gener\or febrer\or mar\c{c}\or abril\or maig\or juny\or + juliol\or agost\or setembre\or octubre\or novembre\or desembre\fi + \space \number\year + } +} +% \end{macrocode} +% \DescribeMacro{\isodoc@dutch} +% \begin{macrocode} +\def\isodoc@dutch{% + \gdef\accountdatatext {Betalingsgegevens} + \gdef\accountnametext {ten name van} + \gdef\accountnotext {rekening nr} + \gdef\amounttext {Bedrag} + \gdef\ccname {Cc:} + \gdef\cellphonetext {mobiel} + \gdef\chambertext {kvk} + \gdef\datetext {Datum} + \gdef\daystext {dagen} + \gdef\descriptiontext {Omschrijving} + \gdef\emailtext {e-mail} + \gdef\enclosurestext {Bijlagen:} + \gdef\enclosuretext {Bijlage:} + \gdef\faxtext {telefax} + \gdef\invoicetext {rekening} + \gdef\oftext {van} + \gdef\ourreftext {Ons kenmerk} + \gdef\pagetext {Bladnummer} + \gdef\phonetext {telefoon} + \gdef\referencetext {kenmerk} + \gdef\routingnotext {banknummer} + \gdef\subjecttext {Onderwerp:} + \gdef\termtext {betalingstermijn} + \gdef\totaltext {Totaal} + \gdef\totext {Aan} + \gdef\vatnotext {btw nr} + \gdef\vattext {Btw} + \gdef\websitetext {webstek} + \gdef\yourlettertext {Uw brief van} + \gdef\yourreftext {Uw kenmerk} + \gdef\date {\number\day\space\ifcase\month\or + januari\or februari\or maart\or april\or mei\or juni\or juli\or + augustus\or september\or oktober\or november\or december\fi + \space \number\year} +} +% \end{macrocode} +% \DescribeMacro{\isodoc@french} +% \begin{macrocode} +\def\isodoc@french{% + \gdef\accountdatatext {Donn\'ees banquaires} + \gdef\accountnametext {au nom de} + \gdef\accountnotext {no. compte} + \gdef\amounttext {Montant} + \gdef\ccname {Copie \`a} + \gdef\cellphonetext {portable} + \gdef\chambertext {c.c.i.} + \gdef\datetext {Date:} + \gdef\daystext {jours} + \gdef\descriptiontext {Description} + \gdef\emailtext {email} + \gdef\enclosurestext {Pi\`eces jointes:} + \gdef\enclosuretext {Pi\`ece jointe:} + \gdef\faxtext {t\'el\'efax} + \gdef\invoicetext {facture} + \gdef\oftext {de} + \gdef\ourreftext {Nos r\'ef\'erences:} + \gdef\pagetext {Page} + \gdef\phonetext {t\'el\'ephone} + \gdef\referencetext {r\'ef\'erence} + \gdef\routingnotext {num\'ero d'acheminement} + \gdef\subjecttext {Objet:} + \gdef\termtext {terme} + \gdef\totaltext {Total} + \gdef\totext {\`A l'attention de} + \gdef\vatnotext {no. T.V.A.} + \gdef\vattext {T.V.A.} + \gdef\websitetext {site Web} + \gdef\yourlettertext {Votre lettre du} + \gdef\yourreftext {Vos r\'ef\'erences:} + \gdef\date {\number\day\ifnum\day=1$^{er}$\fi\space\ifcase\month\or + janvier\or f\'evrier\or mars\or avril\or mai\or juin\or + juillet\or ao\^ut\or septembre\or octobre\or + novembre\or d\'ecembre\fi \space \number\year} +} +% \end{macrocode} +% \DescribeMacro{\isodoc@german} +% \begin{macrocode} +\def\isodoc@german{% + \gdef\accountdatatext {Bezahlungsdaten} + \gdef\accountnametext {Name} + \gdef\accountnotext {Konto Nr} + \gdef\amounttext {Betrag} + \gdef\ccname {Kopien an} + \gdef\cellphonetext {Handy} + \gdef\chambertext {Register Nr} + \gdef\datetext {Datum} + \gdef\daystext {Tage} + \gdef\descriptiontext {Umschreibung} + \gdef\emailtext {E-mail} + \gdef\enclosurestext {Anlagen:} + \gdef\enclosuretext {Anlage:} + \gdef\faxtext {Telefax} + \gdef\invoicetext {rechnung} + \gdef\oftext {aus} + \gdef\ourreftext {Unser Zeichen} + \gdef\pagetext {Seite} + \gdef\phonetext {Telefon} + \gdef\referencetext {Beleg Nr} + \gdef\routingnotext {BLZ} + \gdef\subjecttext {Betrifft:} + \gdef\termtext {Zahlungstermin} + \gdef\totaltext {Insgesamt} + \gdef\totext {An} + \gdef\vatnotext {Ustid Nr} + \gdef\vattext {MwSt} + \gdef\websitetext {Webseite} + \gdef\yourlettertext {Ihr Brief vom} + \gdef\yourreftext {Ihr Zeichen} + \gdef\date {\number\day.\space\ifcase\month\or + Januar\or Februar\or M\"arz\or April\or Mai\or Juni\or + Juli\or August\or September\or Oktober\or November\or Dezember\fi + \space\number\year} +} +% \end{macrocode} +% \DescribeMacro{\isodoc@italian} +% contributed by Walter Giocoso: +% \begin{macrocode} +\def\isodoc@italian{% + \gdef\accountdatatext {Coordinate bancarie} + \gdef\accountnametext {intestato a} + \gdef\accountnotext {n$^o$~del conto} + \gdef\amounttext {Prezzo} + \gdef\ccname {Per conoscenza a:} + \gdef\cellphonetext {cellulare:} + \gdef\chambertext {} + \gdef\datetext {Data:} + \gdef\daystext {giorni} + \gdef\descriptiontext {Descrizione} + \gdef\emailtext {e-mail:} + \gdef\enclosurestext {Allegati:} + \gdef\enclosuretext {Allegato:} + \gdef\faxtext {fax:} + \gdef\invoicetext {fattura} + \gdef\oftext {di} + \gdef\ourreftext {Nostro riferimento:} + \gdef\pagetext {Pagina} + \gdef\phonetext {telefono:} + \gdef\referencetext {riferimento} + \gdef\routingnotext {numero di routing} + \gdef\subjecttext {Oggetto:} + \gdef\termtext {scadenza} + \gdef\totaltext {Totale} + \gdef\totext {All'attenzione di:} + \gdef\vatnotext {Partita I.V.A.} + \gdef\vattext {I.V.A.} + \gdef\websitetext {sito Web:} + \gdef\yourlettertext {Vostra lettera del:} + \gdef\yourreftext {Vostro riferimento:} + \gdef\date {\number\day\ifnum\day=1\fi + ~\ifcase\month\or + Gennaio\or Febbraio\or Marzo\or Aprile\or Maggio\or Giugno\or + Luglio\or Agosto\or Settembre\or Ottobre\or Novembre\or Dicembre\fi + \space \number\year} +} +% \end{macrocode} +% \DescribeMacro{\isodoc@norsk} +% contributed by Sveinung Heggen: +% \begin{macrocode} +\def\isodoc@norsk {% + \gdef\accountdatatext {betales til} + \gdef\accountnametext {til} + \gdef\accountnotext {faktura nr} + \gdef\amounttext {Bel\o{}p} + \gdef\ccname {kopi til:} + \gdef\cellphonetext {mobil} + \gdef\chambertext {} + \gdef\datetext {Dato} + \gdef\daystext {dager} + \gdef\descriptiontext {Beskrivelse} + \gdef\emailtext {e-post} + \gdef\enclosurestext {Vedlegg:} + \gdef\enclosuretext {Vedlegg:} + \gdef\faxtext {telefaks} + \gdef\invoicetext {faktura} + \gdef\oftext {av} + \gdef\ourreftext {V\aa{}r ref:} + \gdef\pagetext {Side} + \gdef\phonetext {telefon} + \gdef\referencetext {referanse} + \gdef\routingnotext {routing-nummer} + \gdef\subjecttext {Vedr:} + \gdef\termtext {betalingsfrist} + \gdef\totaltext {Total} + \gdef\totext {Til} + \gdef\vatnotext {Org. nr.} + \gdef\vattext {Mva} + \gdef\websitetext {hjemmeside} + \gdef\yourlettertext {Deres brev av} + \gdef\yourreftext {Deres ref:} + \gdef\date {\number\day.\space\ifcase\month\or + januar\or februar\or mars\or april\or mai\or juni\or + juli\or august\or september\or oktober\or november\or desember\fi + \space \number\year} +} +% \end{macrocode} +% \DescribeMacro{\isodoc@serbian} +% contributed by Zoran T. Filipovic: +% \begin{macrocode} +\def\isodoc@serbian {% + \gdef\totaltext {Ukupno} + \gdef\vattext {PDV} + \gdef\accountdatatext {Podaci o bankarskom sektoru} + \gdef\accountnametext {na ime} + \gdef\accountnotext {Ra\v cun br.} + \gdef\amounttext {Iznos} + \gdef\ccname {Kopije} + \gdef\cellphonetext {Mobilni} + \gdef\chambertext {Spisak br.} + \gdef\datetext {Datum} + \gdef\daystext {dana} + \gdef\descriptiontext {Opis} + \gdef\emailtext {Email} + \gdef\enclosurestext {Prilozi:} + \gdef\enclosuretext {Prilog:} + \gdef\faxtext {Telefax} + \gdef\invoicetext {faktura} + \gdef\oftext {od} + \gdef\ourreftext {Na\v s broj} + \gdef\pagetext {Strana} + \gdef\phonetext {Telefon} + \gdef\referencetext {Dokumet br.} + \gdef\routingnotext {BLZ} + \gdef\subjecttext {Predmet:} + \gdef\termtext {rok pla\' canja} + \gdef\totext {U} + \gdef\vatnotext {porez br.} + \gdef\websitetext {Website} + \gdef\yourlettertext {Va\v se pismo od} + \gdef\yourreftext {Va\v s broj} + \gdef\date{\number\day.~\ifcase\month\or + Januar\or Februar\or Mart\or April\or Maj\or Jun\or + Jul\or Avgust\or Septembar\or Oktobar\or Novembar\or Decembar\fi + \space\number\year} +} +% \end{macrocode} +% \DescribeMacro{\isodoc@spanish} +% contributed by Cristian Peraferrer: +% \begin{macrocode} +\def\isodoc@spanish{% + \gdef\accountdatatext {Datos bancarios} + \gdef\accountnametext {a nombre de} + \gdef\accountnotext {N\'um. de cuenta} + \gdef\amounttext {Cantidad} + \gdef\ccname {cc} + \gdef\cellphonetext {M\'ovil} + \gdef\chambertext {C\'amara de comercio} + \gdef\datetext {Fecha} + \gdef\daystext {d\'{\i}as} + \gdef\descriptiontext {Descripci\'on} + \gdef\emailtext {E-mail} + \gdef\enclosurestext {Anexos:} + \gdef\enclosuretext {Anexo:} + \gdef\faxtext {Fax} + \gdef\invoicetext {factura} + \gdef\oftext {de} + \gdef\ourreftext {Nuestra referencia} + \gdef\pagetext {P\'agina} + \gdef\phonetext {Tel\'efono} + \gdef\referencetext {Referencia} + \gdef\routingnotext {n\'umero de ruta} + \gdef\subjecttext {Asunto} + \gdef\termtext {Plazo de pago} + \gdef\totaltext {Total} + \gdef\totext {A} + \gdef\vatnotext {N\'um. IVA} + \gdef\vattext {IVA} + \gdef\websitetext {Web} + \gdef\yourlettertext {Su carta de} + \gdef\yourreftext {Su referencia} + \gdef\date {\number\day\space\ifcase\month\or + enero\or febrero\or marzo\or abril\or mayo\or junio\or + julio\or agosto\or septiembre\or octubre\or noviembre\or diciembre\fi + \space \number\year + } +} +% \DescribeMacro{\isodoc@UKenglish} +% \begin{macrocode} +\def\isodoc@UKenglish{% + \gdef\accountdatatext {Banking data} + \gdef\accountnametext {in the name of} + \gdef\accountnotext {Account no.} + \gdef\amounttext {Amount} + \gdef\ccname {cc} + \gdef\cellphonetext {cellphone} + \gdef\chambertext {ch.comm.} + \gdef\datetext {Date} + \gdef\daystext {days} + \gdef\descriptiontext {Description} + \gdef\emailtext {email} + \gdef\enclosurestext {Enclosures:} + \gdef\enclosuretext {Enclosure:} + \gdef\faxtext {telefax} + \gdef\invoicetext {invoice} + \gdef\oftext {of} + \gdef\ourreftext {Our reference} + \gdef\pagetext {Page} + \gdef\phonetext {telephone} + \gdef\referencetext {Reference} + \gdef\routingnotext {Routing no} + \gdef\subjecttext {Subject:} + \gdef\termtext {term of payment} + \gdef\totaltext {Total} + \gdef\totext {To} + \gdef\vatnotext {vat no.} + \gdef\vattext {Vat} + \gdef\websitetext {website} + \gdef\yourlettertext {Your letter of} + \gdef\yourreftext {Your reference} + \gdef\date{\ifcase\day\or + 1st\or 2nd\or 3rd\or 4th\or 5th\or + 6th\or 7th\or 8th\or 9th\or 10th\or + 11th\or 12th\or 13th\or 14th\or 15th\or + 16th\or 17th\or 18th\or 19th\or 20th\or + 21st\or 22nd\or 23rd\or 24th\or 25th\or + 26th\or 27th\or 28th\or 29th\or 30th\or + 31st\fi\space\ifcase\month\or + January\or February\or March\or April\or May\or June\or + July\or August\or September\or October\or November\or December\fi + \space \number\year} +} +% \end{macrocode} +% \DescribeMacro{\isodoc@USenglish} +% \begin{macrocode} +\def\isodoc@USenglish{% + \gdef\accountdatatext {Bank details} + \gdef\accountnametext {in the name of} + \gdef\accountnotext {Account no.} + \gdef\amounttext {Amount} + \gdef\ccname {cc} + \gdef\cellphonetext {cellphone} + \gdef\chambertext {ch.comm.} + \gdef\datetext {Date} + \gdef\daystext {days} + \gdef\descriptiontext {Description} + \gdef\emailtext {email} + \gdef\enclosurestext {Enclosures:} + \gdef\enclosuretext {Enclosure:} + \gdef\faxtext {telefax} + \gdef\invoicetext {invoice} + \gdef\oftext {of} + \gdef\ourreftext {Our reference} + \gdef\pagetext {Page} + \gdef\phonetext {telephone} + \gdef\referencetext {Reference} + \gdef\routingnotext {Routing no} + \gdef\subjecttext {Subject:} + \gdef\termtext {term of payment} + \gdef\totaltext {Total} + \gdef\totext {To} + \gdef\vatnotext {vat no.} + \gdef\vattext {Vat} + \gdef\websitetext {website} + \gdef\yourlettertext {Your letter of} + \gdef\yourreftext {Your reference} + \gdef\date {\ifcase\month\or + January\or February\or March\or April\or May\or June\or + July\or August\or September\or October\or November\or December\fi + \space\number\day, \number\year} +} +% \end{macrocode} +% \Finale +\endinput +$Id: isodoc.dtx,v 1.30 2010-01-11 20:56:21 wybo Exp $ |