Geometry für erste Seite anders mit two column Layout

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


PaulMuaddib
Forum-Newbie
Forum-Newbie
Beiträge: 8
Registriert: Di 16. Okt 2018, 14:55

Geometry für erste Seite anders mit two column Layout

Beitrag von PaulMuaddib »

Hallo,

ich möchte für die erste Seite eine andere Geometry Einstellungen verwenden. Das benötige ich, weil ich auf der ersten Seiten ein anderes Hintergrundlayout verwende. Eine feste Umgebung für die erste Seite kann ich nicht benutzen, da ich nicht weiß viel Text für die erste Seite in Anspruch genommen wird. Der Text fließt von der ersten Seite zur nächsten Seite.

Bei der Recherche im Internet habe ich nur eine Lösung gefunden.
\afterpage{\aftergroup\restoregeometry}
Das funktioniert jedoch nicht mit einem two column Layout. Kennt jemand eine andere Lösung?

Danke für die Hilfe.

Grüße,
Paul
\documentclass[a4paper,12pt]{article}
\usepackage{lipsum}
\usepackage{setspace}
\usepackage[ngerman]{babel}
\usepackage[draft=true]{scrlayer}

%showframe
\usepackage[a4paper,includefoot,nohead,nomarginpar,twocolumn,%
		top=7.5cm,bottom=2.2cm,left=1.8cm,right=1.8cm,%
		columnsep=1.5cm]{geometry}

\usepackage{afterpage}

\DeclareNewLayer[
	align=tl,
	hoffset=9.5cm,
	voffset=2.5cm,
	width=9cm,
	height=3\baselineskip,
	contents={%
		\begingroup\setstretch{1}%
			{Text Text}%
		\par\endgroup
	}
	]{report_typ_layer}

\DeclareNewLayer[
        align=tl,
        hoffset=1.8cm,
        voffset=6.3cm,
        width=17.4cm,
        height=2\baselineskip,
        contents={%
			\begingroup\setstretch{1.5}%
				{\@title}%
			 \par\endgroup
	}
	]{firstpage_title_layer}
		
\DeclareNewLayer[
        align=tl,
        hoffset=1.8cm,
        voffset=9cm,
        width=17.4cm,
        height=1\baselineskip,
        contents={%
			\begingroup\setstretch{1}%
                {Text Text Text}
			\par\endgroup
        }
	]{firstpage_subtitle_layer}

\DeclareNewLayer[
        align=tl,
        hoffset=1.8cm,
        voffset=5.7cm,
        width=17.4cm,
        height=1\baselineskip,
        contents={%
                \begingroup\setstretch{1}%
                    {Text Text Text}
                \par\endgroup
        }
        ]{subtitle_layer}

\DeclareNewLayer[
        align=tl,
        hoffset=1.75cm,
        voffset=28.25cm,
        width=17.4cm,
        height=2\baselineskip,
        contents={%
			\begingroup\setstretch{1.1}%
                {Text Text Text}
			\par\endgroup
        }
	]{footer_layer}


\title{Title Title Title}

\DeclareNewPageStyleByLayers{titlestyle}{report_typ_layer,%
										firstpage_title_layer,%
										firstpage_subtitle_layer,%
										footer_layer}
\DeclareNewPageStyleByLayers{normalpage}{report_typ_layer,%
										subtitle_layer,%
										footer_layer}

\pagestyle{normalpage}
\thispagestyle{titlestyle}

\onehalfspace

\begin{document}
\newgeometry{a4paper, includefoot,nohead,nomarginpar,twocolumn,%
 				top=11.5cm,bottom=2.2cm,left=1.8cm,right=1.8cm,%
                columnsep=1.5cm}
\afterpage{\aftergroup\restoregeometry}
\lipsum[6-10]

\end{document}

Gast

Beitrag von Gast »

Du willst demnach automatisch von zweispaltigem zu einspaltigem Layout wechseln und dabei einen automatischen Textfluss haben. Das kann nicht funktionieren. Der Grund ist einfach, TeX bricht zunächst den Absatz mit den aktuellen Parametern um. Dann fügt es diesen Absatz der Box für die aktuelle Spalte hinzu. Ist diese Box dann länger als der verfügbare Platz, wird die Box geteilt und der Rest landet wieder am Anfang der Box für die nächste Spalte bzw. Seite. Der Rest des Absatzes wird also nicht neu umbrochen. Das passt also schon einmal nicht, wenn sich die Breite der Spalte ändert.

Dazu kommt, dass auf diesem trivialen Weg auch nicht von zweispaltig auf einspaltig umgeschaltet werden kann. Das liegt wiederum daran, dass die Umschaltung dabei bereits beim Umbruch von der ersten auf die zweite Spalte erfolgen würde (wenn es denn überhaupt erfolgen würde). Das könnte man zwar mit einigen internen Kenntnissen mit
\afterpage{\afterpage{\aftergroup\onecolumn\aftergroup\aftergroup\aftergroup\restoregeometry}}
lösen, aber wie oben erklärt, behält dabei der Rest des Absatzes, der von der ersten zur zweiten Seite umbrochen wird die Breite einer Spalte der ersten Seite. Man müsste also min. den Umbruch von der ersten Seite zur zweiten explizit durchführen. Dann kann man sich natürlich auch gleich das ganze Gefummel mit \afterpage sparen.

Du bist hier an eine Grenze des Möglichen von (La)TeX gestoßen. Für die Definition unterschiedlicher Boxen und den Textfluss zwischen diesen Boxen ist ein DTP-Programm besser geeignet.

