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

Antwort erstellen


Diese Frage dient dazu, das automatisierte Versenden von Formularen durch Spam-Bots zu verhindern.
Smilies
:D :) :( :o :shock: :? 8) :lol: :-x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:

BBCode ist eingeschaltet
[img] ist eingeschaltet
[flash] ist ausgeschaltet
[url] ist eingeschaltet
Smilies sind eingeschaltet

Die letzten Beiträge des Themas

Ich habe die Datenschutzerklärung gelesen und bin damit einverstanden.

   

Wenn du eine Datei oder mehrere Dateien anhängen möchtest, gib die Details unten ein.

Ansicht erweitern Die letzten Beiträge des Themas: Warum macht \KOMAoption{paper}{a4,landscape} nichts?

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

von gast. » Do 24. Mär 2022, 08:34

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.

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

von Rolli » Mi 23. Mär 2022, 20:55

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

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

von KOMA » Mi 23. Mär 2022, 08:29

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.

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

von Rolli » Di 22. Mär 2022, 21:19

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

Nach oben