summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/facsimile
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/facsimile
Initial commit
Diffstat (limited to 'macros/latex/contrib/facsimile')
-rw-r--r--macros/latex/contrib/facsimile/README61
-rw-r--r--macros/latex/contrib/facsimile/facsimile.dtx1161
-rw-r--r--macros/latex/contrib/facsimile/facsimile.ins32
-rw-r--r--macros/latex/contrib/facsimile/facsimile.pdfbin0 -> 40746 bytes
4 files changed, 1254 insertions, 0 deletions
diff --git a/macros/latex/contrib/facsimile/README b/macros/latex/contrib/facsimile/README
new file mode 100644
index 0000000000..3a6da54e96
--- /dev/null
+++ b/macros/latex/contrib/facsimile/README
@@ -0,0 +1,61 @@
+
+ The facsimile LaTeX package
+
+
+ facsimile v1.1 (2002/02/25)
+ CTAN:macros/latex/contrib/facsimile
+ Copyright (C) 2003 Torsten Bronger
+ Distributed under the terms of LPPL
+
+
+Abstract
+
+The facsimile package provides a simple interface for creating a fax.
+This covers by and large two areas: First, a title page is created with
+a detailed fax header. And secondly, every page gets headers and
+footers so that the recipient can be sure to have received all pages and
+complete pages, and to have the correct order.
+
+Supported languages: Afrikaans, Dutch, English, French, German, Italian,
+Portuguese, Spanish, and Swedish.
+
+
+Files
+
+README This file.
+facsimile.dtx Documentation and code for facsimile.cls.
+facsimile.ins Installation script.
+facsimile.pdf Ready-to-print package manual.
+
+
+Installation
+
+1) tex facsimile.ins
+ unpacks `facsimile.cls' and the example files `fac-en.cfg',
+ `fac-de.cfg', and `example.tex' from facsimile.dtx.
+
+2) Edit `facsimile.cfg'
+ if you need to set your default options. You may use `fac-en.cfg'
+ or `fac-de.cfg' as your starting point.
+
+3) Copy facsimile.cls and facsimile.cfg
+ into a directory searched by LaTeX.
+
+
+Documentation
+
+The package contains the manual `facsimile.pdf'. So you don't have to
+make the manual, but you can remake it. To create the same manual, type
+
+ pdflatex facsimile.dtx
+ pdflatex facsimile.dtx
+ makeindex -s gind facsimile.idx
+ pdflatex facsimile.dtx
+
+(or simply "latex facsimile.dtx" to get a DVI file). To create the full
+documentation with the code description, first add a percent sign at the
+beginning of the line
+
+ \OnlyDescription
+
+in `facsimile.dtx'.
diff --git a/macros/latex/contrib/facsimile/facsimile.dtx b/macros/latex/contrib/facsimile/facsimile.dtx
new file mode 100644
index 0000000000..a8836c2dcc
--- /dev/null
+++ b/macros/latex/contrib/facsimile/facsimile.dtx
@@ -0,0 +1,1161 @@
+% \iffalse meta-comment -*- Mode: LaTeX; coding: ascii; -*-
+% $Id: facsimile.dtx,v 1.11 2003/04/25 16:54:49 bronger Exp bronger $
+%
+% facsimile.dtx - Package for writing faxes
+% Copyright 2003 Torsten Bronger
+% <bronger@users.sourceforge.net>
+%
+% This program may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.2
+% of this licence or (at your option) any later version.
+% The latest version of this licence 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
+%
+% \CheckSum{732}
+%% \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 \~}
+%%
+%
+% \DoNotIndex{\@@par,\@M,\@bsphack,\@cdr,\@esphack,\@ifstar,\@ifundefined}
+% \DoNotIndex{\@nil,\@nobreakcr,\@nobreakvspace,\@nobreakvspacex,\@normalcr}
+% \DoNotIndex{\@tempboxa,\@tempdima,\@tempdimb,\ ,\\,\,,\addto,\addtolength}
+% \DoNotIndex{\advance,\begin,\begingroup,\csname,\DeclareRobustCommand}
+% \DoNotIndex{\def,\else,\emph,\end,\endcsname,\endgroup,\expandafter}
+% \DoNotIndex{\fi,\gdef,\hbadness,\hbox,\hskip,\hss,\ht,\ifdim}
+% \DoNotIndex{\ifx,\leavevmode,\let,\mbox,\medskipamount,\newcommand}
+% \DoNotIndex{\newdimen,\nobreak,\p@,\par,\relax,\renewcommand,\setbox}
+% \DoNotIndex{\setlength,\unhbox,\vbox,\vskip,\vspace}
+% \DoNotIndex{\IfFileExists,\makeatletter,\makeatother}
+% \DoNotIndex{\ifmathptmx,\mathptmxtrue,\mathptmxfalse,\newif,\providecommand}
+% \DoNotIndex{\usepackage,\@undefined,\oldurl,\dots,\message,\url}
+%
+% \newcommand*{\mboxtt}[1]{\texttt{\mbox{#1}}}
+%
+% \def\fileversion{v1.1}
+% \def\filedate{2003/04/25}
+%
+% \title{The \mboxtt{facsimile} package\thanks{This file
+% has version number \fileversion, last
+% revised \filedate.}}
+% \author{Torsten Bronger\\
+% \ifpdflatex
+% \url{mailto:bronger@users.sourceforge.net}
+% \else
+% \url{bronger@users.sourceforge.net}\fi}
+%
+% \maketitle
+%
+% \begin{abstract}
+% The \mboxtt{facsimile} package provides a simple interface for creating a
+% fax. This covers by and large two areas: First, a title page is created with
+% a detailed fax header. And secondly, every page gets headers and footers so
+% that the recipient can be sure to have received all pages and complete
+% pages, and to have the correct order.
+% \end{abstract}
+%
+% \tableofcontents
+%
+% \section*{The documentation driver file}
+%
+% This section is purely technical and for the usage of \mboxtt{facsimile}
+% totally meaningless. Please read further at ``Installation''
+% \vpageref[below]{sec:installation}.
+%
+% \bigskip
+% The next bit of code contains the documentation driver file for
+% \TeX, i.\,e., the file that will produce the documentation you are
+% currently reading. It will be extracted from this file by the
+% \texttt{docstrip} program. Since it is the first code in the file
+% one can alternatively process this file directly with \LaTeXe{} to
+% obtain the documentation.
+%
+% \begin{macrocode}
+%<*driver>
+\documentclass{ltxdoc}
+\OnlyDescription
+
+\newif\ifmathptmx
+\IfFileExists{mathptmx.sty}{\mathptmxtrue}{\mathptmxfalse}
+\ifmathptmx\usepackage{mathptmx}\usepackage{courier}\fi
+\usepackage[latin1]{inputenc}\usepackage{varioref}
+\usepackage{url}\providecommand*{\url}[1]{\texttt{\mbox{#1}}}
+\let\oldurl=\url
+\newif\ifpdflatex\makeatletter\ifx\pdfoutput\@undefined
+\pdflatexfalse\else\pdflatextrue\fi\makeatother
+\ifpdflatex
+\usepackage[%
+ pdftex,pagebackref=true,pdfstartview=FitH,
+ pdftitle={The facsimile package},
+ pdfauthor={Torsten Bronger},
+ pdfkeywords={LaTeX,package,fax,facsimile},
+ pdfpagelayout=OneColumn,
+ pdfpagelabels=true,
+ draft=false,plainpages=false]{hyperref}[2000/05/08]
+\fi
+
+\EnableCrossrefs
+\CodelineIndex
+
+\begin{document}
+ \DocInput{facsimile.dtx}
+ \PrintIndex
+\end{document}
+%</driver>
+% \end{macrocode}
+%
+% \section{Installation}
+% \label{sec:installation}
+%
+% The distribution consists of just two files, \mboxtt{facsimile.dtx} and
+% \mboxtt{facsimile.ins}. The installation is totally typical of a \LaTeXe\
+% package: Call
+%\begin{verbatim}
+% tex facsimile.ins
+%\end{verbatim}
+% and move the resulting file \mboxtt{facsimile.cls} where \TeX\ can find it. In a
+% TDS conformant system, you should put it e.\,g.\ in the directory
+% \oldurl{texmf/tex/latex/facsimile}. Then update \TeX's filename database.
+% You get this documentation with
+%\begin{verbatim}
+% latex facsimile.dtx
+%\end{verbatim}
+% (If you want to see the implementation, too, comment out the |\OnlyDescription|
+% command in the DTX file.)
+%
+% \subsection{The configuration file}
+%
+% You should consider creating a configuration file called \mboxtt{facsimile.cfg}.
+% Then you have the same font setup, sender's address, and more for all your
+% faxes, and you don't have to set this explicitly in every single fax. Of
+% course, you can also load some additional packages and set page margins and
+% things like that.
+%
+% It is by and large unimportant where you place this file. It is only
+% important that \TeX\ can find it. Since it contains personal information, it
+% should not be global, but placed where it is only read from your account,
+% e.\,g.\ in your local \texttt{texmf} tree. If you are the only person who
+% uses the computer, this is insignificant though.
+%
+% By using e.\,g.\ Babel you can make your configuration file language
+% sensitive. This can be useful if you write faxes to people in different
+% languages.
+%
+% \section{Usage}
+%
+% \subsection{Configuration file commands}
+%
+% You can use the following commands either in the configuration file
+% \mboxtt{facsimile.cfg} or in the preamble of your document. However, in the
+% configuration file they are more useful.
+%
+% \DescribeMacro\faxfrom
+% The macro |\faxfrom{|\meta{sender}|}| takes as the only parameter \LaTeX\
+% code that produces information about the sender of the fax. It may be filled
+% with something like this:
+%\begin{verbatim}
+% \faxfrom{%
+% \begin{tabular}{rl}
+% from: & Bugs Bunny\\
+% address: & ACME Street 42\\
+% & 90210 Toontown\\
+% & USA\\
+% phone/fax: & +1-555-314159\\
+% \end{tabular}}
+%\end{verbatim}
+%
+% \DescribeMacro\faxheaderfont
+% The fax header will be typeset in the same font as the rest of the document.
+% In particular, any global font changes you make in your document preamble
+% will be visible in the fax header, too. But if you want to use a special
+% font in the fax header, put the font activating commands in |\faxheaderfont|
+% with e.\,g.
+%\begin{verbatim}
+% \renewcommand{\faxheaderfont}{\fontfamily{phv}\selectfont}
+%\end{verbatim}
+% which activates Helvetica.
+%
+% \DescribeMacro\faxnotetext
+% If this macro contains text, it is printed as a note on the cover page. For
+% example, you may set it to
+%\begin{verbatim}
+% \renewcommand{\faxnotetext}{This message was sent using a fax
+% modem. When replying to this fax, phone first, so the fax
+% modem and PC can be switched on and prepared for fax
+% reception.}
+%\end{verbatim}
+%
+% \DescribeMacro\fromsig
+% By default, the author's name is printed below the empty space where you can
+% insert your signature. If you set |\fromsig|, its contents is used instead.
+%
+% \DescribeMacro{\closinghook}
+% Obviously it's silly to sign a fax if it's sent purely electronically. But
+% you can scan your own signature and say
+%\begin{verbatim}
+% \renewcommand{\closinghook}{\includegraphics{signature}\\}
+%\end{verbatim}
+% Then the graphics with the file name \mboxtt{signature.eps}\footnote{The
+% exact file name extension depends on your dvi driver.} is printed between the
+% closing phrase and your name. Of course, you then have to load the
+% \mboxtt{graphics} package, too. This is a mere example application of
+% |\closinghook|; you may put in it (almost) whatever you want.
+%
+% \subsection{Preamble commands}
+%
+% The following commands are used in your document \emph{before}
+% |\begin{document}|.
+%
+% \DescribeMacro\faxto
+% The counterpart of |\faxfrom| for the recipient is
+% |\faxto{|\meta{recipient}|}|. For example:
+%\begin{verbatim}
+% \faxto{%
+% \begin{tabular}{rl}
+% to: & \textbf{The President}\\
+% fax: & +1-202-456-1414\\
+% \end{tabular}}
+%\end{verbatim}
+%
+% \DescribeMacro\faxsubject
+% You \emph{must} set a subject for your fax with
+% \begin{quote}
+% |\faxsubject[|\meta{short subject}|]{|\meta{subject}|}|
+% \end{quote}
+% The short subject is optional and used for the page headers.
+%
+% \subsection{Document commands}
+%
+% You can use the following commands between |\begin{document}| and
+% |\end|\hskip0pt|{document}|.
+%
+% \DescribeMacro\makefaxtitle
+% The fax header is not produced implicitly. You trigger it with
+% |\makefaxtitle|. Normally this is the very first command in your document.
+%
+% \DescribeMacro\opening
+% This is used exactly as in the \mboxtt{letter} class:
+% |\opening{|\meta{greeting phrase}|}|. It starts the text body of your fax.
+%
+% \DescribeMacro\closing
+% This is used exactly as in the \mboxtt{letter} class:
+% |\closing{|\meta{closing phrase}|}|. It ends the text body of your fax.
+%
+% \section{Complete example}
+%
+% \subsection{An example for \mboxtt{facsimile.cfg}}
+%
+% A configuration file can be very simple. Only two things are really
+% necessary: The |\faxfrom| call and the |\author| call.
+%
+% When you unpack the \mboxtt{facsimile} package, this short example is written
+% to the file \mboxtt{fac-en.cfg}. Take it as templates for your own
+% configuration.\footnote{Of course your configuration file must be called
+% \mboxtt{facsimile.cfg} so that it works.}
+% \begin{macrocode}
+%<*coreconfiguration>
+\faxfrom{%
+ \begin{tabular}{rl}
+ from: & Bugs Bunny\\
+ address: & ACME Street 42\\
+ & 90210 Toontown\\
+ & USA\\
+ phone/fax: & +1-555-314159\\
+ \end{tabular}}
+
+\author{Bugs Bunny}
+%</coreconfiguration>
+% \end{macrocode}
+%
+% \subsubsection{A not so simple example configuration}
+%
+% This alternative configuration file shows how language sensitiveness can be
+% realised: It works for both English and German faxes.
+%
+% When you unpack the \mboxtt{facsimile} package, this long example is written
+% to the file \mboxtt{fac-de.cfg}. You can use that as a starting point for
+% your personal \mboxtt{facsimile.cfg} as well.
+%
+% Please note that it's wise to avoid non-ASCII characters in such
+% configuration files. Therefore I don't write ``\mboxtt{straße}'' but
+% ``\verb|stra\ss e|''.
+%
+% \begin{macrocode}
+%<*configuration>
+\makeatletter
+\@ifpackageloaded{babel}{}{
+ \renewcommand{\iflanguage}[3]{%
+ \def\paramone{german}\def\paramtwo{#1}
+ \ifx\paramone\paramtwo\else
+ \errmessage{internal error in facsimile.cfg}\fi
+ \@ifpackageloaded{german}{#2}{#3}}
+}
+\makeatother
+
+\iflanguage{german}{
+% \end{macrocode}
+% This is the German variant of the fax header.
+% \begin{macrocode}
+\renewcommand{\faxnotetext}{Dieses Fax wurde von einem
+ Faxmodem aus gesendet. Wenn Sie auf dieses Fax antworten
+ wollen, rufen Sie erst an, damit sichergestellt werden kann,
+ da\ss{} das Faxmodem bereit ist, die Sendung zu empfangen.}
+
+\faxfrom{%
+ \begin{tabular}{rl}
+ von: & Peter Meier\\
+ Adresse: & Hauptstra\ss e 7\\
+ & 28182 Musterstadt\\
+ Telefon/Fax: & 08\,67\,/\,65\,53\,4\\
+ \end{tabular}}
+}{
+% \end{macrocode}
+% And this is the English variant of the fax header.
+% \begin{macrocode}
+\renewcommand{\faxnotetext}{This message was sent using a fax
+ modem. When replying to this fax, phone first, so the fax
+ modem and PC can be switched on, and prepared for fax
+ reception.}
+
+\faxfrom{%
+ \begin{tabular}{rl}
+ from: & Peter Meier\\
+ address: & Hauptstra\ss e 7\\
+ & 27182 Musterstadt\\
+ & Germany\\
+ phone/fax: & +49-867-65534\\
+ \end{tabular}}
+}
+
+% \end{macrocode}
+% I switch to the Helvetica font for the faxes. The \mboxtt{mathptmx}
+% inclusion is for nicer mathematics.
+% \begin{macrocode}
+\usepackage{mathptmx}\boldmath
+\usepackage{helvet}
+\renewcommand{\rmdefault}{\sfdefault}\rmfamily
+
+% \end{macrocode}
+% Here I include a scanned signature as a picture into the fax. It must be
+% saved as \mboxtt{signature.eps}.
+% \begin{macrocode}
+\IfFileExists{signatur.eps}{
+ \usepackage[dvips]{graphicx}
+ \renewcommand{\closinghook}{\includegraphics{signatur}\\}
+}
+{
+ \message{signatur.eps not found!}
+}
+
+\author{Peter Meier}
+%</configuration>
+% \end{macrocode}
+%
+% \subsection{An example document}
+%
+% I don't want to interrupt this example document with comments so that you can
+% grasp its structure better.
+%
+% When you unpack \mboxtt{facsimile}, this example is written to the file
+% \mboxtt{example.tex}.
+%
+% \begin{macrocode}
+%<*example>
+\documentclass{facsimile}
+
+\faxsubject{Curriculum vitae}
+\faxto{%
+ \begin{tabular}{rl}
+ to: & \textbf{The President}\\
+ fax: & +1-202-456-1414\\
+ \end{tabular}}
+
+\begin{document}
+ \makefaxtitle
+
+ \opening{Dear Mr.~President,}
+
+ I submit my curriculum vitae as arranged by phone.
+
+ [\dots]
+
+ \closing{Yours most sincerely}
+
+\end{document}
+%</example>
+% \end{macrocode}
+%
+% \subsubsection{German fax example}
+%
+% It is in German to show non-English usage exemplarily, however by and large
+% the only special line is the inclusion of the Babel package. The inclusion
+% of the \mboxtt{fontenc} and \mboxtt{inputenc} packages is also especially
+% useful for non-English material. For Windows, substitute ``|ansinew|'' for
+% ``|latin1|''.
+%
+%\begin{verbatim}
+% \documentclass{facsimile}
+%
+% \usepackage[T1]{fontenc}
+% \usepackage[latin1]{inputenc}
+% \usepackage[german]{babel}
+%
+% \faxsubject{Lebenslauf}
+% \faxto{%
+% \begin{tabular}{rl}
+% an: & \textbf{Paul Schmidt}\\
+% Fax: & 0367/87944\\
+% \end{tabular}}
+%
+% \begin{document}
+% \makefaxtitle
+%
+% \opening{Sehr geehrter Herr Schmidt,}
+%
+% hiermit schicke ich Ihnen meinen Lebenslauf, wie telefonisch
+% vereinbart.
+%
+% [\dots]
+%
+% \closing{Mit freundlichen Grüßen}
+%
+% \end{document}
+%\end{verbatim}
+%
+% \StopEventually{}
+%
+% \section{Self identification of \mboxtt{facsimile}}
+%
+% \begin{macrocode}
+%<*facsimile>
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesClass{facsimile}[2003/04/25 v1.1 Fax class (TBr)]
+% \end{macrocode}
+% \begin{macro}{\@emptyauthor}
+% I save the empty author macro in |\@emptyauthor| to have something to test
+% whether |\author| is set or not. This is used in section~\ref{Headers} on
+% page~\pageref{Headers}.
+% \begin{macrocode}
+\let\@emptyauthor=\@author
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \section{Language dependent stuff}
+%
+% \mboxtt{facsimile} needs some words in a human language that are not part of
+% Babel. I define macros of the form |\f@x|\meta{language} that set the values
+% for the respective language.
+%
+% If you can provide such snippets for another language, please send them to
+% the \mboxtt{facsimile} maintainer.
+%
+% \begin{macro}{\iff@xlanguageset}
+% This switch is |true| if a language has been chosen by a global option.
+% \begin{macrocode}
+\newif\iff@xlanguageset\f@xlanguagesetfalse
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Afrikaans}
+%
+% Provided by Els DNJ (\url{mailto:dnjels@sun.ac.za}).
+%
+% \begin{macro}{\f@xafrikaans}
+% \begin{macrocode}
+\newcommand{\f@xafrikaans}{%
+ \def\datename{datum}%
+ \def\onepagename{bladsy}%
+ \def\pagesname{bladsye}%
+ \def\notename{nota}%
+ \def\ofname{van}%
+ \def\fromname{van}%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macrocode}
+\DeclareOption{afrikaans}{\f@xafrikaans\f@xlanguagesettrue}
+% \end{macrocode}
+%
+% \subsection{Dutch}
+%
+% Provided by Steven Van Hove
+% (\url{mailto:steven.vanhove@student.kuleuven.ac.be}).
+%
+% \begin{macro}{\f@xdutch}
+% \begin{macrocode}
+\newcommand{\f@xdutch}{%
+ \def\datename{datum}%
+ \def\onepagename{bladzijde}%
+ \def\pagesname{bladzijden}%
+ \def\notename{opmerking}%
+ \def\ofname{van}%
+ \def\fromname{van}%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macrocode}
+\DeclareOption{dutch}{\f@xdutch\f@xlanguagesettrue}
+% \end{macrocode}
+%
+% \subsection{English}
+%
+% \begin{macro}{\f@xenglish}
+% \begin{macrocode}
+\newcommand{\f@xenglish}{%
+ \def\datename{date}%
+ \def\onepagename{page}%
+ \def\pagesname{pages}%
+ \def\notename{note}%
+ \def\ofname{of}%
+ \def\fromname{from}%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macrocode}
+\DeclareOption{english}{\f@xenglish\f@xlanguagesettrue}
+\DeclareOption{USenglish}{\f@xenglish\f@xlanguagesettrue}
+\DeclareOption{american}{\f@xenglish\f@xlanguagesettrue}
+\DeclareOption{UKenglish}{\f@xenglish\f@xlanguagesettrue}
+\DeclareOption{british}{\f@xenglish\f@xlanguagesettrue}
+\DeclareOption{canadian}{\f@xenglish\f@xlanguagesettrue}
+% \end{macrocode}
+%
+% \subsection{French}
+%
+% Provided by Enrico Riboni (\url{mailto:eriboni@ozone.ch}).
+%
+% \begin{macro}{\f@xfrench}
+% \begin{macrocode}
+\newcommand{\f@xfrench}{%
+ \def\datename{date}%
+ \def\pagename{page}%
+ \def\pagesname{pages}%
+ \def\notename{note}%
+ \def\ofname{de}%
+ \def\fromname{de}%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macrocode}
+\DeclareOption{french}{\f@xfrench\f@xlanguagesettrue}
+\DeclareOption{frenchb}{\f@xfrench\f@xlanguagesettrue}
+% \end{macrocode}
+%
+% \subsection{German}
+%
+% \begin{macro}{\f@xgerman}
+% \begin{macrocode}
+\newcommand{\f@xgerman}{%
+ \def\datename{Datum}%
+ \def\onepagename{Seite}%
+ \def\pagesname{Seiten}%
+ \def\notename{Bemerkung}%
+ \def\ofname{von}%
+ \def\fromname{von}%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macrocode}
+\DeclareOption{german}{\f@xgerman\f@xlanguagesettrue}
+\DeclareOption{germanb}{\f@xgerman\f@xlanguagesettrue}
+\DeclareOption{ngerman}{\f@xgerman\f@xlanguagesettrue}
+\DeclareOption{austrian}{\f@xgerman\f@xlanguagesettrue}
+\DeclareOption{naustrian}{\f@xgerman\f@xlanguagesettrue}
+% \end{macrocode}
+%
+% \subsection{Italian}
+%
+% FixMe: These translations (especially the last two) need to be checked.
+%
+% \begin{macro}{\f@xitalian}
+% \begin{macrocode}
+\newcommand{\f@xitalian}{%
+ \def\datename{data}%
+ \def\onepagename{pagina}%
+ \def\pagesname{pagine}%
+ \def\notename{nota}%
+ \def\ofname{di}%
+ \def\fromname{da}%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macrocode}
+\DeclareOption{italian}{\f@xitalian\f@xlanguagesettrue}
+% \end{macrocode}
+%
+% \subsection{Portuguese}
+%
+% Provided by jvilhena (\url{mailto:jvilhena@softhome.net}).
+%
+% \begin{macro}{\f@xportuges}
+% \begin{macrocode}
+\newcommand{\f@xportuges}{%
+ \def\datename{data}%
+ \def\onepagename{p\'agina}%
+ \def\pagesname{p\'aginas}%
+ \def\notename{nota}%
+ \def\ofname{de}%
+ \def\fromname{de}%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macrocode}
+\DeclareOption{portuges}{\f@xportuges\f@xlanguagesettrue}
+\DeclareOption{portuguese}{\f@xportuges\f@xlanguagesettrue}
+\DeclareOption{brazilian}{\f@xportuges\f@xlanguagesettrue}
+\DeclareOption{brazil}{\f@xportuges\f@xlanguagesettrue}
+% \end{macrocode}
+%
+% \subsection{Spanish}
+%
+% Provided by Victor Lua\~na Cabal
+% (\url{mailto:victor@fluor.quimica.uniovi.es}).
+%
+% \begin{macro}{\f@xspanish}
+% \begin{macrocode}
+\newcommand{\f@xspanish}{%
+ \def\datename{fecha}%
+ \def\onepagename{p\'agina}%
+ \def\pagesname{p\'aginas}%
+ \def\notename{nota}%
+ \def\ofname{de}%
+ \def\fromname{de}%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macrocode}
+\DeclareOption{spanish}{\f@xspanish\f@xlanguagesettrue}
+% \end{macrocode}
+%
+% \subsection{Swedish}
+%
+% Provided by Ozan \"Oktem (\url{mailto:08-295825@telia.com}).
+%
+% \begin{macro}{\f@xswedish}
+% \begin{macrocode}
+\newcommand{\f@xswedish}{%
+ \def\datename{datum}%
+ \def\onepagename{sida}%
+ \def\pagesname{sidor}%
+ \def\notename{notering}%
+ \def\ofname{av}%
+ \def\fromname{fr\aa n}%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macrocode}
+\DeclareOption{swedish}{\f@xswedish\f@xlanguagesettrue}
+% \end{macrocode}
+%
+%
+% \subsection{Default values}
+%
+% \begin{macro}{\datename}
+% \begin{macro}{\onepagename}
+% \begin{macro}{\pagesname}
+% \begin{macro}{\notename}
+% \begin{macro}{\ofname}
+% \begin{macro}{\fromname}
+% I define the default values for the text strings that are needed by
+% \mboxtt{facsimile}. They are the English values of course. I don't use
+% |\f@xenglish| for this in order to assure these values haven't been already
+% defined.
+%
+% \begin{macrocode}
+\newcommand{\datename}{date}
+\newcommand{\onepagename}{page}
+\newcommand{\pagesname}{pages}
+\newcommand{\notename}{note}
+\newcommand{\ofname}{of}
+\newcommand{\fromname}{from}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \subsection{Support for Babel and \texttt{german.sty}}
+%
+% At the beginn of the document I test whether Babel is active. If it is, I
+% add the supported languages to Babel's language machanism. Then Babel's
+% active language determines which language \mboxtt{facsimile} chooses.
+%
+% If Babel is not loaded, I first test whether a language has been chosen via a
+% global option (|\iff@xlanguageset|). If not, I activate German language if
+% the \mboxtt{german.sty} package was loaded.
+%
+% So the order of precedence is: Babel $\to$ global option $\to$
+% \mboxtt{german.sty} $\to$ default (English).
+% \begin{macrocode}
+\AtBeginDocument{%
+ \@ifpackageloaded{babel}{%
+ \addto\extrasafrikaans{\f@xafrikaans}%
+ %
+ \addto\extrasdutch{\f@xdutch}%
+ %
+ \addto\extrasenglish{\f@xenglish}%
+ \addto\extrasUSenglish{\f@xenglish}%
+ \addto\extrasamerican{\f@xenglish}%
+ \addto\extrasUKenglish{\f@xenglish}%
+ \addto\extrasbritish{\f@xenglish}%
+ \addto\extrascanadian{\f@xenglish}%
+ %
+ \addto\extrasfrench{\f@xfrench}%
+ \addto\extrasfrancais{\f@xfrench}%
+ \addto\extrascanadien{\f@xfrench}%
+ \addto\extrasacadian{\f@xfrench}%
+ %
+ \addto\extrasgerman{\f@xgerman}%
+ \addto\extrasngerman{\f@xgerman}%
+ \addto\extrasaustrian{\f@xgerman}%
+ \addto\extrasnaustrian{\f@xgerman}%
+ %
+ \addto\extrasitalian{\f@xitalian}%
+ %
+ \addto\extrasportuges{\f@xportuges}%
+ \addto\extrasportuguese{\f@xportuges}%
+ \addto\extrasbrazilian{\f@xportuges}%
+ \addto\extrasbrazil{\f@xportuges}%
+ %
+ \addto\extrasspanish{\f@xspanish}%
+ %
+ \addto\extrasswedish{\f@xswedish}%
+ }{\iff@xlanguageset\else
+ \@ifpackageloaded{german}{\f@xgerman}{%
+ \@ifpackageloaded{ngerman}{\f@xgerman}{%
+ }}\fi}%
+}
+% \end{macrocode}
+%
+% \section{Processing the class options}
+%
+% \begin{macro}{\f@xfontsize}
+% The default font size for faxes it 12\,pt. This macro may be reset by a
+% global class option.
+% \begin{macrocode}
+\newcommand{\f@xfontsize}{12pt}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\f@xbaseclassname}
+% The default class that \mboxtt{facsimile} relies on is \mboxtt{article}. The
+% \mboxtt{koma} option resets this macro.
+% \begin{macrocode}
+\newcommand{\f@xbaseclassname}{article}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Font size option}
+%
+% \begin{macrocode}
+\DeclareOption{10pt}{\renewcommand{\f@xfontsize}{10pt}}
+\DeclareOption{11pt}{\renewcommand{\f@xfontsize}{11pt}}
+\DeclareOption{12pt}{\renewcommand{\f@xfontsize}{12pt}}
+% \end{macrocode}
+%
+% \subsection{Support for KOMA}
+%
+% With this option you can use KOMA's \mboxtt{scrartcl} instead of \LaTeX's
+% \mboxtt{article}. All other global options are passed to \mboxtt{scrartcl}
+% in this case.
+%
+% \begin{macrocode}
+\DeclareOption{koma}{\renewcommand{\f@xbaseclassname}{scrartcl}}
+\DeclareOption*{\PassOptionsToClass{\CurrentOption}%
+ {\f@xbaseclassname}}
+% \end{macrocode}
+%
+% \subsection{Option processing}
+%
+% \begin{macrocode}
+\ExecuteOptions{12pt}
+\ProcessOptions\relax
+\LoadClass[\f@xfontsize]{\f@xbaseclassname}
+% \end{macrocode}
+%
+% \section{Fax header contents}
+%
+% \begin{macro}{\faxnotetext}
+% This is empty by default but you may set it to an arbitrary text. For
+% example it can contain a warning that a reply to your fax must be announced
+% before, because you first have to switch your computer on.
+% \begin{macrocode}
+\newcommand{\faxnotetext}{}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\f@xsubject}
+% \begin{macro}{\f@xsubjectshort}
+% \begin{macro}{\f@xfrom}
+% \begin{macro}{\f@xto}
+% These macros are the internal variables for the fields in the fax header. By
+% default, they contain code that generates error messages for the user,
+% because the user \emph{must} explicitly set those fields.
+% \begin{macrocode}
+\newcommand{\f@xsubject}{\ClassError{facsimile}%
+ {No fax subject given}{}\textbf{??}}
+\newcommand{\f@xsubjectshort}{\textbf{??}}
+\newcommand{\f@xfrom}{\ClassError{facsimile}%
+ {No fax sender given}{}
+ \gdef\f@xfrom{from:&\textbf{??}\\}\f@xfrom}
+\newcommand{\f@xto}{\ClassError{facsimile}%
+ {No fax recipient given}{}
+ \gdef\f@xto{to:&\textbf{??}\\}\f@xto}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \subsection{User interface}
+%
+% The user sets the above variables by calling these macros.
+%
+% \begin{macro}{\faxsubject}
+% This sets the subject of the fax. It is printed as the title on the cover
+% page and in the head line on all other pages.
+% \begin{macrocode}
+\newcommand*{\faxsubject}[2][\f@xsubject]{
+ \renewcommand{\f@xsubject}{#2}
+ \renewcommand{\f@xsubjectshort}{#1}}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\faxto}
+% This sets the ``\textit{to:}''\ field in the fax header. It may be a box or
+% a table.
+% \begin{macrocode}
+\newcommand*{\faxto}[1]{\renewcommand{\f@xto}{#1}}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\faxfrom}
+% This sets the ``\textit{from:}''\ field in the fax header. It may be a box
+% or a table.
+% \begin{macrocode}
+\newcommand*{\faxfrom}[1]{\renewcommand{\f@xfrom}{#1}}
+% \end{macrocode}
+% \subsubsection{Configuration file}
+% Here I read a configuration file called \mboxtt{facsimile.cfg} if it exists. It
+% may set a default |\author|, |\faxfrom|, and |\faxheaderfont|. It may even
+% do so language sensitive.
+% \begin{macrocode}
+\AtBeginDocument{%
+ \InputIfFileExists{facsimile.cfg}{\ClassInfo{facsimile}%
+ {Loading configuration file facsimile.cfg}}{}}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Determining the number of pages}
+%
+% For this I use the |lastpage| package.
+% \begin{macrocode}
+\RequirePackage{lastpage}
+% \end{macrocode}
+% \begin{macro}{\@lstpgno}
+% I stole this command from the \texttt{fax} package. I don't know how it
+% works, but it yields the number of pages or zero if it couldn't be
+% determined.
+% \begin{macrocode}
+\newcommand*{\@lstpgno}{%
+ \@ifundefined{r@LastPage}{0}{%
+ \expandafter\expandafter\expandafter
+ \@cdr\csname r@LastPage\endcsname
+ \@nil}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Setting style}
+%
+% \begin{macro}{\faxheaderfont}
+% You can override this definition in order to get your favourite font for the
+% fax header.
+% \begin{macrocode}
+\newcommand{\faxheaderfont}{\sffamily}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\f@xboxgap}
+% \begin{macro}{\f@xboxsep}
+% \begin{macro}{\f@xframethickness}
+% You can reset these three macros, too, however the default values seem very
+% reasonable to me. |\f@xgap| is the gap between the header boxes whereas
+% |\f@xsep| is the separation between the box and its contents.
+% |\f@xframethickness| is the line width of the box frames.
+% \begin{macrocode}
+\newdimen\f@xboxgap \setlength{\f@xboxgap}{1mm}
+\newdimen\f@xboxsep \setlength{\f@xboxsep}{2mm}
+\newdimen\f@xframethickness \setlength{\f@xframethickness}{0.3mm}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \section{Creating the header layout}
+%
+% \begin{macro}{\f@xframebox}
+% This creates one framed box on the cover page. The first parameter~|#2| is
+% the width of the box, the second parameter~|#3| is its contents. An optional
+% parameter~|#1| sets the height of the box explicitly. If given, it must be
+% of the form ``|to 30pt|'' for example.
+% \begin{macrocode}
+\newcommand{\f@xframebox}[3][]{\hbox to #2{%
+ \vrule width \f@xframethickness
+ \vbox{\hrule height \f@xframethickness
+ \vskip\f@xboxsep
+ \hbox{\hskip\f@xboxsep
+ \setlength{\@tempdima}{#2}%
+ \addtolength{\@tempdima}{-2\f@xboxsep}%
+ \addtolength{\@tempdima}{-2\f@xframethickness}%
+ \setlength{\hsize}{\@tempdima}%
+ \vbox #1{\vbox{#3}\vfill}\hskip\f@xboxsep}%
+ \vskip\f@xboxsep
+ \hrule height \f@xframethickness}%
+ \vrule width \f@xframethickness}}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\f@xdoubleframebox}
+% This sets \emph{two} of such boxes next to each other. It has two
+% parameters that are simply the contents of both boxes. It assures that both
+% boxes have the same height so that they are vertically neatly aligned.
+% \begin{macrocode}
+\newcommand{\f@xdoubleframebox}[2]{\hbox to \hsize{%
+% \end{macrocode}
+% |\@tempdima| should eventually have the (inner) width of the contents of one
+% box.
+% \begin{macrocode}
+ \setlength{\@tempdima}{0.5\hsize}%
+ \addtolength{\@tempdima}{-0.5\f@xboxgap}%
+% \end{macrocode}
+% |\@tempdimb| should eventual have the (outer) width of one box.
+% \begin{macrocode}
+ \setlength{\@tempdimb}{\@tempdima}%
+ \addtolength{\@tempdima}{-2\f@xboxsep}%
+ \addtolength{\@tempdima}{-2\f@xframethickness}%
+ \setlength{\hsize}{\@tempdima}%
+% \end{macrocode}
+% Here I create two \TeX\ boxes with the respective contents.
+% \begin{macrocode}
+ \newbox\fr@meleft \newbox\fr@meright
+ \setbox\fr@meleft=\vbox{\vbox{#1}\hrule height 0pt}%
+ \setbox\fr@meright=\vbox{\vbox{#2}\hrule height 0pt}%
+% \end{macrocode}
+% |\maxfr@meheight| is the height of the higher box.
+% \begin{macrocode}
+ \newdimen\maxfr@meheight
+ \setlength{\maxfr@meheight}{\ht\fr@meleft}%
+ \ifdim\maxfr@meheight<\ht\fr@meright
+ \setlength{\maxfr@meheight}{\ht\fr@meright}%
+ \fi
+% \end{macrocode}
+% Finally, print both boxes.
+% \begin{macrocode}
+ \f@xframebox[to \maxfr@meheight]{\@tempdimb}{#1}%
+ \hskip\f@xboxgap
+ \f@xframebox[to \maxfr@meheight]{\@tempdimb}{#2}%
+ }}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\makefaxtitle}
+% This is a user command. It is \mboxtt{facsimile}'s pendant to \LaTeX's
+% |\matketitle|.
+% \begin{macrocode}
+\newcommand{\makefaxtitle}{\begingroup
+% \end{macrocode}
+% First, I set the font and avoid wrong skips.
+% \begin{macrocode}
+ \faxheaderfont\parskip0pt\parindent0pt
+% \end{macrocode}
+% Here comes the subject. It's the title of a fax.
+% \begin{macrocode}
+ \centerline{\LARGE\bfseries\f@xsubject}\vskip2ex
+% \end{macrocode}
+% |\halff@xboxwidth| is the (outer) width of one header box.
+% \begin{macrocode}
+ \newdimen\halff@xboxwidth
+ \setlength{\halff@xboxwidth}{0.5\hsize}
+ \addtolength{\halff@xboxwidth}{-0.5\f@xboxgap}
+% \end{macrocode}
+% This |\vbox| will contain the whole header. It has the following structure:
+% First two ``double'' boxes with recipient, sender, date, and number of pages,
+% respectively. The an optional box of full width with a note.
+% \begin{macrocode}
+ \vbox{%
+ \f@xdoubleframebox{\f@xto}{\f@xfrom}%
+ \nointerlineskip\vskip\f@xboxgap
+ \f@xdoubleframebox{%
+ \centerline{\textbf{\expandafter
+ \MakeUppercase\datename:}\quad\@date}}%
+ {%
+ \centerline{\textbf{Fax:}\quad
+ \pageref{LastPage}~\ifcase\@lstpgno \pagesname
+ \or \onepagename \else \pagesname \fi}}%
+ \nointerlineskip\vskip\f@xboxgap
+ \ifx\faxnotetext\@empty\else
+ \f@xframebox{\hsize}{%
+ \setbox\@tempboxa\hbox{\textbf{\expandafter
+ \MakeUppercase\notename:}}%
+ \@tempdima=\ht\@tempboxa
+ \framebox{\vrule height \@tempdima width 0pt%
+ \smash{\unhbox\@tempboxa}}%
+ \hskip1em plus 0.2em\sloppy\hbadness10000\faxnotetext}%
+ \fi
+ }\endgroup}
+% \end{macrocode}
+% \end{macro}
+%
+% \section{Mimicry of \LaTeX's \mboxtt{letter} class}
+%
+% \subsection{Setting paragraph skips and more}
+%
+% \begin{macrocode}
+\setlength\parskip{0.7em}
+\setlength\parindent{0\p@}
+% \end{macrocode}
+% \begin{macro}{\longindentation}
+% \begin{macro}{\indentedwidth}
+% They are used by |closing|.
+% \begin{macrocode}
+\newdimen\longindentation
+\longindentation=.5\textwidth
+\newdimen\indentedwidth
+\indentedwidth=\textwidth
+\advance\indentedwidth -\longindentation
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Opening and closing}
+%
+% \end{macro}
+% \begin{macro}{\opening}
+% This is by and large a stripped version of the command of the same name in
+% \LaTeX's \mboxtt{letter} class.
+% \begin{macrocode}
+\newcommand*{\opening}[1]{\vspace{2\parskip}%
+ #1\par\nobreak\vspace{0.5\parskip}\nobreak}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\stopbreaks}
+% This is used in |\closing|. It is copied from \mboxtt{letter.cls}.
+% \begin{macrocode}
+\newcommand*{\stopbreaks}{%
+ \interlinepenalty\@M
+ \def\par{\@@par\nobreak}%
+ \let\\\@nobreakcr
+ \let\vspace\@nobreakvspace}
+% \end{macrocode}
+% \end{macro}
+% The following code is copied from \mboxtt{letter.cls}.
+% \begin{macrocode}
+\DeclareRobustCommand\@nobreakvspace
+ {\@ifstar\@nobreakvspacex\@nobreakvspacex}
+\def\@nobreakvspacex#1{%
+ \ifvmode
+ \nobreak\vskip #1\relax
+ \else
+ \@bsphack\vadjust{\nobreak\vskip #1}\@esphack
+ \fi}
+\def\@nobreakcr{\@ifstar{\@normalcr*}{\@normalcr*}}
+% \end{macrocode}
+% \begin{macro}{\fromsig}
+% This is used in |\closing|. It is printed below your signature. At the
+% start of the \LaTeX\ run it's empty.
+% \begin{macrocode}
+\newcommand{\fromsig}{} \let\fromsig\@empty
+% \end{macrocode}
+% \end{macro}
+% If the user has set |\fromsig| in the config file or the preamble, this
+% remains untouched. If not, a possibly set |\@author| is used. If both are
+% empty, well, then you won't get a signature.
+% \begin{macrocode}
+\AtBeginDocument{\ifx\@empty\fromsig
+ \ifx\@author\@emptyauthor\else\def\fromsig{\@author}\fi\fi}
+% \end{macrocode}
+% \begin{macro}{\closinghook}
+% This is empty by default. If you set it to something else, this is printed
+% between the closing sentence and the signature. You may use it e.\,g.\ for a
+% signature graphics.
+% \begin{macrocode}
+\let\closinghook\@empty
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\closing}
+% By and large this code is copied from \mboxtt{letter.cls} and has almost the
+% same semantics here.
+% \begin{macrocode}
+\newcommand{\closing}[1]{\par\nobreak\vspace{\parskip}%
+ \stopbreaks
+ \noindent
+ \ifx\@empty\fromaddress\else
+ \hspace*{\longindentation}\fi
+ \parbox{\indentedwidth}{\raggedright
+ \ignorespaces #1\ifx\@empty\closinghook
+ \\[6\medskipamount]\else\\\relax\closinghook\fi%
+ \fromsig\strut}%
+ \par}
+% \end{macrocode}
+% \end{macro}
+%
+% \section{Headers and footers}
+% \label{Headers}
+%
+% I use the \mboxtt{fancyhdr} package for customised headers and footers.
+% \begin{macrocode}
+\RequirePackage{fancyhdr}
+\AtBeginDocument{\pagestyle{fancy}}
+% \end{macrocode}
+% I set headers \emph{and} footers to assure that whole pages are transmitted.
+% The author, subject and page number are printed at the top.
+% \begin{macrocode}
+\fancyhf{}
+\fancyhead[LO]{\leavevmode
+ \hbox to 0pt{\ifx\@author\@emptyauthor
+ \else\expandafter\MakeUppercase\fromname\
+ \@author: \fi\emph{\f@xsubjectshort}\hss}}
+\fancyhead[RO]{\leavevmode
+ \hbox to 0pt{\hss\onepagename\
+ \thepage\ \ofname\ \pageref{LastPage}}}
+% \end{macrocode}
+% The date and page number are printed at the bottom.
+% \begin{macrocode}
+\fancyfoot[LO]{\leavevmode\hbox to 0pt{\@date\hss}}
+\fancyfoot[RO]{\leavevmode
+ \hbox to 0pt{\hss\onepagename\
+ \thepage\ \ofname\ \pageref{LastPage}}}
+% \end{macrocode}
+% \begin{macro}{\footrulewidth}
+% This is a \mboxtt{fancyhdr} macro that I redefine to a sensible value.
+% \begin{macrocode}
+\renewcommand{\footrulewidth}{0.4pt}
+% \end{macrocode}
+% The following seems to be necessary for a large font size (i.\,e.,~12pt).
+% \begin{macrocode}
+\setlength{\headheight}{15.5pt}
+% \end{macrocode}
+% \end{macro}
+% \begin{macrocode}
+%</facsimile>
+% \end{macrocode}
+%
+% \Finale
+
+\endinput
+
+% LocalWords: ascii dtx paren cls TDS texmf cfg sender's eps dvi german koma
+% LocalWords: KOMA's scrartcl fac latin tex stra DNJ Riboni FixMe jvilhena Lua
+% LocalWords: Ozan Oktem
diff --git a/macros/latex/contrib/facsimile/facsimile.ins b/macros/latex/contrib/facsimile/facsimile.ins
new file mode 100644
index 0000000000..a824066e17
--- /dev/null
+++ b/macros/latex/contrib/facsimile/facsimile.ins
@@ -0,0 +1,32 @@
+%% $Id: facsimile.ins,v 1.1 2003/04/21 15:23:14 bronger Exp bronger $
+%%
+%% This file will generate fast loadable files and documentation
+%% driver files from the doc files in this package when run through
+%% LaTeX or TeX.
+%%
+%% facsimile.ins - Package for writing faxes
+%% Copyright 2003 Torsten Bronger
+%% <bronger@users.sourceforge.net>
+%%
+%% This program 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.
+%%
+%% --------------- start of docstrip commands ------------------
+%%
+\input docstrip
+
+\keepsilent
+\askforoverwritefalse
+
+\generate{\file{facsimile.cls}{\from{facsimile.dtx}{facsimile}}
+ \file{fac-de.cfg}{\from{facsimile.dtx}{configuration}}
+ \file{fac-en.cfg}{\from{facsimile.dtx}{coreconfiguration}}
+ \file{example.tex}{\from{facsimile.dtx}{example}}
+}
+
+\endbatchfile
diff --git a/macros/latex/contrib/facsimile/facsimile.pdf b/macros/latex/contrib/facsimile/facsimile.pdf
new file mode 100644
index 0000000000..2a64ffa192
--- /dev/null
+++ b/macros/latex/contrib/facsimile/facsimile.pdf
Binary files differ