Warum macht \KOMAoption{paper}{a4,landscape} nichts? Thema ist als GELÖST markiert

Layout von Seiten, Rändern, Fusszeilen, usw, modifizieren


Rolli
Forum-Guru
Forum-Guru
Beiträge: 382
Registriert: Mi 15. Feb 2017, 08:50
Wohnort: Mittelfranken

Warum macht \KOMAoption{paper}{a4,landscape} nichts?

Beitrag von Rolli »

Hallo, ich möchte mit einem Lauf zwei Dokumente erzeugen:
1. Ein fortlaufend paginiertes DIN-A5-Dokument
2. Ein DIN-A4-Quer-Dokument, in dem je Seite jeweils zwei Seiten des DIN-A5-Dokuments für ein Booklet ausgeschossen sind.
Wenn ich die beiden Teile in zwei getrennte .tex-Quellen speichere und erst 1., danach 2. übersetze, funktioniert es wie gewünscht.
Wenn ich es so wie unten in einer Datei mache, ignoriert es das \KOMAoption{paper}{a4,landscape} - die Booklet-Datei ist DIN-A5 portrait!
???
Das Beispiel müsste man unter Test.tex speichern, sonst erzeugt es keine zwei PDF's. Ich weiß leider nicht, wie man so etwas im Online-Übersetzer hin bekommt.

Das Grundgerüst habe ich hierher:
viewtopic.php?t=23134#:~:text=Eine%20einzelner%20tex%2DLauf%20kann,PDF%20beide%20Sprachversionen%20hintereinander%20erzeugen.
\documentclass [paper=a5] {scrartcl}

\usepackage{pdfpages}

%viewtopic.php?t=23134#:~:text=Eine%20einzelner%20tex%2DLauf%20kann,PDF%20beide%20Sprachversionen%20hintereinander%20erzeugen.

\def\BookletName{Test-Booklet}
\def\FileName{Test}
\makeatletter\@onelevel@sanitize\BookletName\makeatother
\edef\cmdname{\jobname}
\makeatletter\@onelevel@sanitize\cmdname\makeatother
\ifx\cmdname\BookletName
  \typeout{\jobname\space = \BookletName}
  \begin{document}
  \KOMAoption{paper}{a4,landscape}
  \includepdf[pages={4,1}, nup=2x1]{\FileName}
  \includepdf[pages={2,3}, nup=2x1]{\FileName}
\else
  \typeout{\jobname\space != \BookletName}
  \usepackage{shellesc}
  \ShellEscape{pdflatex -recorder -shell-escape -jobname=\BookletName\space \jobname}
  \begin{document}
  \Huge Seite 1\newpage
  Seite 2\newpage
  Seite 3\newpage
  Seite 4\newpage
\fi
\end{document}
Weiß jemand Rat?

Gruß vom Rolli

Benutzeravatar
KOMA
TeX-Entwickler
TeX-Entwickler
Beiträge: 2958
Registriert: Fr 4. Jul 2008, 17:28
Kontaktdaten:

Re: Warum macht \KOMAoption{paper}{a4,landscape} nichts?

Beitrag von KOMA »

Dein Code funktioniert auch nicht, wenn man die Datei als Test.tex speichert. Im ersten Lauf
pdflatex -shell-escape Test
wird dann zunächst der \else-Teil ausgeführt. Darin erfolgt der Aufruf
pdflatex -recorder -shell-escape -jobname=Test-Booklet Test
In diesem Lauf wird dann \includepdf[pages={4,1}, nup=2x1]{Test} aufgerufen. Zu dem Zeitpunkt ist aber der erste LaTeX-Aufruf noch nicht beendet, weshalb Test.pdf noch gar nicht existiert.

Die Frage ist auch schon im Ansatz falsch. Dass \KOMAoption{paper}{a4,landscape} etwas macht, kannst Du nämlich einfach dadurch ermitteln, dass Du vor \includepdf noch selbst eine Seite erzeugst. Daher würde ich auf jeden Fall probieren, das Papierformat vor dem Laden von pdfpages einzustellen oder bei den Optionen von pdfpages (Stichwort autoscale, fitpaper, pagetemplate, templatesize …) ein wenig spielen, in der Hoffnung, dass pdfpages die Änderung des Formats mitbekommt. Jedenfalls funktioniert
\documentclass [paper=a5] {scrartcl}

\def\SinglePagesName{test-SinglePages}
\makeatletter\@onelevel@sanitize\SinglePagesName\makeatother
\edef\cmdname{\jobname}
\makeatletter\@onelevel@sanitize\cmdname\makeatother
\ifx\cmdname\SinglePagesName
  \typeout{\jobname\space = \SinglePagesName}
  \begin{document}
  \Huge Seite 1\newpage
  Seite 2\newpage
  Seite 3\newpage
  Seite 4\newpage
