[typearea] landscape & portrait in einem Dokument

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


MoonKid
Forum-Meister
Forum-Meister
Beiträge: 690
Registriert: Sa 30. Jun 2012, 11:56

[typearea] landscape & portrait in einem Dokument

Beitrag von MoonKid »

Folgender Code scheint zu funktionieren und produziert auch die erwarteten PDF-Seiten.
\documentclass{scrartcl}
\KOMAoptions{paper=landscape,pagesize=auto}
\recalctypearea

\usepackage{xltxtra}
\defaultfontfeatures{Mapping=tex-text}

\usepackage{polyglossia}
\setdefaultlanguage[spelling=new]{german}

\usepackage{blindtext}

\begin{document}
\blindtext
\newpage
\KOMAoptions{paper=portrait,pagesize=auto}
\recalctypearea
\blindtext

\newpage
\KOMAoptions{paper=landscape,pagesize=auto}
\recalctypearea
\blindtext
\end{document}
Dem Kern scheint es aber nicht zugefallen. Hier sind ne Menge "böser" Anmerkungen, deren Sinn ich zwar nachvollziehen kann, aber von denen ich nicht weiß, wie ich sie handlen sollte.
Package typearea Warning: Typearea changed!
(typearea)                You should do this only at preamble, because only
(typearea)                \begin{document} calculates output dimensions!
(typearea)                Trying to calculate new output dimensions, but
(typearea)                this is only a dirty hack on input line 17.

[2]

Package typearea Warning: Bad type area settings!
(typearea)                The detected line width is about 52%
(typearea)                larger than the heuristically detected line width.
(typearea)                You should e.g. decrease DIV, increase fontsize
(typearea)                or change papersize.


Package typearea Warning: Typearea changed!
(typearea)                You should do this only at preamble, because only
(typearea)                \begin{document} calculates output dimensions!
(typearea)                Trying to calculate new output dimensions, but
(typearea)                this is only a dirty hack on input line 22.

[3] (./01.aux)
** WARNING ** Unknown token "setpagedevice"
** WARNING ** Interpreting PS code failed!!! Output might be broken!!!
** WARNING ** Interpreting special command ps: (ps:) failed.
** WARNING ** >> at page="2" position="(89.2914, 757.701)" (in PDF)
** WARNING ** >> xxx "ps::%%PageBoundingBox: 0 0 595 842\x0a%%BeginPageSetup\x0a<<..."
** WARNING ** >> Reading special command stopped around >>0 0 bop\x0a%%EndPageSetup<<
** WARNING ** Unknown token "setpagedevice"
** WARNING ** Interpreting PS code failed!!! Output might be broken!!!
** WARNING ** Interpreting special command ps: (ps:) failed.
** WARNING ** >> at page="2" position="(89.2914, 757.701)" (in PDF)
** WARNING ** >> xxx "ps::%%PageBoundingBox: 0 0 595 842\x0a%%BeginPageSetup\x0a<<..."
** WARNING ** >> Reading special command stopped around >>0 0 bop\x0a%%EndPageSetup<<
** WARNING ** Unknown token "setpagedevice"
** WARNING ** Interpreting PS code failed!!! Output might be broken!!!
** WARNING ** Interpreting special command ps: (ps:) failed.
** WARNING ** >> at page="3" position="(126.283, 535.748)" (in PDF)
** WARNING ** >> xxx "ps::%%PageBoundingBox: 0 0 842 595\x0a%%BeginPageSetup\x0a<<..."
** WARNING ** >> Reading special command stopped around >>0 0 bop\x0a%%EndPageSetup<<
** WARNING ** Unknown token "setpagedevice"
** WARNING ** Interpreting PS code failed!!! Output might be broken!!!
** WARNING ** Interpreting special command ps: (ps:) failed.
** WARNING ** >> at page="3" position="(126.283, 535.748)" (in PDF)
** WARNING ** >> xxx "ps::%%PageBoundingBox: 0 0 842 595\x0a%%BeginPageSetup\x0a<<..."
** WARNING ** >> Reading special command stopped around >>0 0 bop\x0a%%EndPageSetup<<
 )
XeLaTeX, TeX Live, vim-latexsuite

Besserwisser

Beitrag von Besserwisser »

