Umlaute, Fax-Seitenzahl
[RATeX.git] / ratexenc.sty
blob98e88104c5212f1bde42663d03c75c24ef87920f
1 %% \ratexenc ist ein Paket, um (Geschäfts)-Briefen, die mit scrlttr2 aus %% dem KOMA-Skript erzeugt werden, PDF-Dateien als Anhänge hinzu zu
2 %% fügen und diese zu referrenzieren.
3 %%
4 %% Außerdem stellt das Paket einen Befehl \fax[]{} zur Verfügung. Dieser
5 %% kann an beliebiger Stelle in einem eigens definierten Briefkopf
6 %% verwendet werden. Als obligatorisches Argument wird die Faxnummer
7 %% benötigt, die vom Paket telprint.sty entsprechend ausgegeben wird.
8 %% Als optionales Argument kann »vorab« oder »nur« eingegeben werden.
9 %% Dementsprechend erscheint dann in der Ausgabe »nur als Fax« oder
10 %% »vorab als Fax«. Außerdem wird unterhalb der Faxnummer angegeben,
11 %% wieviele Seiten das Fax umfasst.
13 %% Das Paket ratexenc kennt drei Optionen:
15 %% [footnote] Die Referenz im Brieftext verweist mittels nummerierter
16 %% Fußnote auf den entsprechend nummerierten Listeneintrag
17 %% unter der Grußformel und die entsprechende auf die Anlage
18 %% gestempelte Nummer der Anlage
19 %% [margin] Die beigefügten Dokumente werden jeweils in einer
20 %% Randglosse erwähnt. Außerdem werden sämtliche Anhänge
21 %% unter der Grußformel unter Nennung der fortlaufenden
22 %% Nummer der Anlage aufgelistet und jeder Anlage wird
23 %% fortlaufend ihre Nummer aufgestempelt.
24 %% [noencl] Entspricht [margin] mit dem Unterschied dass die Anlagen
25 %% nur in Randglossen erwähnt werden. Eine Auflistung unter
26 %% der Grußformel findet nicht statt.
27 %%
28 %% Getestet wurde das Paket nur mit scrlttr2. Kernstück ist die
29 %% Anweisung \rtxencl. Deren Syntax lautet: \rtxencl[Bezeichnung der
30 %% Anlage][Art der Anlage]{Dateiname der Anlage}{Stichwort im Brieftext}
31 %% Die Anweisung \rtxencl bewirkt, dass (a) je nach gewählter Option
32 %% die angehängten Dokumente im Brief referenziert und gelistet werden,
33 %% (b) die Anlagen sodann fortlaufend nummeriert werden und (c)
34 %% sämtliche referrenzierten Dokumente als Anlage in %% die PDF-Ausgabe
35 %% des jeweiligen Briefs inkludiert werden Dabei unterstützt das Paket
36 %% die Fähigkeit von KOMA-Skript mit einem Dokument mehrere Briefe zu
37 %% erzeugen. Jeder Brief kann seine eigenen, unterschiedlichen Anlagen
38 %% haben; Die Anlagenzählung beginnt bei jedem Brief neu.
39 %%
40 %% Die Anweisung \rtxencl erfordert zwei obligatorische Argumente,
41 %% nämlich 1.) im Text des Briefs die Benennung des angehängten
42 %% Dokuments, sozusagen das Stichwort. Dessen Bezeichnung wird --
43 %% vorbehaltlich eines optionalen Arguments -- auch als Bezeichnung der
44 %% Anlage verwendet; und 2.) den Dateinamen des anzuhängenden
45 %% PDF-Dokuments.
47 %% Optional können zwei weitere Argumente verwendet werden: 1.) Soll das
48 %% angehängte Dokument -- je nachdem welche Paketoption gewählt wurde --
49 %% in der Randglosse und in der nach der Grußformel folgenden Auflistung
50 %% eine andere Benennung haben als die Referenz, resp. das Stichwort im
51 %% Brieftext, kann als erstes optionales Argument der Refernzname
52 %% eingesetzt werden; er ersetzt dann in er Anlagenbennenung das
53 %% Stichwort des Brieftextes. Wird dieses optionale Argument nicht
54 %% definiert wird automatisch die im Brieftext verwendete Bezeichnung
55 %% gesetzt. Achtung: Falls im Brieftext die Bezeichnung des Dokuments im
56 %% Genitiv steht -- »Kopie des Briefs« -- genügt, nur den Wortteil
57 %% »Brief«, also ohne »s« als obligatorsiches Argument zu verwenden. So
58 %% wird vermieden, dass in der Randglosse und in der Auflistung am
59 %% Briefende »Briefs« steht. 2.) Je nachdem, ob dem wirklichen Brief das
60 %% Original oder die Kopie beigefügt wird, kann als zweites optionales
61 %% Argument ein O, ein E oder ein K angegeben werden, so dass in der
62 %% Randnotiz die Mitteilung »im Original«, »im Entwurf« oder »in Kopie«
63 %% erscheint. Wird das Argument nicht gesetzt, erscheint Kopie. Kopien
64 %% werden außerdem durch ein diagonal aufgesetztes KOPIE markiert,
65 %% Entwürfe durch ein diagonal aufgesetzes ENTWURF.
66 %%================================================================
67 \NeedsTeXFormat{LaTeX2e}
68 \ProvidesPackage{ratexenc}[2010/02/06 v0.2.0.0 RA Friedrich Vosberg]
69 \RequirePackage{graphicx, ifthen, pdfpages, picture, ragged2e, telprint, twoopt, zref-abspage}
70 %%----------------------------------------------------------------
71 \KOMAoptions{twoside=semi}%
72 %%----------------------------------------------------------------
73 \def\JX@Anlagenform{}%
74 \def\JX@Anlagenname{}%
75 %%----------------------------------------------------------------
76 \newcommand*{\JXenclContent}{}%
77 %%----------------------------------------------------------------
78 \def\JXenclAnlage{als Anlage}%
79 \def\JXenclContent{}%
80 \def\JXenclOriginal{\textbf{im Original}}%
81 \def\JXenclKopie{in Kopie}%
82 \def\JXenclEntwurf{im Entwurf}%
83 \def\JXenclEmpty{}%
84 \def\JXenclStempelK{KOPIE}%
85 \def\JXenclStempelE{ENTWURF}%
86 \def\JXenclStempelX{ENTWERTET}%
87 \def\JXenclAnlNr{Anl. Nr.}%
88 %%----------------------------------------------------------------
89 \newcounter{AbsLetter}
90 %%----------------------------------------------------------------
91 \newcounter{JXenclcntr}
92 %%----------------------------------------------------------------
93 \newcounter{JXattachcntr}
94 %%----------------------------------------------------------------
95 \renewcommand*{\theAbsLetter}{letter@\number\value{AbsLetter}}
96 %%----------------------------------------------------------------
97 \newcounter{FirstLetterPage}
98 %%----------------------------------------------------------------
99 \renewcommand*{\theFirstLetterPage}{\number\value{FirstLetterPage}}
100 %%----------------------------------------------------------------
101 \newcommand*{\Debug}[1]{%
102 % \typeout{[Debug] #1}%
104 %%----------------------------------------------------------------
105 \newcommand*{\StartLetterPages}{%
106 \stepcounter{AbsLetter}%
107 \Debug{\string\StartLetterPages: \theAbsLetter}%
108 \setcounter{FirstLetterPage}{\value{abspage}}%
109 \Debug{FirstPage (zero-based): \theFirstLetterPage}%
110 \let\OrgClearDoublePage\cleardoublepage
111 \renewcommand*{\cleardoublepage}{%
112 \clearpage
113 \addtocounter{FirstLetterPage}{-\value{abspage}}%
114 \OrgClearDoublePage
115 \addtocounter{FirstLetterPage}{\value{abspage}}%
116 \Debug{%
117 FirstPage (zero-based) after %
118 \string\cleardoublepage: \theFirstLetterPage
122 %%----------------------------------------------------------------
123 \newcommand*{\IncludeAppendixHook}{}
124 %%----------------------------------------------------------------
125 \newcommand*{\StopLetterPages}{%
126 \IncludeAppendixHook
127 \clearpage
128 \Debug{AbsPage: \number\value{abspage}}%
129 % calculate difference and store in FirstLetterPage
130 \setcounter{FirstLetterPage}{-\value{FirstLetterPage}}%
131 \addtocounter{FirstLetterPage}{\value{abspage}}%
132 \Debug{Pages of \theAbsLetter: \theFirstLetterPage}%
133 \zref@wrapper@immediate{%
134 % set info for next label
135 \edef\@currentlabel{\theFirstLetterPage}%
136 \zref@labelbyprops{\theAbsLetter}{default}%
139 %%----------------------------------------------------------------
140 \newcommand*{\LetterPages}{%
141 \zref@refused{\theAbsLetter}%
142 \zref@extractdefault{\theAbsLetter}{default}{0}%
144 %%----------------------------------------------------------------
145 \AtBeginLetter{\StartLetterPages}
146 %%----------------------------------------------------------------
147 \DeclareOption{footnote}{%
148 \newcommandtwoopt{\rtxencl}[5][][K]{%
149 \stepcounter{JXattachcntr}%
150 \ifthenelse{\equal{#2}{K}}{%
151 \let\JX@Anlagenform\JXenclKopie%
153 \ifthenelse{\equal{#2}{E}}{%
154 \let\JX@Anlagenform\JXenclEntwurf%
156 \let\JX@Anlagenform\JXenclOriginal%
159 \ifthenelse{\equal{#1}{}}{%
160 \def\JX@Anlagenname{#4}%
162 \def\JX@Anlagenname{#1}%
164 #4\textsuperscript{\theJXattachcntr}%
165 \protected@edef\JXenclContent{%
166 \JXenclContent\theJXattachcntr) \JX@Anlagenname{} (\JX@Anlagenform)\endgraf%
168 \l@addto@macro\IncludeAppendixHook{%
169 \cleardoublepage%
170 \stepcounter{JXenclcntr}%
171 \includepdf[%
172 pages={#5},
173 picturecommand*={%
174 \put(.83\paperwidth,.96\paperheight){%
175 \makebox(0,0)[cb]{%
176 \LARGE\bfseries\sffamily
177 -- \JXenclAnlNr~\theJXenclcntr~--
181 picturecommand={%
182 \ifthenelse{\equal{#2}{K}}{%
183 \put(0.5\paperwidth, 0.5\paperheight){%
184 \makebox(0,0)[c]{%
185 \resizebox{.95\paperwidth}{!}{%
186 \rotatebox{50}{%
187 \pdfliteral{%
188 1 Tr
189 .025 w
191 \textsf{\textbf{\JXenclStempelK}}%
192 \pdfliteral{%
193 0 Tr
200 \ifthenelse{\equal{#2}{E}}{%
201 \put(0.5\paperwidth, 0.5\paperheight){%
202 \makebox(0,0)[c]{%
203 \resizebox{.95\paperwidth}{!}{%
204 \rotatebox{50}{%
205 \pdfliteral{%
206 1 Tr
207 .025 w
209 \textsf{\textbf{\JXenclStempelE}}%
210 \pdfliteral{%
211 0 Tr
218 \ifthenelse{\equal{#2}{X}}{%
219 \put(0.5\paperwidth, 0.5\paperheight){%
220 \makebox(0,0)[c]{%
221 \resizebox{.95\paperwidth}{!}{%
222 \rotatebox{50}{%
223 \pdfliteral{%
224 1 Tr
225 .025 w
227 \textsf{\textbf{\JXenclStempelX}}%
228 \pdfliteral{%
229 0 Tr
241 {#3}%
245 %%----------------------------------------------------------------
246 % Das Kommando \rtxencl hat jetzt (seit 2011/06/09) fünf Argumente. Optional sind ein besonderer Name und die Anweisung ob Kopie, Entwurf oder Original. Obligatorisch sind die Seiten, wobei »-« für »alle« steht; der Dateiname der einzufügenden Datei und das Stichwort.
247 \DeclareOption{margin}{%
248 \newcommandtwoopt{\rtxencl}[5][][]{%
249 \stepcounter{JXattachcntr}%
250 \ifthenelse{\equal{#2}{K}}{%
251 \let\JX@Anlagenform\JXenclKopie%
253 \ifthenelse{\equal{#2}{E}}{%
254 \let\JX@Anlagenform\JXenclEntwurf%
256 \ifthenelse{\equal{#2}{O}}{%
257 \let\JX@Anlagenform\JXenclOriginal%
259 \let\JX@Anlagenform\JXenclEmpty%
263 \ifthenelse{\equal{#1}{}}{%
264 \def\JX@Anlagenname{#5}%
266 \def\JX@Anlagenname{#1}%
268 #5\marginpar{%
269 \setlength{\baselineskip}{1.5ex}{%
270 \sffamily\scriptsize\RaggedRight%
271 \hspace{0pt}Anlage~\theJXattachcntr%
274 \protected@edef\JXenclContent{\JXenclContent \JX@Anlagenname{} (\JXenclAnlNr{}~\theJXattachcntr)\endgraf}%
275 \g@addto@macro\IncludeAppendixHook{%
276 \cleardoublepage%
277 \stepcounter{JXenclcntr}%
278 \includepdf[%
279 pages={#3},
280 picturecommand*={%
281 \ifthenelse{\equal{#2}{}}{}{%
282 \put(.72\paperwidth,.955\paperheight){%
283 \fboxrule2mm\fboxsep2mm%
284 \fcolorbox{red}{white}{%
285 \LARGE\bfseries\sffamily
286 -- \JXenclAnlNr~\theJXenclcntr~--
291 picturecommand={%
292 \ifthenelse{\equal{#2}{K}}{%
293 \put(0.935\paperwidth, 0.5\paperheight){%
294 \makebox(0,0)[c]{%
295 \resizebox{!}{.8\paperheight}{%
296 \rotatebox{90}{%
297 \pdfliteral{%
298 1 Tr
299 .025 w
301 \textsf{\textbf{\JXenclStempelK}\hspace{3em}\textbf{\JXenclStempelK}\hspace{3em}\textbf{\JXenclStempelK}}%
302 \pdfliteral{%
303 0 Tr
310 \ifthenelse{\equal{#2}{E}}{%
311 \put(0.935\paperwidth, 0.5\paperheight){%
312 \makebox(0,0)[c]{%
313 \resizebox{!}{.8\paperheight}{%
314 \rotatebox{90}{%
315 \pdfliteral{%
316 1 Tr
317 .025 w
319 \textsf{\textbf{\JXenclStempelE}\hspace{3em}\textbf{\JXenclStempelE}\hspace{3em}\textbf{\JXenclStempelE}}%
320 \pdfliteral{%
321 0 Tr
328 \ifthenelse{\equal{#2}{X}}{%
329 \put(0.5\paperwidth, 0.5\paperheight){%
330 \makebox(0,0)[c]{%
331 \resizebox{.95\paperwidth}{!}{%
332 \rotatebox{50}{%
333 \pdfliteral{%
334 1 Tr
335 .025 w
337 \textsf{\textbf{\JXenclStempelX}}%
338 \pdfliteral{%
339 0 Tr
352 {#4}%
356 %%----------------------------------------------------------------
357 \DeclareOption{noencl}{%
358 \newcommandtwoopt{\rtxencl}[4][][]{%
359 \stepcounter{JXattachcntr}%
360 \ifthenelse{\equal{#2}{K}}{%
361 \let\JX@Anlagenform\JXenclKopie%
363 \ifthenelse{\equal{#2}{E}}{%
364 \let\JX@Anlagenform\JXenclEntwurf%
366 \let\JX@Anlagenform\JXenclOriginal%
369 \ifthenelse{\equal{#1}{}}{%
370 \def\JX@Anlagenname{#4}%
372 \def\JX@Anlagenname{#1}%
374 #4\marginpar{%
375 \setlength{\baselineskip}{1.5ex}{%
376 \sffamily\scriptsize\RaggedRight%
377 \hspace{0pt}\JX@Anlagenname{} \JX@Anlagenform{} \JXenclAnlage{} \theJXattachcntr
380 \l@addto@macro\IncludeAppendixHook{%
381 \cleardoublepage%
382 \stepcounter{JXenclcntr}%
383 \includepdf[%
384 pages={-},
385 picturecommand*={%
386 \put(.83\paperwidth,.96\paperheight){%
387 \makebox(0,0)[cb]{%
388 \LARGE\bfseries\sffamily
389 -- \JXenclAnlNr~\theJXenclcntr~--
393 picturecommand={%
394 \ifthenelse{\equal{#2}{K}}{%
395 \put(0.5\paperwidth, 0.5\paperheight){%
396 \makebox(0,0)[c]{%
397 \resizebox{.95\paperwidth}{!}{%
398 \rotatebox{50}{%
399 \pdfliteral{%
400 1 Tr
401 .025 w
403 \textsf{\textbf{\JXenclStempelK}}%
404 \pdfliteral{%
405 0 Tr
412 \ifthenelse{\equal{#2}{E}}{%
413 \put(0.5\paperwidth, 0.5\paperheight){%
414 \makebox(0,0)[c]{%
415 \resizebox{.95\paperwidth}{!}{%
416 \rotatebox{50}{%
417 \pdfliteral{%
418 1 Tr
419 .025 w
421 \textsf{\textbf{\JXenclStempelE}}%
422 \pdfliteral{%
423 0 Tr
434 {#3}%
438 %%------------------------------------------------------------Faxvermerk
439 \def\Fax{}
440 \ifthenelse{\isundefined{\fax}}{}{%
441 \renewcommand*{\Fax}{}%
442 \renewcommand*{\fax}[2][]{%
443 \ifthenelse{\equal{#2}{}}{%
445 \def\Fax{%
446 \setlength{\unitlength}{1mm}%
447 \begin{picture}(0,0)%
448 \sffamily%
449 \put(0,84){%
450 \bfseries%
451 \ifthenelse{\equal{#1}{}}{%
452 als Fax:~%
454 #1 als Fax:~%
456 \telprint{#2}%
458 \put(0,80){%
459 \footnotesize{%
460 Dieses Fax umfasst
461 \ifthenelse{%
462 % am 6. November 2013 ersetzt durch die folgende Zeile \equal{\LetterPages}{1}%
463 \equal{\pageref{TotPages}}{\pageref{Startseite}}%
465 }{%
466 genau eine Seite.%
468 insgesamt \LetterPages~Seiten.%
472 \end{picture}%
477 %%----------------------------------------------------------------------
478 \AtBeginDocument{%
479 \BeforeClosingMainAux{\TotPages@putlabel}%
481 %%----------------------------------------------------------------------
482 \AtBeginLetter{%
483 \label{Startseite}%
484 \def\IncludeAppendixHook{}
486 %%----------------------------------------------------------------------
487 \AtEndLetter{%
488 \ifx\JXenclContent\@empty
489 \else
490 \encl{\parbox[t]{.85\textwidth}{\JXenclContent}}%
492 \StopLetterPages
494 %%----------------------------------------------------------------
495 \DeclareOption*{%
496 \PackageError{jxenclbeta}{Unknown option '\CurrentOption'}%
498 %%----------------------------------------------------------------
499 \ProcessOptions\relax
500 %%=============================================================EOF