summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/pfarrei
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/pfarrei
Initial commit
Diffstat (limited to 'macros/latex/contrib/pfarrei')
-rw-r--r--macros/latex/contrib/pfarrei/README63
-rw-r--r--macros/latex/contrib/pfarrei/pfarrei.dtx1194
-rw-r--r--macros/latex/contrib/pfarrei/pfarrei.pdfbin0 -> 500246 bytes
3 files changed, 1257 insertions, 0 deletions
diff --git a/macros/latex/contrib/pfarrei/README b/macros/latex/contrib/pfarrei/README
new file mode 100644
index 0000000000..267356c694
--- /dev/null
+++ b/macros/latex/contrib/pfarrei/README
@@ -0,0 +1,63 @@
+$Id: README 36 2013-10-16 18:54:26Z mjk $
+============================================================================
+pfarrei - A bundle of executables, LaTeX documents and packages for pastors
+----------------------------------------------------------------------------
+Maintainer: Markus Kohm
+E-Mail: komascript at gmx info
+Abstract: In "Die TeXnische Komödie" 1/2013 Christian Justen told
+ about his practise using LaTeX at his work as pastor. One
+ point was to arrange A5 papers onto A4 landscape paper
+ either side-by-side or as a booklet. He made two bash
+ scripts for this. `pfarrei' provides one texlua script for
+ the same.
+ Other points would be, e.g, special limitations of the
+ page break. `pfarrei' provides LaTeX commands and
+ environments to help for that too.
+Requires: LaTeX2e, ifpdf, pdfpages, TeXLua
+License: LPPL 1.3c or later
+State: Maintained
+Topics: compact output, typically multiple pages/sheet
+----------------------------------------------------------------------------
+Special installation note:
+ To extract all the files just call `tex pfarrei.dtx'. Note,
+ that you have to use tex NOT latex or pdflatex!
+ The manual may be done using `pdflatex pfarrei.dtx' two
+ times.
+
+ After this, you should copy the files like this into a valid
+ TEXMF tree (aka TDS tree):
+ a5toa4.tlu --> scripts/pfarrei/a5toa5.tlu
+ pfarrei.tlu --> scripts/pfarrei/pfarrei.tlu
+ a5toa4.tex --> tex/latex/pfarrei/a5toa4.tex
+ pfarrei.sty --> tex/latex/pfarrei/pfarrei.sty
+ pfarrei.pdf --> doc/latex/pfarrei/pfarrei.pdf
+ README --> source/latex/pfarrei/README
+ pfarrei.dtx --> source/latex/pfarrei/pfarrei.dtx
+
+ Users, that do not use Windows, should also copy a5toa4.tlu
+ to the binary directory of their TeX distribution and rename
+ that copy into a5toa4 (without extension).
+
+ Windows users using TeX Live, should make a copy
+ of runscript.exe with the name a5toa4.exe in the binary
+ directory of their TeX distribution.
+
+ Windows users using MiKTeX <= 2.9 should remove
+ scripts/pfarrei/a5toa4.tlu and rename
+ scripts/pfarrei/pfarrei.tlu -->
+ scripts/pfarrei/a5toa4.tlu
+ because MiKTeX <= 2.9 uses an outdated texlua, that does not
+ search for modules correctly.
+
+ Wndows users using MiKTeX should also copy
+ ...\MiKTeX\miktex\bin\internal\runtexlua.exe -->
+ ...\MiKTeX\miktex\bin\a5toa4.exe
+ and start the MiKTeX Package Manager to install package
+ miktex-cairo-bin-2.9, if not already installed.
+
+ Please note, that there's also a TDS distribution of
+ `pfarrei' that may be installed simply by extraction of
+ `pfarrei.tds.zip' at a TEXMF tree and additionally copying
+ the binary to the binary directory of the TeX distribution
+ as described above.
+============================================================================
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:
+
diff --git a/macros/latex/contrib/pfarrei/pfarrei.pdf b/macros/latex/contrib/pfarrei/pfarrei.pdf
new file mode 100644
index 0000000000..c14311d9a4
--- /dev/null
+++ b/macros/latex/contrib/pfarrei/pfarrei.pdf
Binary files differ