Da ich immer wieder gefragt werde, wie man KOMA-Script materiell unterstützen oder man mir eine Freude machen kann, habe ich dazu eine Erklärung verfasst. Darin geht es um Hardware, Geld, Windows-Lizenzen und den Eintrag in die Sponsorenliste.
scrpage2 ist eines der Pakete, die noch nicht die Entwicklung des KOMA-Script-Kerns erreicht haben. Das bedeutet nicht nur, dass es noch keine \KOMAoptions-Schnittstelle hat. Es bedeutet auch, dass es nicht auf Optionenänderungen nach dem Laden eingerichtet ist. Bezüglich ein- oder doppelseitige betrifft dies allerdings vermutlich nur noch ein oder zwei Stellen. Das könnte ich also eventuell bis zur nächsten Release ändern, obwohl scrpage2 eigentlich keine neuen Features mehr erhalten soll (ich entwerfe schon seit fast zwei Jahren ein Nachfolgepaket).
Allerdings betrifft das dann trotzdem nur Seitenstile, die nach der Optionenänderung definiert werden. Seitenstile so zu definieren, dass man doppelseitige Seitenstile bei einseitiger Einstellung definieren könnte, würde eine tiefgreifende Änderung in scrpage2 bedeuten. Hier würde auf Anwenderebene eher helfen, die entsprechende Definition in eine eigene Datei oder ein eigenes Makro auszulagern und dann nach der Umschaltung nochmals diese Datei einzulesen oder dieses Makro auszuführen. Derzeit genügt auch das nicht, weil beispielsweise \defpagestyle (und darauf basiert jeder mit scrpage2 definierte Seitenstil auch scrheadings und scrempty) bereits beim Laden des Pakets in Abhängigkeit von ein- oder doppelseitig unterschiedlich definiert wird.
Ich verstehe allerdings nicht, warum Du nicht einfach twoside=semi als Option bei \documentclass angeben kannst. Selbst wenn Du eine Wrapper-Klasse um scrlttr2 basteln solltest, dürfte das doch möglich sein.
BTW: Bitte den Hinweis: »Bitte auch daran denken, die Ausgabe des eigenen Beitrags noch einmal zu kontrollieren und ggf. unter Zuhilfenahme der Formatierhinweise zu korrigieren.« beachten und wie in den (auch an vielen anderen Stellen verlinkten) Formatierhinweisen angegeben den <code>-Tag (wahlweise auch mit eckigen Klammern) verwenden!
Das ganze hat mir keine Ruhe gelassen. Zwar war der Aufwand tatsächlich recht hoch, aber ich habe nun tatsächlich diverse Änderungen an scrpage2 vorgenommen. Damit sollte die twoside-Abhängigkeit von scrpage2 von einer Ladezeit-Abhängigkeit zu einer Laufzeit-Abhängigkeit geworden sein. Bei dem Beispiel macht es dann tatsächlich auch keinen Unterschied mehr, welche Variante man verwendet. Wenn Du willst kann ich Dir eine Beta-Version dieser scrpage2-Version per Mail schicken, damit Du testen kannst, ob dieses Problem damit gelöst ist.
BTW: Es sei ausdrücklich darauf hingewiesen, dass sich scrpage2 bei der typearea-Einstellung twoside=semi genau wie bei twoside=true verhält. scrpage2 selbst wertet diese Einstellung nicht aus, sondern kennt – wie alle derartigen Pakete – nur den Schalter \if@twoside des LaTeX-Kerns. Das wird nicht als Bug, sondern als Feature betrachtet!
Ich habe hier das gesamte Problem noch einmal veranschaulicht.
Das folgende Min.-Bsp. ist nicht wirklich minimal. Aber kürzer geht's
wohl nicht, um mein Problem zu verdeutlichen.
Die Aufgabenstellung lautet, eine Möglichkeit zu schaffen, an Briefe
PDF-Anlagen anzuhängen. Dabei soll auch beim Duplex-Ausdruck jeder
Anhang auf einem neuen Blatt beginnen, also auf einer ungeradzahligen
Seite. Die hierzu gegebenenfalls einzufügenden Leerseiten sollen aber
beim Ermitteln der Anzahl der Seiten eines Dokuments nicht mitgezählt
werden.
Das Problem, welches ich nicht in den Griff bekomme, ist, dass auf
geradzahligen Seiten des Briefs nicht die vorgegebene Kopfzeile
erscheint. Lasse ich hingegen die KOMA-Option twoside=semi weg, habe ich
zwar auf allen Seiten des Briefs - mit Ausnahme der Titelseite natürlich
- meine Kopfzeile, aber dann funktioniert der Automatismus nicht, dass
jede Anlage auf einem neuen Blatt beginnt.
Was muss verändert werden, damit die Kopfzeile auf allen Seiten des
Briefs erscheint und der Leerseiten-Automatismus trotzdem funktioniert?
Besten Dank im Voraus fürs Mitknobeln!
Gruß. Friedrich
[Moderator-Edit: Alles bis auf die Dateiliste gelöscht ...]
*File List*
scrlttr2.cls 2010/02/15 v3.05 KOMA-Script document class (letter)
scrkbase.sty 2010/02/15 v3.05 KOMA-Script package (KOMA-Script-dependent basics and keyval usage)
scrbase.sty 2010/02/15 v3.05 KOMA-Script package (KOMA-Script-independent basics and keyval usage)
keyval.sty 1999/03/16 v1.13 key=value parser (DPC)
scrlfile.sty 2009/03/25 v3.03 KOMA-Script package (loading files)
scrsize12pt.clo 2010/02/15 v3.05 KOMA-Script font size class option (12pt)
typearea.sty 2010/02/15 v3.05 KOMA-Script package (type area)
DIN.lco 2010/02/15 v3.05 KOMA-Script letter-class-option
scrpage2.sty 2010/04/22 v2.5 BETA LaTeX2e KOMA-Script package
pdfpages.sty 2006/08/12 v0.4a Insert pages of external PDF documents (AM)
ifthen.sty 2001/05/26 v1.1c Standard LaTeX ifthen package (DPC)
graphicx.sty 1999/02/16 v1.0f Enhanced LaTeX Graphics (DPC,SPQR)
graphics.sty 2009/02/05 v1.0o Standard LaTeX Graphics (DPC,SPQR)
trig.sty 1999/03/16 v1.09 sin cos tan (DPC)
graphics.cfg 2009/08/28 v1.8 graphics configuration of TeX Live
pdftex.def 2010/02/14 v0.04n Graphics/color for pdfTeX
calc.sty 2007/08/22 v4.3 Infix arithmetic (KKT,FJ)
eso-pic.sty 2009/10/07 v2.0a eso-pic (RN)
atbegshi.sty 2010/03/25 v1.12 At begin shipout hook (HO)
infwarerr.sty 2010/04/08 v1.3 Providing info/warning/message (HO)
ltxcmds.sty 2010/04/16 v1.6 LaTeX kernel commands for general use (HO)
ifpdf.sty 2010/01/28 v2.1 Provides the ifpdf switch (HO)
xcolor.sty 2007/01/21 v2.11 LaTeX color extensions (UK)
color.cfg 2007/01/18 v1.5 color configuration of teTeX/TeXLive
pppdftex.def 2006/08/12 v0.4a Pdfpages driver for pdfTeX (AM)
zref-abspage.sty 2010/04/23 v2.15 Module abspage for zref (HO)
zref-base.sty 2010/04/23 v2.15 Module base for zref (HO)
kvsetkeys.sty 2010/03/01 v1.9 Key value parser (HO)
etexcmds.sty 2010/01/28 v1.3 Prefix for e-TeX command names (HO)
auxhook.sty 2009/12/14 v1.2 Hooks for auxiliary files (HO)
supp-pdf.mkii
EB1.pdf Graphic file (type pdf)
EB1.pdf Graphic file (type pdf)
***********
Bitte den letzten Absatz meines ersten Kommentars unbedingt beachten! Wenn die Log-Datei keinen Fehler enthält, solltest Du die außerdem weglassen und Dich ggf. auf die Dateiliste beschränken.
! Package pdfpages Error: Cannot find file `EB1'.
See the pdfpages package documentation for explanation.
Type H for immediate help.
...
l.107 \end{letter}
! Undefined control sequence.
\AM@checklast ...pii \\ \@tempcntb =\AM@pagecount
\relax \ifAM@DVIoutput \if...
l.107 \end{letter}
! Missing number, treated as zero.
\relax
l.107 \end{letter}
)
Runaway argument?
\expandafter \AM@setphantomdoc \AM@doclist ,\END \ifthenelse {\boolean \ETC.
! File ended while scanning use of \AM@gobble.
\par
\input testscrlttr2scrpage2.tex
! Emergency stop.
\input testscrlttr2scrpage2.tex
! ==> Fatal error occurred, no output PDF file produced!
Transcript written on testscrlttr2scrpage2.log.
Außerdem wäre es schön gewesen, wenn Du mal kommentiert hättest, was Du da an Code zusammengebastelt hast. Ich habe nicht die Zeit, erst einmal zwei Stunden damit zu verbringen, irgendwelchen fremden Code zu verstehen.
Wenn ich Dich recht verstehe, dann willst Du so etwas:
% ACHTUNG: Zu Demozuwecken werden hier zwei angebliche PDF-Dateien% angelegt. die aber keine PDF-Dateien sind. Deshalb darf das Beispiel nicht% mit pdflatex, sondern muss mit latex (DVI-Modus) verarbeitet werden!% Wer stattdessen zwei beliebige PDF-Dateien als anlageA.pdf und anlageB.pdf% speichert, sollte pdflatex im PDF-Modus verwenden!\begin{filecontents}{anlageA.pdf}%PDF1.0\end{filecontents}\begin{filecontents}{anlageB.pdf}%PDF1.0\end{filecontents}\documentclass{scrlttr2}\usepackage[demo]{graphicx}\usepackage{scrpage2}\usepackage{pdfpages}%%----------------------------------------------------------------\pagestyle{scrheadings}\setkomafont{pagehead}{}\ihead{Seite \thepage}\chead{von}\ohead{\theabspage}%% = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =\usepackage{filecontents}\begin{filecontents*}{vatospecial.lco}%%----------------------------------------------------------------\newcounter{AbsLetter}% Zähler für die Briefe\newcommand*{\EncList}{}% Speicher für die Anlagenbezeichnungen\newcommand*{\ProcessAppendixInput}{}% Speicher für die Anhänge\newcommand*{\AddAppendix}[2][]{%\ifx\relax#1\relax\l@addto@macro{\EncList}{\\#2}%\else\l@addto@macro{\EncList}{\\#1}%\fi\l@addto@macro{\ProcessAppendixInput}{\do{#2}}%}\AtBeginLetter{%\stepcounter{AbsLetter}% Mit jedem neuen Brief den Briefezähler hochsetzen}\newcounter{appendixemptypage}\AtEndLetter{% Am Ende jedes Briefs\ifx\EncList\@empty\else\encl{\expandafter\@gobble\EncList}\fi% Anlagen ausgeben\setcounter{appendixemptypage}{1}% Zähler für leere Seiten initialisieren\clearpage% eigentlichen Brief beenden\let\do\AppendixInput% \do wird \AppendixInput\ProcessAppendixInput% für jeden Anhang \do ausführen\if@filesw
\addtocounter{page}{-\value{appendixemptypage}}% leere Anhangsseite abziehen\immediate\write\@auxout{% \immediate ist hier wichtig!\noexpand\setabspage{\theAbsLetter}{\the\value{page}}% Seitenzahl merken}%\addtocounter{page}{\value{appendixemptypage}}% leere Seiten wieder dazu\fi}\newcommand*{\setabspage}[2]{%\expandafter\gdef\csname abspage@#1\endcsname{#2}% Seitenzahl aus dem letzten Lauf}\newcommand*{\theabspage}{%\@ifundefined{abspage@\theAbsLetter}{% Wenn keine Seitenzahl bekannt\@namedef{abspage@\theAbsLetter}{???}% - Platzhalter verwenden\label{abspage@\theAbsLetter}% - rerun-Meldung auslösen}{}%\@nameuse{abspage@\theAbsLetter}% absolute Seitenzahl ausgeben}\newcommand*{\AppendixInput}[1]{%\newpage\ifodd\value{page}\else% egal ob twoside oder nicht: zur nächsten ungeraden\null\thispagestyle{empty}\stepcounter{appendixemptypage}\newpage\fi\includepdf[pages=-]{#1}% Anhang einfügen}\endinput\end{filecontents*}\LoadLetterOption{vatospecial}%%================================================================\listfiles%%================================================================\begin{document}%%----------------------------------------------------------------\begin{letter}{Max Mustermann}%\opening{Sehr geehrter Herr Mustermann,}%%----------------------------------------------------------------\AddAppendix[Eine Anlage]{anlageA}\AddAppendix[Noch eine Anlage]{anlageB}\AddAppendix[Noch eine Anlage]{anlageB}\pagebreak
Text
%\pagebreak%%----------------------------------------------------------------\closing{}%%================================================================\end{letter}\begin{letter}{Max Mustermann}%\opening{Sehr geehrter Herr Mustermann,}%%----------------------------------------------------------------\AddAppendix[Eine Anlage]{anlageA}\AddAppendix[Noch eine Anlage]{anlageB}\pagebreak
Text
%\pagebreak%%----------------------------------------------------------------\closing{}%%================================================================\end{letter}\end{document}
Ich habe das testweise auch mit \KOMAoptions{twoside=semi} getestet und es funktioniert. In dem Fall wird vor dem zweiten Brief dann korrekt eine weitere Leerseite eingefügt.
Zu Deinem Beispiel ist anzumerken: twoside=semi ist für scrpage2 noch immer ein doppelseitiges Dokument, wenn Du also nur die Köpfe der ungeraden Seite setzt (\lohead etc.), dann sind natürlich auch nur die Köpfe der ungeraden Seiten belegt und nicht die Köpfe der geraden Seiten. Das ist IMO völlig logisch und korrekt!
Kann verstehen, dass Du Dich geärgert hast. Bitte entschuldige meine unstrukturierte und chaotische Fragerei. Und vielen Dank für Deine Hilfe!
Ich bin zwar vor lauter Arbeit noch nicht dazu gekommen, Deine Lösung mir zu erarbeiten und anschließend in meine Anwendung einzubauen, um zu sehen, wie sie funktioniert. Aber dass Du Dir die Zeit genommen hat, mir zu helfen ist allein schon aller Ehren und allen Dankes wert.
scrpage2 ist noch nicht Version 3.xx
scrpage2 ist eines der Pakete, die noch nicht die Entwicklung des KOMA-Script-Kerns erreicht haben. Das bedeutet nicht nur, dass es noch keine \KOMAoptions-Schnittstelle hat. Es bedeutet auch, dass es nicht auf Optionenänderungen nach dem Laden eingerichtet ist. Bezüglich ein- oder doppelseitige betrifft dies allerdings vermutlich nur noch ein oder zwei Stellen. Das könnte ich also eventuell bis zur nächsten Release ändern, obwohl scrpage2 eigentlich keine neuen Features mehr erhalten soll (ich entwerfe schon seit fast zwei Jahren ein Nachfolgepaket).
Allerdings betrifft das dann trotzdem nur Seitenstile, die nach der Optionenänderung definiert werden. Seitenstile so zu definieren, dass man doppelseitige Seitenstile bei einseitiger Einstellung definieren könnte, würde eine tiefgreifende Änderung in scrpage2 bedeuten. Hier würde auf Anwenderebene eher helfen, die entsprechende Definition in eine eigene Datei oder ein eigenes Makro auszulagern und dann nach der Umschaltung nochmals diese Datei einzulesen oder dieses Makro auszuführen. Derzeit genügt auch das nicht, weil beispielsweise
\defpagestyle
(und darauf basiert jeder mit scrpage2 definierte Seitenstil auchscrheadings
undscrempty
) bereits beim Laden des Pakets in Abhängigkeit von ein- oder doppelseitig unterschiedlich definiert wird.Ich verstehe allerdings nicht, warum Du nicht einfach
twoside=semi
als Option bei\documentclass
angeben kannst. Selbst wenn Du eine Wrapper-Klasse um scrlttr2 basteln solltest, dürfte das doch möglich sein.BTW: Bitte den Hinweis: »Bitte auch daran denken, die Ausgabe des eigenen Beitrags noch einmal zu kontrollieren und ggf. unter Zuhilfenahme der Formatierhinweise zu korrigieren.« beachten und wie in den (auch an vielen anderen Stellen verlinkten) Formatierhinweisen angegeben den <code>-Tag (wahlweise auch mit eckigen Klammern) verwenden!
Beta-Version
Das ganze hat mir keine Ruhe gelassen. Zwar war der Aufwand tatsächlich recht hoch, aber ich habe nun tatsächlich diverse Änderungen an scrpage2 vorgenommen. Damit sollte die
twoside
-Abhängigkeit von scrpage2 von einer Ladezeit-Abhängigkeit zu einer Laufzeit-Abhängigkeit geworden sein. Bei dem Beispiel macht es dann tatsächlich auch keinen Unterschied mehr, welche Variante man verwendet. Wenn Du willst kann ich Dir eine Beta-Version dieser scrpage2-Version per Mail schicken, damit Du testen kannst, ob dieses Problem damit gelöst ist.BTW: Es sei ausdrücklich darauf hingewiesen, dass sich scrpage2 bei der typearea-Einstellung
twoside=semi
genau wie beitwoside=true
verhält. scrpage2 selbst wertet diese Einstellung nicht aus, sondern kennt – wie alle derartigen Pakete – nur den Schalter\if@twoside
des LaTeX-Kerns. Das wird nicht als Bug, sondern als Feature betrachtet!Oh ja!
Bitte schick mir die Beta-Version. Danke. Gruß. Friedrich
Auch mit der Beta klappt's nicht.
Moin.
Ich habe hier das gesamte Problem noch einmal veranschaulicht.
Das folgende Min.-Bsp. ist nicht wirklich minimal. Aber kürzer geht's
wohl nicht, um mein Problem zu verdeutlichen.
Die Aufgabenstellung lautet, eine Möglichkeit zu schaffen, an Briefe
PDF-Anlagen anzuhängen. Dabei soll auch beim Duplex-Ausdruck jeder
Anhang auf einem neuen Blatt beginnen, also auf einer ungeradzahligen
Seite. Die hierzu gegebenenfalls einzufügenden Leerseiten sollen aber
beim Ermitteln der Anzahl der Seiten eines Dokuments nicht mitgezählt
werden.
Das Problem, welches ich nicht in den Griff bekomme, ist, dass auf
geradzahligen Seiten des Briefs nicht die vorgegebene Kopfzeile
erscheint. Lasse ich hingegen die KOMA-Option twoside=semi weg, habe ich
zwar auf allen Seiten des Briefs - mit Ausnahme der Titelseite natürlich
- meine Kopfzeile, aber dann funktioniert der Automatismus nicht, dass
jede Anlage auf einem neuen Blatt beginnt.
Was muss verändert werden, damit die Kopfzeile auf allen Seiten des
Briefs erscheint und der Leerseiten-Automatismus trotzdem funktioniert?
Besten Dank im Voraus fürs Mitknobeln!
Gruß. Friedrich
[Moderator-Edit: Alles bis auf die Dateiliste gelöscht ...]
Bitte den letzten Absatz
Bitte den letzten Absatz meines ersten Kommentars unbedingt beachten! Wenn die Log-Datei keinen Fehler enthält, solltest Du die außerdem weglassen und Dich ggf. auf die Dateiliste beschränken.
Ich bitte um Entschuldigung. Hier nochmal der saubere Quelltext
Wow! Mit Syntax-Hervorhebungen. Das ist ja ein tolles Forum! :-) Gruß. Friedrich
Grml
Du solltest den Code nicht erneut senden, sondern Deinen Beitrag korrigieren!!!
Außerdem ist das noch immer kein vollständiges Minimalbeispiel:
Außerdem wäre es schön gewesen, wenn Du mal kommentiert hättest, was Du da an Code zusammengebastelt hast. Ich habe nicht die Zeit, erst einmal zwei Stunden damit zu verbringen, irgendwelchen fremden Code zu verstehen.
Warum verwendest Du nicht
\usepackage
?Wenn ich Dich recht verstehe, dann willst Du so etwas:
Ich habe das testweise auch mit
\KOMAoptions{twoside=semi}
getestet und es funktioniert. In dem Fall wird vor dem zweiten Brief dann korrekt eine weitere Leerseite eingefügt.Zu Deinem Beispiel ist anzumerken:
twoside=semi
ist für scrpage2 noch immer ein doppelseitiges Dokument, wenn Du also nur die Köpfe der ungeraden Seite setzt (\lohead
etc.), dann sind natürlich auch nur die Köpfe der ungeraden Seiten belegt und nicht die Köpfe der geraden Seiten. Das ist IMO völlig logisch und korrekt!Re: Grml
Moin Markus.
Kann verstehen, dass Du Dich geärgert hast. Bitte entschuldige meine unstrukturierte und chaotische Fragerei. Und vielen Dank für Deine Hilfe!
Ich bin zwar vor lauter Arbeit noch nicht dazu gekommen, Deine Lösung mir zu erarbeiten und anschließend in meine Anwendung einzubauen, um zu sehen, wie sie funktioniert. Aber dass Du Dir die Zeit genommen hat, mir zu helfen ist allein schon aller Ehren und allen Dankes wert.
Gruß. Friedrich