From 09fd9c9121cefeb7ebe015102a51a796e2d8a314 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Tue, 9 Apr 2013 16:54:30 +0000 Subject: pfarrei (8apr13) git-svn-id: svn://tug.org/texlive/trunk@29796 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/source/latex/pfarrei/README | 18 +- Master/texmf-dist/source/latex/pfarrei/pfarrei.dtx | 746 ++++++++++++++++++--- 2 files changed, 667 insertions(+), 97 deletions(-) (limited to 'Master/texmf-dist/source/latex/pfarrei') diff --git a/Master/texmf-dist/source/latex/pfarrei/README b/Master/texmf-dist/source/latex/pfarrei/README index bcc6833233e..1260da14c27 100644 --- a/Master/texmf-dist/source/latex/pfarrei/README +++ b/Master/texmf-dist/source/latex/pfarrei/README @@ -1,22 +1,22 @@ -$Id: README 19 2013-03-10 14:15:48Z mjk $ +$Id: README 31 2013-04-02 09:26:09Z mjk $ ============================================================================ -pfarrei - A bundle of executables, LaTeX documents and packages for priests +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/2004 Christian Justen told - about his practise using LaTeX at his work as priest. One +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' should help there too, but currently - this hasn't been implemented due to the early implementation - state of the bundle. -Requires: LaTeX2e, ifpdf, pdfpages + 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, @@ -42,6 +42,6 @@ Special installation note: 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 - `a5toa4.tlu' to the binary directory of the TeX distribution + the binary to the binary directory of the TeX distribution as described above. ============================================================================ diff --git a/Master/texmf-dist/source/latex/pfarrei/pfarrei.dtx b/Master/texmf-dist/source/latex/pfarrei/pfarrei.dtx index a1deca6de9d..8c2e2c1375e 100644 --- a/Master/texmf-dist/source/latex/pfarrei/pfarrei.dtx +++ b/Master/texmf-dist/source/latex/pfarrei/pfarrei.dtx @@ -1,4 +1,4 @@ -% \CheckSum{36} +% \CheckSum{464} % \iffalse^^A meta-comment % ====================================================================== % pfarrei.dtx @@ -72,10 +72,10 @@ \begingroup \def\revisiondate$#1: #2-#3-#4 #5${% \gdef\pfarreirevisiondate{#2/#3/#4}% - }\revisiondate$Date: 2013-03-10 15:19:06 +0100 (So, 10 Mär 2013) $ + }\revisiondate$Date: 2013-04-08 09:22:56 +0200 (Mo, 08. Apr 2013) $ \def\revision$#1: #2 #3${% \gdef\pfarreirevision{#2}% - }\revision$Revision: 20 $ + }\revision$Revision: 33 $ \endgroup %<*dtx> \def\LaTeXformat{LaTeX2e} @@ -88,8 +88,8 @@ % %\ProvidesPackage{pfarrei.sty} %\ProvidesFile{a5toa4.tex} - [\pfarreirevisiondate\space r\pfarreirevision LaTeX2e package - (for priests)] + [\pfarreirevisiondate\space r\pfarreirevision\space LaTeX2e package + (for pastors)] % %<*driver> \documentclass{ltxdoc} @@ -97,6 +97,13 @@ \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} @@ -104,11 +111,14 @@ \title{Das Pfarrei-Paket\footnote{% \protect\foreignlanguage{english}{Sorry if you don't understand German, but currently there's only a German manual, because the idea of this is - from a German article at ``Die \TeX nische Komödie''. But you may try to - call ``\texttt{a5toa4 --help}'' to get some useful information.% + 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} \author{Markus Kohm} +} +\date{\filedate\footnote{Version \fileversion}} +\author{Markus Kohm\footnote{komascript at gmx info}} \maketitle \DocInput{pfarrei.dtx} \PrintChanges @@ -221,13 +231,18 @@ the file `pfarrei.dtx'. % \begin{abstract} % In "`Die \TeX nische Kömdie"', Ausgabe 1/2013 hat Christian Justen über % seinen Einsatz von \LaTeX{} im Pfarrdienst berichtet. Einige der von ihm -% verwendeten bash-Scripte und seine Schilderungen dazu haben mich dazu +% verwendeten bash-Scripte und seine Schilderungen dazu haben mich % inspiriert, eine Sammlung zu beginnen, die entsprechende Dinge leisten. -% Allerdings habe ich mich dazu entschlossen, keine bash-Script zu -% verwenden, sondern die Funktionalität derselben in lua-Scripte für die -% Ausführung mit texlua zu realisieren, da texlua inzwischen Bestandteil -% aller \TeX-Distributionen ist. Somit wurde das ganze besser vom -% Betriebssystem unabhängig. +% 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 @@ -235,9 +250,9 @@ the file `pfarrei.dtx'. % \section{Die Skripte-Seite} % \label{sec:skripte} % -% In besagtem Artikel wurden zwei Skripte, "`a5toa4"' und "`a5toa4bogen"' -% vorgestellt. Beide erzeugen aus PDF-Dateien, die im A5-Format vorliegen, -% neue PDF-Dateien im A4-quer-Format. +% 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 @@ -251,25 +266,28 @@ the file `pfarrei.dtx'. % erhalten. Daher wird für diese Ausgabe im Weiteren die Bezeichnung % \emph{booklet} verwendet. % -% Ich dacht mir, das könne man in ein einziges Programm gießen. Dieses heißt -% bei mir dann schlicht "`a5toa4.tlu"' bzw. bei optimaler Installation kann es -% zumindest unter Linux und OSX auch als "`a5toa4"' angesprochen werden. +% \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 man das Programm mit der Option "`\texttt{-V}"' oder -% "`\texttt{--version}"' auf, so gibt es lediglich eine Versionsinformation -% aus. +% 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 Aufruf mit Option "`\texttt{-h}"' oder "`\texttt{--help}"' wird -% hingegen eine ausführliche Hilfe zu den Aufrufmöglichkeiten und den Optionen -% ausgegeben. +% 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 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 +% 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. +% "`\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 @@ -286,11 +304,14 @@ the file `pfarrei.dtx'. % wurde, entweder um "`\texttt{-booklet.pdf}"' oder % "`\texttt{-sidebyside.pdf}"' ergänzt. Auch dies ist eine Abweichung von % Christian Justens Original-Skripten, bei denen immer die Ursprungsdatei vom -% Ergebnis überschrieben wurde. Dieses Verhalten ist aber ebenfalls zu -% erreichen, indem man Option "`\texttt{-o}"' oder "`\texttt{--overwrite}"' -% angibt. Nach erfolgreichem PDF\LaTeX-Lauf und dem Kopieren des Ergebnisses -% ins aktuelle Arbeitsverzeichnis, wird das temporäre Verzeichnis samt Inhalt -% wieder gelöscht. +% 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 @@ -311,13 +332,12 @@ the file `pfarrei.dtx'. % die Ursprungsdatei überschrieben werden, so ist vor jeder dieser Dateien die % Option erneut zu setzen. % -% Tatsächlich ist "`\texttt{a5toa4.tlu}"' aber nur ein Wrapper für +% 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. Unter Windows muss man allerdings erst -% einmal dafür sorgen, dass das Skript als Binary aufgerufen -% wird.\footnote{Hierfür wird noch ein Windows-Batch-Jongleur gesucht.} +% \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} @@ -330,58 +350,161 @@ the file `pfarrei.dtx'. % ins A5-Format gebracht, bevor sie auf der A4-quer-Seite platziert werden. % % -% \subsection*{Zusammenfassung} +% \subsection*{Zusammenfassung\marginpar{\raggedleft\texttt{a5toa4}}} % -% Um aus einem Quell-PDF "`\texttt{foo.pdf}"' ein Ziel-PDF -% "`\texttt{foo-sidebyside.pdf}"' zu erzeugen, bei dem die Seiten des -% Quell-PDF aufeinander folgend, nebeneinander auf einer A4-quer-Seite -% platziert sind, verwendet man: +% 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 aus einem Quell-PDF "`\texttt{foo.pdf}"' ein Ziel-PDF -% "`\texttt{foo-sidebyside.pdf}"' zu erzeugen, bei dem die Seiten des -% Quell-PDF so auf einer A4-quer-Seite platziert sind, dass durch Falten in -% der Mitte ein Heft entsteht, verwendet man: +% 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 die Ziel-PDF hingegen die Quell-PDF überschreiben, so gibt vor dem -% Dateinamen zusätzlich Option "`\texttt{-o}"' an. % -% Informationen über die verwendete Version von "`\texttt{a5toa4}"' erhält man -% mit: +% 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 --version +% a5toa4 -V % \end{verbatim}\unskip % -% Eine Hilfe zum Programm erhält man mit: +% Eine\marginpar{\raggedleft\texttt{-h}} Hilfe zum Programm erhält man mit: % \begin{verbatim} -% a5toa4 --help +% a5toa4 -h % \end{verbatim} % % % \section{Die \LaTeX-Seite} % \label{sec:latex} % -% Die \LaTeX-Seite zu den Skripten aus Abschnitt~\ref{sec:skripte} besteht -% zunächst einmal aus dem \LaTeX-Dokument "`\texttt{a5ona4.tex}"'. Dieses +% 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. Derzeit gibt es fast nur eine Anweisung -% \cs{AvToAiv}. Diese erledigt die Hauptarbeit, wobei die erwartet, dass die -% Original-PDF-Datei, die verarbeitet werden soll, im Makro \cs{OriginalFile} -% abgelegt ist. Das Skript sorgt dafür, dass dies geschieht. Darüber hinaus -% fällt die Entscheidung, ob eine booklet- oder eine side-by-side-Ausgabe -% erfolgen soll, schlicht über die Frage, ob das Makro \cs{Booklet} für -% \LaTeX{} definiert ist oder nicht. -% -% Eine weitere Funktionalität stellt "`\texttt{pfarrei}.sty"' derzeit noch -% nicht bereit. Hier sollen allerdings in naher Zukunft einige Dinge -% implementiert werden, die Christian Justen in seinem Artikel ebenfalls -% erwähnt hat. +% 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{} % @@ -409,7 +532,9 @@ the file `pfarrei.dtx'. \AvToAiv \end{document} % \end{macrocode} -% Das war es schon. +% 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 % @@ -421,7 +546,21 @@ the file `pfarrei.dtx'. %<*package> % \fi^^A meta-comment % -% Als erstes werden die Optionen ausgeführt (obwohl es noch keine gibt): +% \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} @@ -430,11 +569,13 @@ the file `pfarrei.dtx'. \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}{% +\newcommand*{\AvToAiv}[1][\OriginalFile]{% \ifpdf\else \PackageError{pfarrei}{PDF mode needed}{% a5toa4 needs the direct PDF mode.\MessageBreak @@ -443,15 +584,434 @@ the file `pfarrei.dtx'. }% \input{x.tex} \fi - \@ifundefined{Booklet}{% - \includepdf[pages=-,nup=2x1]{\OriginalFile}% + \ifbooklet{% + \includepdf[pages=-,booklet]{#1}% }{% - \includepdf[pages=-,booklet]{\OriginalFile}% + \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 + \showthe\dimexpr\ht\z@+\dp\z@\relax + \showthe\@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 @@ -473,10 +1033,10 @@ the file `pfarrei.dtx'. %<*a5toa4> % \fi^^A meta-comment % \begin{macrocode} --- $Id: pfarrei.dtx 20 2013-03-10 14:19:06Z mjk $ +-- $Id: pfarrei.dtx 33 2013-04-08 07:22:56Z mjk $ kpse.set_program_name(arg[-1], 'a5toa4') -require('pfarrei') +require('pfarrei.pfarrei') % \end{macrocode} % \iffalse^^A meta-comment % @@ -488,7 +1048,7 @@ require('pfarrei') %<*pfarrei> % \fi^^A meta-comment % \begin{macrocode} -local version_number = string.sub( '$Revision: 20 $', 12, -2 ) +local version_number = string.sub( '$Revision: 33 $', 12, -2 ) local action_version = ' r' .. version_number .. '\n' .. [[ Copyright (c) 2013 Markus Kohm. @@ -522,7 +1082,9 @@ local processing_opts = { ['-s'] = 'sidebyside', ['--sidebyside'] = 'sidebyside', ['-o'] = 'overwrite', - ['--overwrite'] = 'overwrite' + ['--overwrite'] = 'overwrite', + ['-d'] = 'debug', + ['--debug'] = 'debug', } -- detect action options and do action @@ -546,12 +1108,14 @@ 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" ) @@ -559,7 +1123,7 @@ while arg[i] do local basename = string.match( tmpfile,'(.*)%.[^.]*$') or tmpfile tmpfile = tmpdir..'/'..basename..'.tex' local file = assert( io.open( tmpfile, 'w' ) ) - if booklet then assert( file:write("\\def\\Booklet{}\n") ) end + 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() ) @@ -589,12 +1153,17 @@ while arg[i] do end assert( destfile:close() ) srcfile:close() - tmpfile=tmpdir..'/'..basename - os.remove( tmpfile..'.aux' ) - os.remove( tmpfile..'.tex' ) - os.remove( tmpfile..'.log' ) - os.remove( tmpfile..'.pdf' ) - os.remove( tmpdir ) + 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 @@ -616,6 +1185,7 @@ end % %%% Local Variables: %%% mode: doctex +%%% TeX-PDF-mode: t %%% mode: flyspell %%% ispell-local-dictionary: "de_DE" %%% TeX-master: t -- cgit v1.2.3