summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/pfarrei/pfarrei.dtx
blob: a1deca6de9d7c8d702a5572a92db41c2b920b9cc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
% \CheckSum{36}
% \iffalse^^A meta-comment
% ======================================================================
% pfarrei.dtx
% Copyright (c) 2013 Markus Kohm
%                    komascript at gmx info
%
% This work may be distributed and/or modified under the conditions of
% the LaTeX Project Public License, version 1.3c of the license.
% The latest version of this license is in
%   http://www.latex-project.org/lppl.txt
% and version 1.3c or later is part of all distributions of LaTeX
% version 2005/12/01.
%
% This work has the LPPL maintenance status `maintained'.
%
% The Current Maintainer and author of this work is Markus Kohm.
%
% This work consists of the files `README' and `pfarrei.dtx'.
%
% If you're missing the installation batch file `pfarrei.ins', try
%    tex pfarrei.dtx
% to unpack all files. 
% The package documentation may be produced repeating
%    pdflatex pfarrei.dtx
% at least three times.
% ----------------------------------------------------------------------
% pfarrei.dtx
% Copyright (c) 2013 Markus Kohm
%                    komascript at gmx info
%
% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz,
% Version 1.3c.
% Die neuste Version dieser Lizenz ist
%   http://www.latex-project.org/lppl.txt
% und Version 1.3c ist Teil aller Verteilungen von LaTeX
% Version 2005/12/01.
%
% Dieses Wert hat den LPPL-Verwaltungszustand `maintained' (verwaltet).
%
% Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm.
%
% Das Werk besteht aus den Dateien `README' und `pfarrei.dtx'.
%
% Falls Sie die Installations-Batch-Datei `pfarrei.ins' vermissen,
% probieren Sie einfach einmal
%    tex pfarrei.dtx
% um alle Dateien auszupacken.
% Die Anleitung erhalten Sie durch dreimalige Ausführung von:
%    pdflatex pfarrei.dtx
% ======================================================================
% \fi^^A meta-comment
%
% \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         \~}
%
% \iffalse^^A meta-comment
%<*dtx|tex>
\begingroup
   \def\revisiondate$#1: #2-#3-#4 #5${%
    \gdef\pfarreirevisiondate{#2/#3/#4}%
  }\revisiondate$Date: 2013-03-10 15:19:06 +0100 (So, 10 Mär 2013) $
  \def\revision$#1: #2 #3${%
    \gdef\pfarreirevision{#2}%
  }\revision$Revision: 20 $
\endgroup
%<*dtx>
\def\LaTeXformat{LaTeX2e}
\ifx\fmtname\LaTeXformat
  \makeatletter
    \let\saved@@end\@@end
    \def\@@end{\csname fi\endcsname\saved@@end}
  \makeatother
  \ProvidesFile{pfarrei.dtx}
%</dtx>
%<package>\ProvidesPackage{pfarrei.sty}
%<a5toa4>\ProvidesFile{a5toa4.tex}
  [\pfarreirevisiondate\space r\pfarreirevision LaTeX2e package
                                                  (for priests)]
%</dtx|tex>
%<*driver>
\documentclass{ltxdoc}
\usepackage[english,ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\CodelineIndex
\RecordChanges
\GetFileInfo{pfarrei.dtx}
\begin{document}
\title{Das Pfarrei-Paket\footnote{%
    \protect\foreignlanguage{english}{Sorry if you don't understand German,
      but currently there's only a German manual, because the idea of this is
      from a German article at ``Die \TeX nische Komödie''. But you may try to
      call ``\texttt{a5toa4 --help}'' to get some useful information.%
    }%
  }%
} \date{\filedate} \author{Markus Kohm}
\maketitle
\DocInput{pfarrei.dtx}
\PrintChanges
\PrintIndex
\end{document}
%</driver>
%<*dtx>
\fi
%</dtx>
%<*insfile>
\def\batchfile{pfarrei.dtx}
\input docstrip.tex
\ifToplevel{%
  \keepsilent
  \askforoverwritefalse
}

\let\MetaPrefix\relax
\declarepreamble\rawpreamble

Copyright (c) 2013 Markus Kohm
                   komascript at gmx info

This file was generated from file(s) of the work `pfarrei'.
------------------------------------------------------------------

It may be distributed under the conditions of the 
LaTeX Project Public License in the version distributed together
with the work `pfarrei'.  You may however distribute the work
`pfarrei' without all such generated files.  See also 
<http://www.latex-project.org/lppl.txt> for additional 
information.

This work has the LPPL maintenance status `maintained'.

The Current Maintainer of this work is Markus Kohm.

The list of files belonging to the work `pfarrei' is given in 
the file `pfarrei.dtx'.

\endpreamble

\let\MetaPrefix\DoubleperCent
\edef\texpreamble{\rawpreamble}

\generate{%
  \usepreamble\texpreamble
  \file{pfarrei.sty}{%
    \from{pfarrei.dtx}{package,tex}%
  }%
  \file{a5toa4.tex}{%
    \from{pfarrei.dtx}{a5toa4,tex}%
  }%
}

\ifToplevel{%
  \generate{%
    \usepreamble\texpreamble
    \file{pfarrei.ins}{%
      \from{pfarrei.dtx}{insfile,tex}%
    }%
  }%
}

\def\MetaPrefix{--}
{
  {
    \catcode`\#=11
    \gdef\Hash{#}%
  }
  \xdef\luapreamble{\Hash!/usr/bin/env texlua^^J%
    ^^J%
    \rawpreamble}
}

\declarepostamble\luapostamble

\endpostamble

\generate{%
  \usepreamble\luapreamble\usepostamble\luapostamble
  \file{a5toa4.tlu}{%
    \from{pfarrei.dtx}{a5toa4,lua}%
  }%
  \file{pfarrei.tlu}{%
    \from{pfarrei.dtx}{pfarrei,lua}%
  }%
}