\else
  \typeout{\jobname\space != \SinglePagesName}
  \usepackage{shellesc}
  \ShellEscape{pdflatex -recorder -shell-escape -jobname=\SinglePagesName\space \jobname}
  \KOMAoption{paper}{a4,landscape}
  \usepackage{pdfpages}
  \begin{document}
  \includepdf[pages={4,1}, nup=2x1]{\SinglePagesName}
  \includepdf[pages={2,3}, nup=2x1]{\SinglePagesName}
\fi
\end{document}
wobei die Datei jeden beliebigen Namen außer test-SinglePages.tex haben darf. Das Ergebnis findet man dann im PDF mit dem gleichen Basisname (also nicht in test-SinglePages.pdf).

Ebenso geht natürlich:
\documentclass[paper=landscape] {scrartcl}

\def\SinglePagesName{test-SinglePages}
\makeatletter\@onelevel@sanitize\SinglePagesName\makeatother
\edef\cmdname{\jobname}
\makeatletter\@onelevel@sanitize\cmdname\makeatother
\ifx\cmdname\SinglePagesName
  \KOMAoptions{paper=a5,paper=portrait,DIV=calc}
  \typeout{\jobname\space = \SinglePagesName}
  \begin{document}
  \Huge Seite 1\newpage
  Seite 2\newpage
  Seite 3\newpage
  Seite 4\newpage
\else
  \typeout{\jobname\space != \SinglePagesName}
  \usepackage{shellesc}
  \ShellEscape{pdflatex -recorder -shell-escape -jobname=\SinglePagesName\space \jobname}
  \usepackage{pdfpages}
  \begin{document}
  \includepdf[pages={4,1}, nup=2x1]{\SinglePagesName}
  \includepdf[pages={2,3}, nup=2x1]{\SinglePagesName}
\fi
\end{document}
oder gleich
\def\SinglePagesName{test-SinglePages}
\makeatletter\@onelevel@sanitize\SinglePagesName\makeatother
\edef\cmdname{\jobname}
\makeatletter\@onelevel@sanitize\cmdname\makeatother
\ifx\cmdname\SinglePagesName
  \documentclass[paper=a5] {scrartcl}
  \typeout{\jobname\space = \SinglePagesName}
  \begin{document}
  \Huge Seite 1\newpage
  Seite 2\newpage
  Seite 3\newpage
  Seite 4\newpage
\else
  \typeout{\jobname\space != \SinglePagesName}
  \documentclass[paper=landscape]{scrartcl}
  \usepackage{shellesc}
  \ShellEscape{pdflatex -recorder -shell-escape -jobname=\SinglePagesName\space \jobname}
  \usepackage{pdfpages}
  \begin{document}
  \includepdf[pages={4,1}, nup=2x1]{\SinglePagesName}
  \includepdf[pages={2,3}, nup=2x1]{\SinglePagesName}
\fi
\end{document}
Das Problem ist hier also eindeutig einerseits pdpages das geänderte Papierformat zu vermitteln und natürlich die fehlerhafte Logik in Deinem Originalcode.

Rolli
Forum-Guru
Forum-Guru
Beiträge: 382
Registriert: Mi 15. Feb 2017, 08:50
Wohnort: Mittelfranken

Re: Warum macht \KOMAoption{paper}{a4,landscape} nichts?

Beitrag von Rolli »

Danke, Markus!

Bei mir hat mein vierseitiges MB funktioniert, ohne Fehlermeldung, aber beide Dokumente waren A5 und in der Booklet-PDF nur die jeweilige linke Seite. Deine MB Beispiele funktionieren einwandfrei.

Dann habe ich in Dein unteres Beispiel meinen tatsächlichen Inhalt hinein gepackt, über 50 Seiten eng beschrieben mit Formeln und TikZ-Bildern, et voila: Beim ersten Übersetzen eine Fehlermeldung vom includepdf, die SinglePages-Datei sei fehlerhaft. Beim zweiten, dritten, ... Übersetzen dann fehlerlos wie erwartet.

Ich vermute, das hat was mit der Nebenläufigkeit des externen pdflatex-Prozesses und des Haupt-Übersetzerprozesses zu tun, unter Berücksichtigung der Geschwindigkeit des jeweiligen Rechners - wenn der eine vor dem anderen fertig wird, klappt es, anders herum nicht ...

Wie auch immer - mein Problem ist gelöst, nochmals vielen Dank für die Hilfe!

Gruß vom Rolli

gast.

Re: Warum macht \KOMAoption{paper}{a4,landscape} nichts?

Beitrag von gast. »

Es gibt keine Nebenläufigkeit. Das ist alles sequenziell. Schau dir die Erklärung zum Ablauf von Markus an. Er liegt da vollkommen richtig. Dein Beispiel kann nicht funktionieren und tut es bei mir auch nicht. Seine Beispiele funktionieren dagegen alle.

Man beachte, dass \ShellEscape dem \immediate\write18 von pdflatex entspricht. Damit wird in deinem Beispiel im ersten Lauf definitiv innerhalb des inneren pdflatex-Aufrufs \includepdf für das äußere Dokument aufgerufen, bevor dieses erzeugt ist. Bei Markus stimmt es hingegen.

Antworten