Die LaTeX-Warnungen zeigen an, dass zur Änderung des Seitenformats von typearea Dinge gemacht werden müssen, die von LaTeX eigentlich nicht vorgesehen sind. typearea bietet das trotzdem an, weißt aber per Warnung darauf hin, dass diese Lösung nicht sauber ist. Näheres dazu steht ja auch in der KOMA-Script-Anleitung auf Seite 39, bei der Erklärung zu \recalctypearea. Dort ist auch dokumentiert, dass die Verwendung von \recalctypearea selbst bereits immer zu einem Seitenumbruch führt. Nachdem ich das gelesen habe, schließe ich daraus, dass man die \newpage aus Deinem Beispiel sorglos entfernen kann.

An anderer Stelle hat der KOMA-Script-Autor auf die Frage, was denn schief gehen könnte, mal geantwortet, dass bei Änderungen an der LaTeX-Output-Routine in Folge des Hacks alles mögliche passieren könnte. Die Kompatibilität eines Dokuments, das darauf baut, kann daher nicht garantiert werden.

Nun wird in LaTeX2e selbst die Output-Routine sicher keine nennenswerten Änderungen mehr erfahren. Allerdings gewinnt die Warnung mit den experimentellen Routinen aus dem l3-Bereich an Bedeutung. Irgendwann werden die l3-Pakete sicher auch die Output-Routine von LaTeX2e ersetzen. Ob dann der Hack noch funktionieren wird, steht in den Sternen.

Die ganzen "** WARNING **" Warnungen, sind Warnungen des XeTeX-PDF-Backends. Bekanntlich erzeugt XeTeX eine erweiterte DVI-Datei (Endung .xdv statt .dvi) und erzeugt erst daraus dann wirklich PDF. typearea baut bei pagesize=auto für den DVI-Weg \special-Anweisungen ein, die dafür sorgen, dass auch mit dvips PostScript-Code erzeugt wird, der die Formatänderungen enthält. Tatsächlich braucht XeTeX diese \special-Anweisungen nicht, wenn es PDF erzeugt, weil es eben auch \pdfpaperwidth und \pdfpaperheight versteht (aber AFAIK kein \pdfoutput). Wenn Dich diese Warnungen stören, wirst Du sie los, indem Du pagesize=pdftex statt pagesize=auto verwendest, und damit die Berücksichtigung des DVI-Falls abschaltest.

Übrigens brauchst Du Option pagesize laut KOMA-Script-Anleitung nur einmal zu verwenden und auch die \recalctypearea als eigene Anweisungen kann man wegoptimieren:
\documentclass[paper=landscape,pagesize=pdftex]{scrartcl}

\usepackage{xltxtra}
\defaultfontfeatures{Mapping=tex-text}

\usepackage{polyglossia}
\setdefaultlanguage[spelling=new]{german}

\usepackage{blindtext}

\begin{document}
\blindtext
\KOMAoptions{paper=portrait,DIV=last}
\blindtext

\KOMAoptions{paper=landscape,DIV=last}
\blindtext
\end{document}
Man kann, wenn man denn die KOMA-Script-Anleitung gelesen hat, sogar das Zurückschalten auf den ursprünglichen Zustand vereinfachen. Dafür gibt es in Abschnitt 15.1 sogar ein Beispiel. Darauf aufbauend würde ich Dein Beispiel so ändern:
\documentclass[paper=landscape,pagesize=pdftex]{scrartcl}

\usepackage{xltxtra}
\defaultfontfeatures{Mapping=tex-text}

\usepackage{polyglossia}
\setdefaultlanguage[spelling=new]{german}

\usepackage{blindtext}

\begin{document}
\blindtext

\storeareas\LandscapeArea
\KOMAoptions{paper=portrait,DIV=last}
\blindtext

\clearpage\LandscapeArea
\blindtext
\end{document}
Dabei wird dann auch die Anzahl der Warnungen reduziert.

Interessanter Weise behandelt das Beispiel in der KOMA-Script-Anleitung übrigens genau den Fall, dass man landscape- und portrait-Seiten mischen möchte. Vielleicht solltest Du ja doch einmal erwägen, die ganze KOMA-Script-Anleitung zu lesen. Mit der geometry-Anleitung scheinst Du ja auch auf Kriegsfuß zu stehen. Vielleicht ist Dein Problem tatsächlich eher grundsätzlicher Natur …

Antworten