PaulMuaddib
Forum-Newbie
Forum-Newbie
Beiträge: 8
Registriert: Di 16. Okt 2018, 14:55

Beitrag von PaulMuaddib »

Ich habe nirgendwo geschrieben, das ich von einem zweispaltigen Layout auf ein einspaltiges Layout wechseln möchte. Ich möchte auf allen Seiten das zweispaltige Layout behalten. Die Interna von Latex sind mir nicht sehr vertraut.

Gast

Beitrag von Gast »

Sorry, dann habe ich mich von dem ganzen überflüssigen Code offenbar ablenken lassen. Aber dann enthält meine Antwort trotzdem eigentlich schon die Lösung:
\documentclass[a4paper,12pt,twocolumn]{article}
\usepackage{lipsum}
\usepackage[ngerman]{babel}

%showframe
\usepackage[showframe,includefoot,nohead,nomarginpar,%
      top=7.5cm,bottom=2.2cm,left=1.8cm,right=1.8cm,%
      columnsep=1.5cm]{geometry}

\usepackage{afterpage}

\begin{document}
\newgeometry{includefoot,nohead,nomarginpar,%
  top=11.5cm,bottom=2.2cm,left=1.8cm,right=1.8cm,%
  columnsep=1.5cm}
\afterpage{\afterpage{\aftergroup\restoregeometry}}
\lipsum[1-10]

\end{document}
Erklärung: Nach dem äußeren \afterpage befindet man sich erst in der zweiten Spalte. Du willst aber hinter die zweite Spalte. Deshalb muss man zwei \afterpage schachteln.

Merke: Je weniger überflüssiger Code ein Beispiel enthält, desto besser kann sich ein doofer Helfer wie ich, auf das Wesentliche konzentrieren.

esdd
Forum-Meister
Forum-Meister
Beiträge: 2561
Registriert: So 7. Feb 2010, 16:36

Beitrag von esdd »

Eigentlich werden ja auf der ersten Seite nur zusätzliche 4cm vor Beginn des Textes benötigt? Würde es dann nicht auch das folgende tun:
\documentclass[a4paper,12pt,twocolumn]{article}
\usepackage{lipsum}
\usepackage[ngerman]{babel}

%showframe
\usepackage[showframe,includefoot,nohead,nomarginpar,%
      top=7.5cm,bottom=2.2cm,left=1.8cm,right=1.8cm,%
      columnsep=1.5cm]{geometry}

\begin{document}
\twocolumn[\vspace{4cm}]

\lipsum[1-10]
\end{document}
Oder mit dem ursprünglichen Beispiel:
\documentclass[a4paper,12pt,twocolumn]{article}
\usepackage{lipsum}
\usepackage{setspace}
\usepackage[ngerman]{babel}
\usepackage[draft=true]{scrlayer}

%showframe
\usepackage[showframe,includefoot,nohead,nomarginpar,%
      top=7.5cm,bottom=2.2cm,left=1.8cm,right=1.8cm,%
      columnsep=1.5cm]{geometry}

\DeclareNewLayer[
   background,% <- ergänzt
   align=tl,
   hoffset=9.5cm,
   voffset=2.5cm,
   width=9cm,
   height=3\baselineskip,
   contents={%
      \begingroup\setstretch{1}%
         {Text Text}%
      \par\endgroup
   }
   ]{report_typ_layer}

\DeclareNewLayer[
        background,% <- ergänzt
        align=tl,
        hoffset=1.8cm,
        voffset=6.3cm,
        width=17.4cm,
        height=2\baselineskip,
        contents={%
         \begingroup\setstretch{1.5}%
            {\@title}%
          \par\endgroup
   }
   ]{firstpage_title_layer}
      
\DeclareNewLayer[
        background,% <- ergänzt
        align=tl,
        hoffset=1.8cm,
        voffset=5.7cm,
        width=17.4cm,
        height=1\baselineskip,
        contents={%
                \begingroup\setstretch{1}%
                    {Text Text Text}
                \par\endgroup
        }
        ]{subtitle_layer}
\DeclareNewLayer[
        clone=subtitle_layer,% <- geändert
        voffset=9cm% <- einziger Unterschied zu subtitle_layer
   ]{firstpage_subtitle_layer}

\DeclareNewLayer[
        foreground,% <- ergänzt
        align=tl,
        hoffset=1.75cm,
        voffset=28.25cm,
        width=17.4cm,
        height=2\baselineskip,
        contents={%
         \begingroup\setstretch{1.1}%
                {Text Text Text}
         \par\endgroup
        }
   ]{footer_layer}


\title{Title Title Title}

\DeclareNewPageStyleByLayers{titlestyle}{report_typ_layer,%
                              firstpage_title_layer,%
                              firstpage_subtitle_layer,%
                              footer_layer}
\DeclareNewPageStyleByLayers{normalpage}{report_typ_layer,%
                              subtitle_layer,%
                              footer_layer}

\pagestyle{normalpage}
\onehalfspace
\begin{document}
\twocolumn[\vspace{4cm}]
\thispagestyle{titlestyle}
\lipsum[6-10]
\end{document}
Bei den Layern habe ich background für die zum Kopf gehörigen und foreground für den mit der Fußzeile eingefügt, da sonst jeder Deiner Layer sowohl im Hintergrund als auch im Vordergrund und damit doppelt ausgegeben würde.

PaulMuaddib
Forum-Newbie
Forum-Newbie
Beiträge: 8
Registriert: Di 16. Okt 2018, 14:55

Beitrag von PaulMuaddib »

Super ! Vielen Dank für die Hilfe

Antworten