\ifToplevel{%
  \Msg{+---------------------------------------------------------------}
  \Msg{| To finish the installation copy the files into a TEXMF tree:}
  \Msg{| \space\space a5toa4.tlu  --> scripts/pfarrei/a5toa5.tlu}
  \Msg{| \space\space pfarrei.tlu --> scripts/pfarrei/pfarrei.tlu}
  \Msg{| \space\space a5toa4.tex  --> tex/latex/pfarrei/a5toa4.tex}
  \Msg{| \space\space pfarrei.sty --> tex/latex/pfarrei/pfarrei.sty}
  \Msg{| If you are not using Windows, you should also copy a5toa4.tlu}
  \Msg{| to the binary directory of your TeX distribution and rename}
  \Msg{| it into a5toa4.}
  \Msg{| If you are using Windows, you make a copy of runscript.exe at}
  \Msg{| the binary directory of your TeX distribution and rename it}
  \Msg{| into a5toa4.}
  \Msg{+---------------------------------------------------------------}
}
%</insfile>
%<*dtx|doc>
\csname endinput\endcsname
% \fi^^A meta-comment
%
% \begin{abstract}
%   In "`Die \TeX nische Kömdie"', Ausgabe 1/2013 hat Christian Justen über
%   seinen Einsatz von \LaTeX{} im Pfarrdienst berichtet. Einige der von ihm
%   verwendeten bash-Scripte und seine Schilderungen dazu haben mich dazu
%   inspiriert, eine Sammlung zu beginnen, die entsprechende Dinge leisten.
%   Allerdings habe ich mich dazu entschlossen, keine bash-Script zu
%   verwenden, sondern die Funktionalität derselben in lua-Scripte für die
%   Ausführung mit texlua zu realisieren, da texlua inzwischen Bestandteil
%   aller \TeX-Distributionen ist. Somit wurde das ganze besser vom
%   Betriebssystem unabhängig.
% \end{abstract}
%
% \tableofcontents
%
% \section{Die Skripte-Seite}
% \label{sec:skripte}
%
% In besagtem Artikel wurden zwei Skripte, "`a5toa4"' und "`a5toa4bogen"'
% vorgestellt. Beide erzeugen aus PDF-Dateien, die im A5-Format vorliegen,
% neue PDF-Dateien im A4-quer-Format. 
%
% Das erste, "`a5toa4", arrangiert die A5-Seiten dabei so, dass jeweils zwei
% aufeinander folgende A5-Seiten nebeneinandern ausgegeben werden. Das ist vor
% allem dann praktisch, wenn man nur einseitig druckt und die Seiten später
% geteilt werden sollen. Im folgenden wird diese Ausgabe \emph{side-by-side}
% genannt.
%
% Das zweite, "`a5toa4bogen"', erzeugt hingegen ein sogenanntes Booklet. Dabei
% werden die Seiten so angeordnet, dass nach dem beidseitigen Druck, der ganze
% Stapel nur noch in der Mitte geknickt werden muss, um eine Art Heft zu
% erhalten. Daher wird für diese Ausgabe im Weiteren die Bezeichnung
% \emph{booklet} verwendet.
%
% Ich dacht mir, das könne man in ein einziges Programm gießen. Dieses heißt
% bei mir dann schlicht "`a5toa4.tlu"' bzw. bei optimaler Installation kann es
% zumindest unter Linux und OSX auch als "`a5toa4"' angesprochen werden.
%
% Ruft man das Programm mit der Option "`\texttt{-V}"' oder
% "`\texttt{--version}"' auf, so gibt es lediglich eine Versionsinformation
% aus.
%
% Beim Aufruf mit Option "`\texttt{-h}"' oder "`\texttt{--help}"' wird
% hingegen eine ausführliche Hilfe zu den Aufrufmöglichkeiten und den Optionen
% ausgegeben.
%
% Man kann es aber auch mit einer Reihe von Durchführungsoptionen und Namen
% von PDF-Dateien aufrufen. In diesem Fall wird entweder eine booklet- oder
% eine side-by-side-Ausgabe erzeugt.  Die Wahl, ob eine booklet- oder eine
% side-by-side-Ausgabe erfolgen soll, erfolgt über die Optionen
% "`\texttt{-b}"' oder "`\texttt{--booklet}"' für booklet bzw. "`\texttt{-s}"'
% oder "`\texttt{--sidebyside}"' für side-by-side. Voreingstellt ist die
% side-by-side-Ausgabe.
%
% Für die Durchführung wurde auch ein Verbesserungsvorschlag von Christian
% Justen selbst aufgegriffen. Bei ihm haben die Skripte mit einer
% Zwischendateien mit dem festen Namen "`\texttt{cj.tmp}"' gearbeitet. Im
% Extramfall konnte dies dazu führen, dass Dateien unerwünscht überschrieben
% und so vernichtet wurden.
%
% In meiner Fassung als texlua-Skript wird mit einem temporären Verzeichnis im
% aktuellen Arbeitsverzeichnis gearbeitet. Darin wird eine temporäre
% \LaTeX-Datei erzeugt und alle Ausgabedateien eines PDF\LaTeX-Laufs
% abgelegt. Das PDF-Ergebnis des PDF\LaTeX-Laufs wird dann wieder in das noch
% immer aktuelle Arbeitsverzeichnis kopiert. Im Normalfall wird dabei der
% Basisname (also ohne Extension) der Ursprungsdatei je nachdem, was erzeugt
% wurde, entweder um "`\texttt{-booklet.pdf}"' oder
% "`\texttt{-sidebyside.pdf}"' ergänzt. Auch dies ist eine Abweichung von
% Christian Justens Original-Skripten, bei denen immer die Ursprungsdatei vom
% Ergebnis überschrieben wurde. Dieses Verhalten ist aber ebenfalls zu
% erreichen, indem man Option "`\texttt{-o}"' oder "`\texttt{--overwrite}"'
% angibt. Nach erfolgreichem PDF\LaTeX-Lauf und dem Kopieren des Ergebnisses
% ins aktuelle Arbeitsverzeichnis, wird das temporäre Verzeichnis samt Inhalt
% wieder gelöscht.
%
% Eine weitere Änderung bei mir betrifft die Tatsache, dass man für die
% Verarbeitung mehrerer Dateien nicht mehrere Aufrufe benötigt, man kann auch
% in einem Aufruf beliebig oft Optionen und Dateien hintereinander anfügen,
% die dann nacheinander verarbeitet werden. So würde beispielsweise mit dem
% Aufruf:
% \begin{verbatim}
%       a5toa4 -b foo.pdf -s bar.pdf -o bum.pdf
% \end{verbatim}\unskip\ignorespaces
% sowohl "`\texttt{foo-booklet.pdf}"' als auch "`\texttt{bar-sidebyside.pdf}"'
% erzeugt und anschließend "`\texttt{bum.pdf}"' durch eine
% side-by-side-Fassung von sich selbst überschrieben werden.
% 
% Es ist zu beachten, dass nach jeder erzeugten Datei die
% Überschreibeinstellung von Option "`\texttt{-o}"' oder
% "`\texttt{--overwrite}"' aus Sicherheitsgründen wieder aufgehoben wird. Will
% man also mehrere Dateien nacheinander bearbeiten und bei mehreren davon soll
% die Ursprungsdatei überschrieben werden, so ist vor jeder dieser Dateien die
% Option erneut zu setzen.
%
% Tatsächlich ist "`\texttt{a5toa4.tlu}"' aber nur ein Wrapper für
% "`\texttt{pfarrei.tlu}"'. Das wurde deshalb so gemacht, damit das
% eigentliche Programm leichter durch Versionen in \texttt{TEXMFLOCAL} oder
% \texttt{TEXMFHOME} ersetzt werden kann, ohne dass jedes Mal das
% \emph{Binary} ersetzt werden muss. Unter Windows muss man allerdings erst
% einmal dafür sorgen, dass das Skript als Binary aufgerufen
% wird.\footnote{Hierfür wird noch ein Windows-Batch-Jongleur gesucht.}
%
% Eine letzte kleine Änderung meiner Fassung betrifft die Anforderungen an das
% Seitenformat der Quelldateien. Im Original wurde mit der \texttt{pdfpages}
% Option \texttt{noautoscale} gearbeitet. Damit wurden die Seiten der
% Quelldatei nicht an das Seitenformat der Zieldatei angepasst. War die
% Quelldatei also nicht im Format A5, sondern beispielsweise A6, dann wurden
% zwei A6-Seiten auf einer A4-quer-Seite platziert. War die Quelldatei im Format
% A4, passten ihre Seiten nicht einmal auf die A4-quer-Seite. Ich habe diese
% Option daher weggelassen. Nun werden die Seiten der Quelldatei automatisch
% ins A5-Format gebracht, bevor sie auf der A4-quer-Seite platziert werden.
%
%
% \subsection*{Zusammenfassung}
%
% Um aus einem Quell-PDF "`\texttt{foo.pdf}"' ein Ziel-PDF
% "`\texttt{foo-sidebyside.pdf}"' zu erzeugen, bei dem die Seiten des
% Quell-PDF aufeinander folgend, nebeneinander auf einer A4-quer-Seite
% platziert sind, verwendet man:
% \begin{verbatim}
%       a5toa4 -s foo.pdf
% \end{verbatim}\unskip\ignorespaces
% Soll die Ziel-PDF hingegen die Quell-PDF überschreiben, so gibt vor dem
% Dateinamen zusätzlich Option "`\texttt{-o}"' an.
%
% Um aus einem Quell-PDF "`\texttt{foo.pdf}"' ein Ziel-PDF
% "`\texttt{foo-sidebyside.pdf}"' zu erzeugen, bei dem die Seiten des
% Quell-PDF so auf einer A4-quer-Seite platziert sind, dass durch Falten in
% der Mitte ein Heft entsteht, verwendet man:
% \begin{verbatim}
%       a5toa4 -b foo.pdf
% \end{verbatim}\unskip\ignorespaces
% Soll die Ziel-PDF hingegen die Quell-PDF überschreiben, so gibt vor dem
% Dateinamen zusätzlich Option "`\texttt{-o}"' an.
%
% Informationen über die verwendete Version von "`\texttt{a5toa4}"' erhält man
% mit:
% \begin{verbatim}
%       a5toa4 --version
% \end{verbatim}\unskip
%
% Eine Hilfe zum Programm erhält man mit:
% \begin{verbatim}
%       a5toa4 --help
% \end{verbatim}
%
%
% \section{Die \LaTeX-Seite}
% \label{sec:latex}
%
% Die \LaTeX-Seite zu den Skripten aus Abschnitt~\ref{sec:skripte} besteht
% zunächst einmal aus dem \LaTeX-Dokument "`\texttt{a5ona4.tex}"'. Dieses
% lädt wiederum das \LaTeX-Paket "`\texttt{pfarrei.sty}"'. Die eigentliche
% Funktionalität verbirgt sich darin. Derzeit gibt es fast nur eine Anweisung
% \cs{AvToAiv}. Diese erledigt die Hauptarbeit, wobei die erwartet, dass die
% Original-PDF-Datei, die verarbeitet werden soll, im Makro \cs{OriginalFile}
% abgelegt ist. Das Skript sorgt dafür, dass dies geschieht. Darüber hinaus
% fällt die Entscheidung, ob eine booklet- oder eine side-by-side-Ausgabe
% erfolgen soll, schlicht über die Frage, ob das Makro \cs{Booklet} für
% \LaTeX{} definiert ist oder nicht.
%
% Eine weitere Funktionalität stellt "`\texttt{pfarrei}.sty"' derzeit noch
% nicht bereit. Hier sollen allerdings in naher Zukunft einige Dinge
% implementiert werden, die Christian Justen in seinem Artikel ebenfalls
% erwähnt hat.
%
% \StopEventually{}
%
% \iffalse^^A meta-comment
%</dtx|doc>
% \fi^^A meta-comment
%
% \section{Implementierung der \LaTeX-Seite}
%
% \iffalse^^A meta-comment
%<*tex>
% \fi^^A meta-comment
%
% \subsection{Das \LaTeX-Dokument "`\texttt{a5toa4.tex}"'}
%
% \iffalse^^A meta-comment
%<*a5toa4>
% \fi^^A meta-comment
%
% Das ist wirklich geradezu trivial:
%    \begin{macrocode}
\documentclass[a4paper,landscape]{article}
\usepackage{pfarrei}
\begin{document}
\AvToAiv
\end{document}
%    \end{macrocode}
% Das war es schon.
%
% \iffalse^^A meta-comment
%</a5toa4>
% \fi^^A meta-comment
%
% \subsection{Das \LaTeX-Paket "`\texttt{pfarrei}"'}
%
% \iffalse^^A meta-comment
%<*package>
% \fi^^A meta-comment
%
% Als erstes werden die Optionen ausgeführt (obwohl es noch keine gibt):
%    \begin{macrocode}
\ProcessOptions*
%    \end{macrocode}
% Dann benötigen wir ein paar Pakete:
%    \begin{macrocode}
\RequirePackage{ifpdf}
\RequirePackage{pdfpages}
%    \end{macrocode}
% \begin{macro}{\AvToAiv}
% Der Name des Makros kommt von \texttt{a5toa4}. Es muss sichergestellt sein,
% dass dies im PDF-Modus verwendet wird.
%    \begin{macrocode}
\newcommand*{\AvToAiv}{%
  \ifpdf\else
    \PackageError{pfarrei}{PDF mode needed}{%
      a5toa4 needs the direct PDF mode.\MessageBreak
      Usually this may be activated using either pdflatex, lualatex or
      xelatex.%
    }%
    \input{x.tex}
  \fi
  \@ifundefined{Booklet}{%
    \includepdf[pages=-,nup=2x1]{\OriginalFile}%
  }{%
    \includepdf[pages=-,booklet]{\OriginalFile}%
  }%
}
%    \end{macrocode}
% \end{macro}^^A \AvToAiv
%
% \iffalse^^A meta-comment
%</package>
% \fi^^A meta-comment
%
%
% \iffalse^^A meta-comment
%</tex>
% \fi^^A meta-comment
%
% \section{Implementierung der Skripten}
%
% \iffalse^^A meta-comment
%<*lua>
% \fi^^A meta-comment
%
% \subsection{Der kleine Wrapper "`\texttt{a5toa4.tlu}"'}
%
% \iffalse^^A meta-comment
%<*a5toa4>
% \fi^^A meta-comment
%    \begin{macrocode}
-- $Id: pfarrei.dtx 20 2013-03-10 14:19:06Z mjk $

kpse.set_program_name(arg[-1], 'a5toa4')
require('pfarrei')
%    \end{macrocode}
% \iffalse^^A meta-comment
%</a5toa4>
% \fi^^A meta-comment
%
% \subsection{Das Haupt-Skript "`\texttt{pfarrei.tlu}"'}
%
% \iffalse^^A meta-comment
%<*pfarrei>
% \fi^^A meta-comment
%    \begin{macrocode}
local version_number = string.sub( '$Revision: 20 $', 12, -2 )
local action_version = ' r' .. version_number .. '\n' .. [[

Copyright (c) 2013 Markus Kohm.
License: lppl 1.3c or later. See <http://www.latex-project.org/lppl.txt>.
]]
local action_help = [[
action options:

  -h, --help            Print this help message.
  -V, --version         Print the version information.

processing options:
  -b, --booklet         Generate a booklet instead of only two pages side by
                        side onto one page.  The whole booklet will be one
                        signature.
  -s, --sidebyside      Generate only two pages side by side onto one page
                        instead of a booklet.
  -o, --overwrite       Write the output to the <PDF file> instead of appending
                        "-sidebyside.pdf" or "--booklet.pdf" to the basename 
                        of <PDF file>
]]
local action_opts = {
   ['-h']           = 'help',
   ['--help']       = 'help',
   ['-V']           = 'version',
   ['--version']    = 'version',
}
local processing_opts = {
   ['-b']           = 'booklet',
   ['--booklet']    = 'booklet',
   ['-s']           = 'sidebyside',
   ['--sidebyside'] = 'sidebyside',
   ['-o']           = 'overwrite',
   ['--overwrite']  = 'overwrite'
}

-- detect action options and do action
local i = 1
local action
while arg[i] do
   action = action_opts[arg[i]]
   i = i+1
   if     action == 'help' then
      print( arg[0]..action_version );
      print( 'Usage: ' .. arg[0] .. ' <action option>' )
      print( '       ' .. arg[0] .. ' [<processing options>] <PDF file> ...\n' )
      print( action_help );
      os.exit( 0 );
   elseif action == 'version' then
      print( arg[0] .. action_version );
      os.exit( 0 );
   end
end

-- process options and parameters
local booklet = false
local overwrite = false
i = 1
while arg[i] do
   action = processing_opts[arg[i]]
   if     action == 'booklet' then booklet = true
   elseif action == 'sidebyside' then booklet = false
   elseif action == 'overwrite' then overwrite = true
   elseif action == nil then
      -- build the temporary tex file
      local tmpdir = os.tmpdir("pfarrei.XXXXXX" )
      local tmpfile = string.match( arg[i], '.*/(.*)$') or arg[i]
      local basename = string.match( tmpfile,'(.*)%.[^.]*$') or tmpfile
      tmpfile = tmpdir..'/'..basename..'.tex'
      local file = assert( io.open( tmpfile, 'w' ) )
      if booklet then assert( file:write("\\def\\Booklet{}\n") ) end
      assert( file:write("\\def\\OriginalFile{",arg[i],"}\n") )
      assert( file:write("\\input{a5toa4.tex}\n") )
      assert( file:flush() )
      file:close()
      -- call pdflatex
      assert( os.execute( 'pdflatex -interaction=batchmode -output-directory='..tmpdir..' '..tmpfile ) )
      -- copy the resulting pdf file
      local srcfile = assert( io.open( tmpdir..'/'..basename..'.pdf', 'rb' ) )
      if overwrite 
      then
         tmpfile = arg[i]
      else
         tmpfile = string.match( arg[i], '(.*)%.[^.]*$' ) or arg[i]
         if booklet 
         then
            tmpfile = tmpfile..'-booklet.pdf'
         else
            tmpfile = tmpfile..'-sidebyside.pdf'
         end
      end
      local destfile = assert( io.open( tmpfile, 'wb' ) )
      local buffer
      while true do
         buffer = srcfile:read(8388608)
         if buffer==nil then break end
         assert( destfile:write(buffer) )
      end
      assert( destfile:close() )
      srcfile:close()
      tmpfile=tmpdir..'/'..basename
      os.remove( tmpfile..'.aux' )
      os.remove( tmpfile..'.tex' )
      os.remove( tmpfile..'.log' )
      os.remove( tmpfile..'.pdf' )
      os.remove( tmpdir )
      overwrite = false
   end
   i=i+1
end
%    \end{macrocode}
% \iffalse^^A meta-comment
%</pfarrei>
% \fi^^A meta-comment
%
% \iffalse^^A meta-comment
%</lua>
% \fi^^A meta-comment
%
% \Finale
%
\endinput
%
% end of file `pfarrei.dtx'
%
%%% Local Variables:
%%% mode: doctex
%%% mode: flyspell
%%% ispell-local-dictionary: "de_DE"
%%% TeX-master: t
%%% End: