From e0c6872cf40896c7be36b11dcc744620f10adf1d Mon Sep 17 00:00:00 2001
From: Norbert Preining <norbert@preining.info>
Date: Mon, 2 Sep 2019 13:46:59 +0900
Subject: Initial commit

---
 macros/latex/contrib/pfarrei/pfarrei.dtx | 1194 ++++++++++++++++++++++++++++++
 1 file changed, 1194 insertions(+)
 create mode 100644 macros/latex/contrib/pfarrei/pfarrei.dtx

(limited to 'macros/latex/contrib/pfarrei/pfarrei.dtx')

diff --git a/macros/latex/contrib/pfarrei/pfarrei.dtx b/macros/latex/contrib/pfarrei/pfarrei.dtx
new file mode 100644
index 0000000000..17ab114049
--- /dev/null
+++ b/macros/latex/contrib/pfarrei/pfarrei.dtx
@@ -0,0 +1,1194 @@
+% \CheckSum{455}
+% \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-10-16 20:54:26 +0200 (Mi, 16. Okt 2013) $
+  \def\revision$#1: #2 #3${%
+    \gdef\pfarreirevision{#2}%
+  }\revision$Revision: 36 $
+\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}
+%<a5toa4>\ProvidesFile{a5toa4.tex}
+  [\pfarreirevisiondate\space r\pfarreirevision\space LaTeX2e package
+                                                  (for pastors)]
+%</dtx|tex>
+%<*driver>
+\documentclass{ltxdoc}
+\usepackage[english,ngerman]{babel}
+\usepackage[utf8]{inputenc}
+\usepackage[T1]{fontenc}
+\usepackage{lmodern}
+\usepackage{hypdoc}
+
+\newcommand*{\StartBlock}[1][2]{%
+  \bigskip\nobreak\vskip#1\baselineskip\pagebreak[1]\vskip-#1\baselineskip
+  \nobreak\noindent
+}
+
+\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 at least you
+      may try to call ``\texttt{a5toa4 --help}'' to get some useful
+      information.%
+    }%
+  }%
+} 
+\date{\filedate\footnote{Version \fileversion}}
+\author{Markus Kohm\footnote{komascript at gmx info}}
+\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 MiKTeX 2.9, you should rename file pfarrei.tlu}
+  \Msg{| into a5toa4.tlu, because the outdated texlua of MiKTeX 2.9 doesn't}
+  \Msg{| search for modules like the current vanilla version of texlua.}
+  \Msg{| If you are using Windows, you should make a copy of runscript.exe}
+  \Msg{| (TeX Live) resp. runtexlua.exe (MiKTeX) at the binary directory}
+  \Msg{| of your TeX distribution and rename it into a5toa4.exe.}
+  \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
+%   inspiriert, eine Sammlung zu beginnen, die entsprechende Dinge leisten.
+%   Allerdings habe ich mich entschlossen, keine bash-Script zu verwenden,
+%   sondern die Funktionalität derselben in lua-Scripte für die Ausführung mit
+%   \TeX Lua zu realisieren, da \TeX Lua inzwischen Bestandteil aller
+%   \TeX-Distributionen ist. Somit wurde das ganze besser vom Betriebssystem
+%   unabhängig.
+%
+%   Ergänzt habe ich das ganze durch einige Befehle und Umgebungen, die für
+%   die Erstellung von Lied- und Gebetsheftchen für den Gottesdienst
+%   praktisch sein könnten. Jedenfalls habe ich selbst Nutzen daraus
+%   gezogen. Weiteres ist geplant.
+% \end{abstract}
+%
+% \tableofcontents
+%
+% \section{Die Skripte-Seite}
+% \label{sec:skripte}
+%
+% In besagtem Artikel wurden zwei Skripte, "`\texttt{a5toa}4"' und
+% "`\texttt{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.
+%
+% \StartBlock%^^A
+% Ich\marginpar{\raggedleft\texttt{a5toa4.tlu}} dachte mir, das könne man in
+% ein einziges Programm gießen. Dieses heißt bei mir dann schlicht
+% "`a5toa4.tlu"'. Bei optimaler Installation kann es auch als "`a5toa4"'
+% angesprochen werden.
+%
+% Ruft\marginpar{\raggedleft\texttt{-{}-version}} man das Programm mit der
+% Option "`\texttt{-V}"' oder "`\texttt{-{}-version}"' auf, so gibt es lediglich
+% eine Versionsinformation aus.
+%
+% Beim\marginpar{\raggedleft\texttt{-{}-help}} Aufruf mit Option
+% "`\texttt{-h}"' oder "`\texttt{-{}-help}"' wird hingegen eine ausführliche
+% Hilfe zu den Aufrufmöglichkeiten und den Optionen ausgegeben.
+%
+% Man\marginpar{\raggedleft\texttt{-{}-booklet}\\\texttt{-{}-sidebyside}} 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.
+%
+% Ein\marginpar{\raggedleft\texttt{-{}-overwrite}} Überschreiben der
+% Ursprungsdatei wie bei Christian Justens Original-Skripten kann man aber
+% alternativ ebenfalls 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\marginpar{\raggedleft\texttt{pfarrei.tlu}} 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.
+%
+% 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\marginpar{\raggedleft\texttt{a5toa4}}}
+%
+% Um\marginpar{\raggedleft\texttt{-s}} 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\marginpar{\raggedleft\texttt{-b}} aus einem Quell-PDF
+% "`\texttt{foo.pdf}"' ein Ziel-PDF "`\texttt{foo-booklet.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\marginpar{\raggedleft\texttt{-o}} die Ziel-PDF hingegen die Quell-PDF
+% überschreiben, so gibt vor dem Dateinamen zusätzlich Option "`\texttt{-o}"'
+% an.
+%
+% Informationen\marginpar{\raggedleft\texttt{-V}} über die verwendete Version
+% von "`\texttt{a5toa4}"' erhält man mit:
+% \begin{verbatim}
+%       a5toa4 -V
+% \end{verbatim}\unskip
+%
+% Eine\marginpar{\raggedleft\texttt{-h}} Hilfe zum Programm erhält man mit:
+% \begin{verbatim}
+%       a5toa4 -h
+% \end{verbatim}
+%
+%
+% \section{Die \LaTeX-Seite}
+% \label{sec:latex}
+%
+% Die \LaTeX-Seite zu den Skripten aus \autoref{sec:skripte} besteht
+% zunächst einmal aus dem \LaTeX-Dokument "`\texttt{a5toa4.tex}"'. Dieses
+% lädt wiederum das \LaTeX-Paket "`\texttt{pfarrei.sty}"'. Die eigentliche
+% Funktionalität verbirgt sich darin. 
+%
+% \StartBlock%^^A
+% \DescribeMacro{\AvToAiv}\hspace*{-\marginparsep}\oarg{Original-Datei}\\%^^A
+% \DescribeMacro{\OriginalFile}%^^A
+% Die Anweisung \cs{AvToAiv} erledigt die Hauptarbeit für \texttt{a5toa4}. Die
+% Voreinstellung für das optionale Argument \meta{Original-Datei} ist
+% \cs{OriginalFile}.  Das Skript "`\texttt{a5toa4.tlu}"' setzt dieses Makro
+% entsprechend.
+%
+% \StartBlock[1]%^^A
+% Man kann das \LaTeX-Paket \textsf{pfarrei} aber auch per
+% \begin{verbatim}
+% \usepackage{pfarrei}
+% \end{verbatim}\unskip
+% oder
+% \begin{verbatim}
+% \usepackage[booklet]{pfarrei}
+% \end{verbatim}\unskip
+% direkt in seinem Dokument laden. Dann stellt es Umgebungen und Befehle für
+% die Erstellung von Textblättern oder Textheften für Pfarrer, Lektoren und
+% andere Mitwirkende an einem Gottesdienst oder auch für die Gemeinde
+% bereit.
+%
+% \StartBlock%^^A
+% \DescribeMacro{\ifbooklet}
+% \hspace*{-\marginparsep}\marg{Dann-Code}\marg{Sonst-Code}\\*
+% Es kann Code davon abhängig ausgeführt werden, ob ein Booklet erzeugt wird
+% oder nicht. Im Falle eines Booklets wird der \meta{Dann-Code} ausgeführt,
+% anderenfalls der \meta{Sonst-Code}. Dies wird auch intern, beispielsweise
+% innerhalb von \cs{AvToAiv} oder innerhalb der
+% \texttt{booklet}\dots\texttt{page}-Umgebungen verwendet, um die
+% entsprechende Entscheidung durchzuführen.
+%
+% \StartBlock%^^A
+% \DescribeEnv{bookletfrontpage}%^^A
+% \DescribeMacro{\bookletfrontpagestyle}%^^A
+% Mit der Umgebung \texttt{bookletfontpage} kann eine Titelseite erstellt
+% werden, die nur bei der Erzeugung eines Booklets ausgegeben wird. Die
+% Umgebung sollte immer am Anfang des Dokuments stehen, anderenfalls
+% produziert sie eine Fehlermeldung. Dies geschieht, weil die Titelseite nun
+% einmal die erste Seite sein sollte. Sollte der Seitenstil \texttt{empty}
+% einmal nicht für die Titelseite gewünscht werden, kann man
+% \cs{bookletfrontpagestyle} auf den Namen des gewünschten Stils umdefinieren.
+%
+% \StartBlock[6]%^^A
+% \DescribeMacro{\motto}\hspace*{-\marginparsep}\marg{Motto}\\*%^^A
+% \DescribeMacro{\titlepicture}\hspace*{-\marginparsep}\marg{Bild}\\*%^^A
+% \DescribeMacro{\title}\hspace*{-\marginparsep}\marg{Titel}\\*%^^A
+% \DescribeMacro{\parish}\hspace*{-\marginparsep}\marg{Gemeinde}\\*%^^A
+% \DescribeMacro{\date}\hspace*{-\marginparsep}\marg{Datum}\\*%^^A
+% \DescribeMacro{\makebooklettitlepage}%^^A
+% Ähnlich zu \cs{maketitle} bei den Standard-Klassen kann man für Booklets
+% (aufbauend auf der oben erklärten Umgebung \texttt{bookletfrontpage} statt
+% auf \texttt{titlepage}) mit Hilfe von \cs{makebooklettitlepage} eine
+% Titelseite für ein Booklet erzeugen. Der Titel besteht aus einem Motto (oben
+% auf der Seite), gefolgt von einem Titelbild, gefolgt von dem Titel, Angaben
+% zur Gemeinde und zum Schluss das Datum. Es ist zu beachten, dass man
+% \cs{makebooklettitlepage} \emph{nicht} selbst in eine Umgebung packen
+% sollte, da diese Anweisung intern die Umgebung \texttt{bookletfrontpage}
+% verwendet. Darüber hinaus ist zu beachten, dass als Titelbild nicht einfach
+% ein Dateinamen angegeben wird, sondern die kompletten Anweisungen, um ein
+% Bild einzuladen oder zu erstellen. Auch muss ggf. ein Grafikpaket selbst
+% geladen werden.
+%
+% \StartBlock%^^A
+% \DescribeEnv{bookletbackpage}%^^A
+% \DescribeEnv{bookletemptypage}%^^A
+% \DescribeMacro{\bookletbackpagestyle}%^^A
+% \DescribeMacro{\bookletemptypagestyle}%^^A
+% Für ein Booklet kann mit der Umgebung \texttt{bookletbackpage} außerdem eine
+% Rückseite definiert werden. Die Definition kann an beliebiger Stelle
+% erfolgen. Die Ausgabe findet auf einer durch vier teilbaren Seite am Ende
+% des Dokuments statt. Dazu werden ggf. leere Seiten eingefügt. Den Inhalt der
+% \emph{leeren Seiten} kann ebenfalls mit einer Umgebung, nämlich
+% \texttt{bookletemptypage}, definiert werden. Wie bereits beim Seitenstil für
+% die Vorderseite, kann auch der Seitenstil für die \emph{leeren Seiten} und
+% die Rückseite umdefiniert werden.
+%
+% \StartBlock%^^A
+% \DescribeEnv{samedoublepage}%^^A
+% Wenn der Inhalt dieser Umgebung auf die aktuelle Seite passt, wird er
+% ausgegeben. Passt er nicht auf die aktuelle Seite und die aktuelle Seite ist
+% eine Seite mit einer ungeraden Seitenzahl, dann wird zunächst ein
+% Seitenumbruch durchgeführt. Anschließend wird der Inhalt ausgegeben. Dadurch
+% wird vermieden, dass beispielsweise ein Lektor oder Pfarrer unnötig
+% innerhalb eines Textes umblättern muss. Es ist zu beachten, dass innerhalb
+% dieser Umgebung Fußnoten, Marginalien und Gleitumgebungen nicht korrekt
+% funktionieren.
+%
+% \StartBlock%^^A
+% \DescribeMacro{\setupprayer}\hspace*{-\marginparsep}\marg{Optionen}\\*%^^A
+% \DescribeEnv{prayer}%^^A
+% \DescribeMacro{\noresponder}%^^A
+% Die Umgebung \texttt{prayer} ist für Gebete gedacht. Die Umgebung hat ein
+% optionales Argument. Dieses ist identisch mit \meta{Optionen} gilt dann aber
+% nur lokal für diese Gebetsumgebung. Als \meta{Optionen} kann eine
+% Komma-separierte Liste von \meta{Schlüssel}\texttt{=}\meta{Wert}-Optionen
+% angegeben werden. Folgende Schlüssel werden verstanden:
+% \begin{description}
+% \item[\texttt{leader=}\meta{Vorbeter}:] Setzt die Voreinstellung für das
+%   optionale Argument von \cs{item} auf \meta{Vorbeter}.
+% \item[\texttt{responder=}\meta{Antwortende(r)}:] Setzt die Voreinstellung
+%   für das optionale Argument des automatisch als Antwort eingefügten
+%   \cs{item} auf \meta{Antwortende(r)}.
+% \item[\texttt{response=}\meta{Antwort}:] Setzt die automatisch eingefügte
+%   Antwort auf \meta{Antwort}.
+% \end{description}
+% Eine automatische Antwort wird nur eingefügt, wenn sowohl \texttt{responder}
+% als auch \texttt{response} angegeben sind. Soll nur für einzelne \cs{item}
+% keine automatische Antwort erstellt werden, so ist irgendwo innerhalb des
+% entsprechenden \cs{item} (\emph{nicht} jedoch innerhalb des optionalen
+% Arguments von \cs{item}) oder danach ein \cs{noresponder} einzufügen.
+%
+% \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. Trotzdem hat die Verwendung einer solchen zusätzlichen
+% Datei den Vorteil, dass man bei Bedarf lokal auch ein ganz anderes
+% "`\texttt{a5toa4.tex}"' speichern kann.
+%
+% \iffalse^^A meta-comment
+%</a5toa4>
+% \fi^^A meta-comment
+%
+% \subsection{Das \LaTeX-Paket "`\texttt{pfarrei}"'}
+%
+% \iffalse^^A meta-comment
+%<*package>
+% \fi^^A meta-comment
+%
+% \begin{macro}{\ifbooklet}
+%   \changes{r28}{2013/04/01}{neue Anweisung}
+% Wir haben eine Option, die bestimmt, ob wir ein Booklet erzeugen oder
+% nicht. Später wird das schlicht über das Makro \cs{ifbooklet}
+% festgestellt. Falls ein Booklet erzeugt werden soll wird das erste, sonst
+% das zweite Argument ausgeführt.
+%    \begin{macrocode}
+\newcommand*{\ifbooklet}{}
+\let\ifbooklet\@secondoftwo
+\DeclareOption{booklet}{\let\ifbooklet\@firstoftwo}
+\DeclareOption{nobooklet}{\let\ifbooklet\@secondoftwo}
+%    \end{macrocode}
+% \end{macro}
+%
+% Dann werden die Optionen ausgeführt:
+%    \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}[1][\OriginalFile]{%
+  \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
+  \ifbooklet{%
+    \includepdf[pages=-,booklet]{#1}%
+  }{%
+    \includepdf[pages=-,nup=2x1]{#1}%
+  }%
+}
+%    \end{macrocode}
+% \end{macro}^^A \AvToAiv
+%
+% \begin{environment}{bookletpage}
+%   \changes{r28}{2013/04/01}{neue virtuelle Umgebung}
+% Da mehrfach eine Umgebung für einzelne Seiten benötigt wird, definieren wir
+% dafür eine eigene Umgebung, die dann entsprechend individualisiert wird. Es
+% ist zu beachten, dass diese Umgebung nicht als Umgebung aufgerufen werden
+% sollte, sondern direkt \cs{bookletpage} und \cs{endbookletpage}.
+%    \begin{macrocode}
+\newenvironment*{bookletpage}{%
+  \edef\reserved@a{bookletpage}%
+  \ifx\@currenvir\reserved@a
+    \PackageError{pfarrei}{`bookletpage' used as ordinary environment}{%
+      Please note, that `bookletpage' is a virtual environment
+      only.\MessageBreak
+      You should not use it directly as an environment, but use
+      `\string\bookletpage' at the\MessageBreak
+      begin code and `\string\endbookletpage' at the end code of a wrapper
+      environment.\MessageBreak
+      If you'll continue, expect several additional errors%
+    }%
+    \let\bookletpagebox\@tempboxa
+    \let\bookletpagestyle\@empty
+  \else
+    \expandafter\let\expandafter\bookletpagebox
+    \csname \@currenvir box\endcsname
+    \expandafter\let\expandafter\bookletpagestyle
+    \csname \@currenvir style\endcsname
+  \fi
+  \edef\reserved@a{%
+    \noexpand\begin{lrbox}{\bookletpagebox}
+    \noexpand\begin{minipage}[t][\textheight][t]{\textwidth}%
+      \begingroup
+        \def\noexpand\@currenvir{\@currenvir}%
+        \def\noexpand\@currenvline{\@currenvline}%
+        \noexpand\parskip=\the\parskip
+        \noexpand\parindent=\the\parindent
+        \noexpand\parfillskip=\the\parfillskip
+  }\reserved@a
+}{%
+%    \end{macrocode}
+% Das Ende wird in zwei Portionen aufgeteilt:
+%    \begin{macrocode}
+  \endbookletpagebox
+  \printbookletpagebox
+}
+%    \end{macrocode}
+% \begin{macro}{\endbookletpagebox}
+%   \changes{r28}{2013/04/01}{neue (eigentlich interne) Anweisung}
+% das Beenden der Erzeugung der Box für die Seite
+%    \begin{macrocode}
+\def\endbookletpagebox{%
+        \par
+      \endgroup
+    \end{minipage}%
+  \end{lrbox}%
+  \global\setbox\bookletpagebox\box\bookletpagebox
+}
+%    \end{macrocode}
+% \end{macro}
+% \begin{macro}{\printbookletpagebox}
+%   \changes{r28}{2013/04/01}{neue (eigentlich interne) Anweisung}
+% und die Ausgabe der Box, falls ein Booklet erzeugt wird.
+%    \begin{macrocode}
+\newcommand*\printbookletpagebox[1][\@currenvir]{%
+  \ifbooklet{%
+    \@ifundefined{bookletpagestyle}{}{%
+      \ifx\bookletpagestyle\@empty\else\thispagestyle{\bookletpagestyle}\fi%
+    }%
+    \clearpage\noindent\usebox\bookletpagebox\clearpage
+  }{%
+    \PackageInfo{pfarrei}{`#1' not printed}%
+  }%
+}
+%    \end{macrocode}
+% \end{macro}
+% \end{environment}
+%
+%
+% \begin{environment}{bookletfrontpage}
+%   \changes{r26}{2013/03/31}{neue Umgebung}
+% Umgebung, um eine Booklet-Titelseite zu erzeugen.
+% \begin{macro}{\bookletfrontpagebox}
+%   \changes{r26}{2013/03/31}{neue Box}
+% \begin{macro}{\bookletfrontpagestyle}
+%   \changes{r26}{2013/03/31}{neues Makro}
+% Es ist nur eine Seite erlaubt. Also packen wir das ganze in eine Box. Dafür
+% brauchen wir eine solche:
+%    \begin{macrocode}
+\newsavebox\bookletfrontpagebox
+\newcommand*{\bookletfrontpagestyle}{empty}
+\newenvironment*{bookletfrontpage}{%
+  \bookletpage
+}{%
+  \endbookletpagebox
+  \clearpage
+  \ifbooklet{%
+    \ifnum\c@page>\@ne
+      \PackageError{pfarrei}{Booklet front page not first page}{%
+        The booklet font page should be the first page, but it seems, that it
+        is\MessageBreak
+        page no. \the\c@page. \space Maybe you should put it immediately after
+        `\string\begin{document}.%
+        Nevertheless, if you'll continue it will be printed here%
+      }%
+    \fi
+    \printbookletpagebox
+  }{%
+    \PackageInfo{pfarrei}{Booklet front page ignored}%
+  }%
+}
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{environment}
+%
+% \begin{environment}{bookletbackpage}
+%   \changes{r26}{2013/03/31}{neue Umgebung}%^^A
+% \begin{macro}{\bookletbackpagebox}
+%   \changes{r26}{2013/03/31}{neue Box}%^^A
+% \begin{macro}{\bookletbackpagestyle}
+%   \changes{r26}{2013/03/31}{neues Makro}
+% Im Prinzip ist die Booklet-Rückseite fast wie bei der Titelseite,
+% allerdings fügen wir hier so viele Leerseiten ein, dass wir wirklich auf
+% einer durch 4 teilbaren Seite landen.
+% \begin{environment}{bookletemptypage}
+%   \changes{r26}{2013/03/31}{neue Box}%^^A
+% \begin{macro}{\bookletemptypagebox}
+%   \changes{r26}{2013/03/31}{neue Umgebung}%^^A
+% \begin{macro}{\bookletemptypagestyle}
+%   \changes{r26}{2013/03/31}{neues Makro}%^^A
+% Die Umgebung für die konfigurierbare \emph{Leerseite}, besitzt keine eigene
+% Ausgabe, sondern sammelt tatsächlich nur den Inhalt. Die Ausgabe erfolgt
+% dann bei der Ausgabe der Booklet-Rückseite.
+%    \begin{macrocode}
+\newsavebox\bookletemptypagebox
+\newcommand*{\bookletemptypagestyle}{empty}
+\newenvironment*{bookletemptypage}{%
+  \bookletpage
+}{%
+  \endbookletpagebox
+}
+\newsavebox\bookletbackpagebox
+\newcommand*{\bookletbackpagestyle}{empty}
+\newenvironment*{bookletbackpage}{%
+  \bookletpage
+}{%
+  \endbookletpagebox
+  \if@filesw\immediate\write\@mainaux{\string\printbookletbackpage}\fi
+}%
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{environment}
+% \begin{macro}{\printbookletbackpage}
+%   \changes{r26}{2013/03/31}{neue Anweisung}%^^A
+% \begin{macro}{\@printbookletbackpage}
+%   \changes{r26}{2013/03/31}{neue interne Anweisung}%^^A
+% Die eigentliche Ausgabe der letzten Seite geschieht über einen Eintrag in
+% der \texttt{aux}-Datei. Das ist zwar nicht ganz sauber (und
+% \textsf{scrlfile} meckert deshalb ggf.), aber die Standard-Klasse
+% \textsf{letter} macht das ähnlich für die Etiketten. Also hoffen wir
+% einfach, dass es gut geht.
+%    \begin{macrocode}
+\newcommand*{\printbookletbackpage}{}
+\newcommand*{\@printbookletbackpage}{%
+  \ifbooklet{%
+    \clearpage
+    \let\bookletpagestyle\bookletemptypagestyle
+    \ifvoid\bookletemptypagebox
+      \let\bookletpagebox\strutbox
+    \else
+      \let\bookletpagebox\bookletemptypagebox
+    \fi
+    \@tempcnta=\c@page
+    \divide\@tempcnta by 4
+    \multiply\@tempcnta by 4
+    \ifnum \@tempcnta=\c@page\else
+      \advance\@tempcnta by 4
+      \@whilenum \c@page<\@tempcnta\do{%
+        \printbookletpagebox
+      }%
+    \fi
+    \let\bookletpagestyle\bookletbackpagestyle
+    \let\bookletpagebox\bookletbackpagebox
+    \printbookletpagebox
+  }{%
+    \PackageInfo{pfarrei}{Booklet back page ignored}%
+  }%
+}
+%    \end{macrocode}
+% Das Drucken darf während des Lesens der \texttt{aux}-Datei in
+% \cs{begin{document}} nicht erfolgen. Daher definieren wir es erst danach
+% entsprechend um. Dadurch ist es während des Lesens der \texttt{aux}-Datei in
+% \cs{end{document}} funktionsfähig.
+%    \begin{macrocode}
+\AtBeginDocument{\let\printbookletbackpage\@printbookletbackpage}
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{environment}
+%
+%
+% \begin{macro}{\makebooklettitlepage}
+%   \changes{r26}{2013/03/31}{neue Anweisung}%^^A
+% \begin{macro}{\motto}
+%   \changes{r26}{2013/03/31}{neue Anweisung}%^^A
+% \begin{macro}{\@motto}
+%   \changes{r26}{2013/03/31}{neues internes Makro}%^^A
+% \begin{macro}{\titlepicture}
+%   \changes{r26}{2013/03/31}{neue Anweisung}%^^A
+% \begin{macro}{\@titlepicture}
+%   \changes{r26}{2013/03/31}{neues internes Makro}%^^A
+% \begin{macro}{\title}
+%   \changes{r26}{2013/03/31}{neue Anweisung}%^^A
+% \begin{macro}{\@title}
+%   \changes{r26}{2013/03/31}{neues internes Makro}%^^A
+% \begin{macro}{\parish}
+%   \changes{r26}{2013/03/31}{neue Anweisung}%^^A
+% \begin{macro}{\@parish}
+%   \changes{r26}{2013/03/31}{neues internes Makro}%^^A
+% \begin{macro}{\date}
+%   \changes{r26}{2013/03/31}{neue Anweisung}%^^A
+% \begin{macro}{\@date}
+%   \changes{r26}{2013/03/31}{neues internes Makro}%^^A
+% Der Standard-Titel für Booklets besteht aus einem Motto, einem Bild, einem
+% Titel, der Gemeinde und dem Datum. Wir gehen davon aus, dass die
+% Klasse bereits \cs{date}, \cs{@date}, \cs{title} und \cs{@title} zur
+% Verfügung stellt. Allerdings ergibt die Voreinstellung \cs{today} für das
+% Datum hier wenig Sinn, weshalb die Voreinstellung in einen leeren Wert
+% geändert wird. Den Rest machen wir komplett selbst:
+%    \begin{macrocode}
+\newcommand*{\motto}[1]{\gdef\@motto{#1}}
+\newcommand*{\@motto}{}
+\newcommand*{\titlepicture}[1]{\gdef\@titlepicture{#1}}
+\newcommand*{\@titlepicture}{}
+\providecommand*{\title}[1]{\gdef\@title{#1}}
+\providecommand*{\@title}{}
+\newcommand*{\parish}[1]{\gdef\@parish{#1}}
+\newcommand*{\@parish}{}
+\providecommand*{\date}[1]{\gdef\@date{#1}}
+\def\@date{}
+\newcommand*{\makebooklettitlepage}{%
+  \begin{bookletfrontpage}
+    \parskip.5\baselineskip
+    \parindent\z@
+    \parfillskip \z@ \@plus 1fil
+    \centering
+    \ifx\@motto\@empty\else{\Huge\@motto\par}\fi
+    \vfill
+    \ifx\@titlepicture\@empty\else\@titlepicture\par\fi
+    \vfill
+    \parskip\z@
+    \Huge
+    \@title\par
+    \@parish\par
+    \@date\par
+    \ifx\@title\@empty\ifx\@parish\@empty\ifx\@date\@empty\null\fi\fi\fi
+  \end{bookletfrontpage}
+}
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+%
+% \begin{environment}{samedoublepage}
+%   \changes{r28}{2013/03/31}{neue Umgebung}%^^A
+% \begin{macro}{\samedoublepage@save@hbox}
+%   \changes{r28}{2013/03/31}{neues internes Makro}%^^A
+% Es wird etwas umständlich eine vertikale Box gespeichert,
+%    \begin{macrocode}
+\let\samedoublepage@save@hbox\hbox
+\newenvironment*{samedoublepage}{%
+  \par
+  \let\hbox\vbox
+  \begin{lrbox}{\@tempboxa}%
+    \let\hbox\samedoublepage@save@hbox
+}{%
+  \end{lrbox}%
+  \let\hbox\samedoublepage@save@hbox
+%    \end{macrocode}
+% um diese dann in Stücke zu zerschneiden, die auf eine Seite passen,
+%    \begin{macrocode}
+  \@tempdima\ifdim\pagegoal=\maxdimen\textheight
+            \else\dimexpr\pagegoal-\pagetotal\fi
+  \ifdim \@tempdima 
+        <\dimexpr\ht\@tempboxa+\dp\@tempboxa\relax
+    \ifodd\c@page
+%    \end{macrocode}
+% Wobei aber nicht auf ungeraden Seiten mit nur einem Stück des Kuchens
+% begonnen wird.
+%    \begin{macrocode}
+      \newpage
+      \@tempdima\textheight
+    \else \typeout{even page}%
+    \fi
+    \@whiledim \@tempdima
+              <\dimexpr\ht\@tempboxa+\dp\@tempboxa\relax\do{%
+      \splitmaxdepth\dp\strutbox
+      \splittopskip\topskip
+      \setbox\z@\vsplit\@tempboxa to \@tempdima
+      \usebox\z@
+      \newpage
+      \@tempdima\textheight
+    }%
+  \fi
+%    \end{macrocode}
+% Und am Ende nicht vergessen, den Rest der Box auch noch auszugeben.
+%    \begin{macrocode}
+  \ifvoid\@tempboxa\else\usebox\@tempboxa\fi
+}
+%    \end{macrocode}
+% \end{macro}
+% \end{environment}
+%
+% \begin{environment}{prayer}
+%   \changes{r28}{2013/04/01}{neue Umgebung}
+% \begin{macro}{\setupprayer}
+%   \changes{r28}{2013/04/01}{neue Anweisung}
+% Die Gebetsumgebung wird mit Hilfe von \textsf{keyval} definiert. Sie kann
+% außer mit dem optionalen Argument auch jederzeit mit \cs{setupprayer}
+% konfiguriert werden.
+% \begin{macro}{\prayer@responder}
+%   \changes{r28}{2013/04/01}{neues internes Makro}
+% \begin{macro}{\prayer@response}
+%   \changes{r28}{2013/04/01}{neues internes Makro}
+% \begin{macro}{\prayer@leader}
+%   \changes{r28}{2013/04/01}{neues internes Makro}
+% Dafür werden mehrere interne Makros benötigt, um die gewünschten Werte
+% aufzunehmen.
+%    \begin{macrocode}
+\RequirePackage{keyval}
+\define@key{pfarrei.prayer}{response}{\def\prayer@response{#1}}
+\define@key{pfarrei.prayer}{responder}{\def\prayer@responder{#1:}}
+\define@key{pfarrei.prayer}{leader}{\def\prayer@leader{#1:}}
+\newcommand*{\prayer@responder}{}
+\newcommand*{\prayer@response}{}
+\newcommand*{\prayer@leader}{}
+\newcommand*{\setupprayer}{%
+  \setkeys{pfarrei.prayer}%
+}
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\ifprayer@firstitem}
+%   \changes{r28}{2013/04/01}{neuer interner Schalter}
+% \begin{macro}{prayer@response@item}
+%   \changes{r28}{2013/04/01}{neue interne Anweisung}
+% Da die Antwort beim ersten \cs{item} noch nicht ausgegeben werden darf,
+% sondern nur nach den nachfolgenden, muss die Information, ob es das erste
+% \cs{item} ist, über einen Schalter gespeichert werden.
+%    \begin{macrocode}
+\newif\ifprayer@firstitem
+\newcommand*{\prayer@response@item}{%
+  \ifprayer@firstitem\else
+    \ifx\prayer@responder\@empty\else
+      \ifx\prayer@response\@empty\else
+        \prayer@save@item[\prayer@responder] \prayer@response
+      \fi
+    \fi
+  \fi
+}
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\prayer@item}
+%   \changes{r28}{2013/04/01}{neue interne Anweisung}
+% \begin{macro}{\prayer@save@item}
+%   \changes{r28}{2013/04/01}{neue interne Anweisung}
+% Die \cs{item}-Anweisung von \texttt{prayer} ist etwas anders als von anderen
+% Listen-Umgebungen. Sie baut jedoch auf der Originaldefinition auf. Daher
+% muss die Originaldefinition gespeichert und entsprechend erweitert verwendet
+% werden.
+%    \begin{macrocode}
+\newcommand*{\prayer@item}[1][\prayer@leader]{%
+  \prayer@response@item
+  \prayer@firstitemfalse
+  \prayer@save@item[{#1}]%
+}
+%    \end{macrocode}
+% \begin{macro}{\noresponder}
+%   \changes{r28}{2013/04/01}{neue Anweisung}
+% Das Abschalten der nächsten automatischen Antwort geschieht einfach, indem
+% so getan wird, als wäre das nächste \cs{item} wieder das erste.
+%    \begin{macrocode}
+\newenvironment*{prayer}[1][]{%
+  \begin{description}
+    \begingroup
+      \def\@currenvir{prayer}%
+      \setupprayer{#1}%
+      \let\prayer@save@item\item
+      \let\item\prayer@item
+      \prayer@firstitemtrue
+      \let\noresponder\prayer@firstitemtrue
+}{%
+      \prayer@response@item
+    \endgroup
+  \end{description}
+}
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{environment}
+%
+% 
+% \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 36 2013-10-16 18:54:26Z mjk $
+
+kpse.set_program_name(arg[-1], 'a5toa4')
+require('pfarrei.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: 36 $', 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',
+   ['-d']           = 'debug',
+   ['--debug']      = 'debug',
+}
+
+-- 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
+local debug = 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 == 'debug' then debug = 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("\\PassOptionsToPackage{booklet}{pfarrei}\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()
+      if debug
+      then
+         print('DEBUG: Temporary files in: '..tmpdir);
+      else
+         tmpfile=tmpdir..'/'..basename
+         os.remove( tmpfile..'.aux' )
+         os.remove( tmpfile..'.tex' )
+         os.remove( tmpfile..'.log' )
+         os.remove( tmpfile..'.pdf' )
+         os.remove( tmpdir )
+      end
+      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
+%%% TeX-PDF-mode: t
+%%% mode: flyspell
+%%% ispell-local-dictionary: "de_DE"
+%%% TeX-master: t
+%%% End:
+
-- 
cgit v1.2.3

