% \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 `unmaintained'.
%
% This package is currently unmaintained.
%
% 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 `unmaintained' (verwaltet).
%
% 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: 2023-11-22 20:54:26 +0200 (Mi, 22. Nov 2023) $
\def\revision$#1: #2 #3${%
\gdef\pfarreirevision{#2}%
}\revision$Revision: 37 $
\endgroup
%<*dtx>
\def\LaTeXformat{LaTeX2e}
\ifx\fmtname\LaTeXformat
\makeatletter
\let\saved@@end\@@end
\def\@@end{\csname fi\endcsname\saved@@end}
\makeatother
\ProvidesFile{pfarrei.dtx}
%
%\ProvidesPackage{pfarrei}
%\ProvidesFile{a5toa4.tex}
[\pfarreirevisiondate\space r\pfarreirevision\space LaTeX2e package
(for pastors)]
%
%<*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}
%
%<*dtx>
\fi
%
%<*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
for additional
information.
This work has the LPPL maintenance status `unmaintained'.
This package is currently unmaintained.
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{+-------------------------------------------------------------------}
}
%
%<*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
%
% \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
%
% \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
%
% \fi^^A meta-comment
%
%
% \iffalse^^A meta-comment
%
% \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 37 2023-11-22 18:54:26Z ps $
kpse.set_program_name(arg[-1], 'a5toa4')
require('pfarrei.pfarrei')
% \end{macrocode}
% \iffalse^^A meta-comment
%
% \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: 37 $', 12, -2 )
local action_version = ' r' .. version_number .. '\n' .. [[
Copyright (c) 2013 Markus Kohm.
License: lppl 1.3c or later. See .
]]
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 instead of appending
"-sidebyside.pdf" or "--booklet.pdf" to the basename
of
]]
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] .. ' ' )
print( ' ' .. arg[0] .. ' [] ...\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]
-- pdflatex's -output-directory search for source pdf works with path specification but fails
-- when simple file name in the current working directory is provided, we need to provide '../' then
local local_source=''
if tmpfile == arg[i] then local_source = '../' end
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{"..local_source,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
%
% \fi^^A meta-comment
%
% \iffalse^^A meta-comment
%
% \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: