Linien im Header mit TikZ

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


White_Fox

Linien im Header mit TikZ

Beitrag von White_Fox »

Moin liebe Leute

Ich möchte im Header zwei Linien haben, am äußeren Rand einer Doppelseite soll jeweils die Seitennummer stehen, die Seitennummer soll die Linie unterbrechen. Seitennummer und Dekorlinien sollen also auf einer Höhe sein.

Ich habe das ursprünglich mal mit PSTricks gelöst, da mußte ich lediglich die Linien deutlich länger als die Seitenbreite einfügen, eine Textbox mit weißem Hintergrund darüberlegen, und fertig.

Jetzt muß ich aber von PSTricks weg (Konflikte mit dem Einbinden von PDF-Dateien) und möchte das daher in TikZ machen.

Ich bekomme zwar zwei TikZ-Linien in die Kopfzeile, ich bekomme es aber nicht hin daß die Linien von einem Seitenrand zum andern durchgehen. Auch könnten die Dekorlinien gerne noch mittig durch die Seitenzahl gehen.

Ich bitte schonmal um Entschuldigung, falls mein Textsatz jemanden beleidigen sollte, aber vernünftiger Textsatz läßt mir leider nicht genug Platz.

Hier ist ein kleines, abgespecktes Minimalbeispiel. Tatsächlich habe ich noch deutlich mehr Formatierungen für verschiedene Seitenformate bei mir drin, es wäre daher großartig wenn das Problem im Befehl \makeDecorativeHeaderlines zu lösen wäre. Wenn nicht ist das natürlich auch ok, dann passe ich den Rest bei mir halt an.
%\RequirePackage{fix-cm}
\documentclass[
	twoside
	]{book}
\usepackage{german}
\usepackage[
	a4paper,
	twoside=true,
	top = 2cm,
	inner = 1.5cm,
	outer = 3cm,
	bottom = 4cm
	]{geometry}
\usepackage{pdflscape}
\usepackage{lipsum}
\usepackage{graphics}
\usepackage[
	absolute
%	, showboxes
	]{textpos}
\usepackage{fancyhdr}
\usepackage{xcolor}
\usepackage[most]{tcolorbox}
\usepackage{afterpage}
\usepackage{setspace}
\usepackage{titlesec}
%\usepackage{pstricks}
%\usepackage{pst-all}
%\usepackage{fp}
\usepackage{tikz}
\usepackage[
	european
]{circuitikz}
\usetikzlibrary{shapes, arrows, positioning}
\usepackage[german]{hyperref}
\usepackage{footnote}
\usepackage{array}
\usepackage{float}
\usepackage{rotating}
\usepackage{multirow}
\usepackage{booktabs}
\usepackage{cancel}
\usepackage{array}


%Längen für textpos
\setlength{\TPHorizModule}{1cm}
\setlength{\TPVertModule}{1cm}

%Beginn eines Absatzes nicht einrücken
\setlength{\parindent}{0em}

\definecolor{red}{RGB}{128,64,64}
\definecolor{gray}{RGB}{150,150,150}


%Hier ist das Problem:
\newcommand{\makeDecorativeHeaderlines}{
	%\psset{xunit = 1cm, yunit = 1cm, runit = 1cm}
	%\psline[linewidth = 3pt, linecolor = red]{-}(-30, 0)(30, 0)
	%\psline[linewidth = 3pt, linecolor = gray]{-}(-30, 0.3)(30, 0.3)
	\centering
	\begin{tikzpicture}
		\draw [line width = 3pt,color = red](-30cm, 0) -- (30cm, 0);
		\draw [line width = 3pt,color = gray](-30cm, 0.2cm) -- (30cm, 0.2cm);
	\end{tikzpicture}
}

\fancypagestyle{standardvertical}{
	\fancyhf{}
	\renewcommand{\headrulewidth}{0pt}
	\fancyhead[LE]{
		\centering \makeDecorativeHeaderlines
		\begin{textblock}{1}[0.5, 0](2.5, 1)
		%\makeDecorativeHeaderlines
		\colorbox{white}{
			\fontsize{20pt}{1.3em}
			\selectfont
			\textcolor{gray}{
				\thepage
			}
		}
		\end{textblock}
	}
	\fancyhead[RO]{
		\centering \makeDecorativeHeaderlines
		\begin{textblock}{1}[0.5, 0](18.5, 1)
		%\makeDecorativeHeaderlines
			\colorbox{white}{
				\fontsize{20pt}{1.3em}
				\selectfont
				\textcolor{gray}{
					\thepage
				}
			}
		%}
		\end{textblock}
	}
}

\fancypagestyle{plain}[standardvertical]{}

\begin{document}
\pagestyle{standardvertical}

\chapter{Lip Sum}
	
\lipsum[1]\\

\lipsum[2]\\

\lipsum[3]\\

\lipsum[4]\\

\lipsum[5]\\

\lipsum[6]\\

\lipsum[7]\\

\lipsum[8]\\

\lipsum[9]\\

\lipsum[1]\\

\lipsum[2]\\

\lipsum[3]\\

\lipsum[4]\\

\lipsum[5]\\

\lipsum[6]\\

\lipsum[7]\\

\lipsum[8]\\

\lipsum[9]\\
\end{document}

Benutzeravatar
Stefan Kottwitz
Admin
Admin
Beiträge: 2500
Registriert: Di 8. Jul 2008, 00:39
Kontaktdaten:

Re: Linien im Header mit TikZ

Beitrag von Stefan Kottwitz »

TikZ ist eine sehr gute Wahl.

Ich finde es super, dass Du ein lauffähiges Minimalbeispiel gepostet hast. Noch besser wäre es, wenn für das Problem nicht relevante Pakete auch rausgelassen werden. Vielleicht nächstes Mal? ;-) Andererseits kriegst Du dann vllt. auch Feedback zur Präambel, das kann man vllt. als ungewollt sehen, dabei ist es von Vorteil, z.B. zu erfahren dass man nicht mehr das german-Paket verwenden sollte, sondern stattdessen \usepackage [ngerman] {babel}. :idea: Oder anders gesagt, ungeeignete Sachen werden durchaus mal kommentiert, damit nichts suboptimales unkommentiert im Forum steht.

Aber zurück zu Thema. :-D Mit TikZ geht es wie gesagt super, man kann mit dem nützlichen kleinen Paket tikzpagenodes direkt den Textbereich als Rechteck-Nodes mit entsprechenden Ankern ansprechen.

Ich baue es mal analog in Dein Dokument ein, so dass Du es gleich verarbeiten kannst, nur wie ich es mir abgespeckter vorstelle:
\documentclass[twoside]{book}
\usepackage{lipsum}
\usepackage{tikz}
\usetikzlibrary{shapes, arrows, positioning}
\usepackage{tikzpagenodes}
\usepackage{fancyhdr}
\setlength{\parindent}{0em}
\definecolor{red}{RGB}{128,64,64}
\definecolor{gray}{RGB}{150,150,150}

\newcommand{\makeDecorativeHeaderlines}{
	\begin{tikzpicture}[remember picture,overlay]
		\draw [line width = 3pt,color = red]
		  (current page header area.south west)
		    -- (current page header area.south east);
		\draw [line width = 3pt,color = gray,
		  transform canvas = {yshift=0.2cm}]
		  (current page header area.south west)
		    -- (current page header area.south east);
	\end{tikzpicture}
}
\fancypagestyle{standardvertical}{
	\fancyhf{}
	\renewcommand{\headrulewidth}{0pt}
	\fancyhead[LE]{
		\makeDecorativeHeaderlines
		\begin{tikzpicture}[remember picture,overlay]
			\node [above left = -0.16cm and 0.2cm of
		  		current page header area.south west,
		  		font = {\fontsize{20pt}{1.3em}\selectfont},
				text=gray] {\thepage};
		\end{tikzpicture}
	}
	\fancyhead[RO]{
		\makeDecorativeHeaderlines
		\begin{tikzpicture}[remember picture,overlay]
			\node [above right = -0.16cm and 0.2cm of
		  		current page header area.south east,
		  		font = {\fontsize{20pt}{1.3em}\selectfont},
				text=gray] {\thepage};
		\end{tikzpicture}
	}
}
\fancypagestyle{plain}[standardvertical]{}
\begin{document}
\pagestyle{standardvertical}
\chapter{Lip Sum}
\lipsum[1-18]
\end{document}
Falls Du TikZ anhand von vielen Beispielen lernen möchtest und die englische Sprache kein Hindernis ist: ich habe ein Buch zu TikZ geschrieben, das voraussichtlich am 9. Juni erscheint, also nagelneu in wenigen Tagen. Du findest es, wenn Du beim Buchhändler nach TikZ oder meinem Namen suchst. (Schreib mir gern eine kurze Mail an stefan@tikz.net, wenn Du Infos dazu gebrauchen kannst.)

Viele Grüße,

Stefan

White_Fox

Re: Linien im Header mit TikZ

Beitrag von White_Fox »

Hui, danke für die flotte Antwort und das fertige Beispiel. :)

Es ist zwar noch nicht ganz das was ich wollte – deine Lösung zieht die Linien bis zum Textbereich, ich hätte sie gerne bis zum Seitenrand – aber ich schaue es mir morgen mal ganz genau an, ich denke ich bekomme es schon so angepasst wie ich es will. Vielen Dank.
Falls Du TikZ anhand von vielen Beispielen lernen möchtest und die englische Sprache kein Hindernis ist: ich habe ein Buch zu TikZ geschrieben, das voraussichtlich am 9. Juni erscheint, also nagelneu in wenigen Tagen.
Mal schauen was und wieviel ich mit TikZ künftig noch machen werde. Ich habe es ja schon recht ausgiebig in Form von CircuiTikZ benutzt, und ein kleinere Zeichnungen habe ich damit auch schon gemacht. Ich wünsche dir mit dem Buch jedenfalls viel Erfolg.

Ich mag LaTex durchaus, auch wenn ich es an einigen Stellen wirklich grauenhaft finde. Sowas wie daß man darauf achten muß welche Pakete in welcher Reihenfolge aufgerufen werden (daher lasse ich vorsorglich auch die ganze Präambel drin), und einmal habe ich mir einiges kaputt gemacht weil ich ohne Not alle Pakete aktualisiert und mir dadurch Inkompatibilitäten reingeholt habe.
Es hat dennoch allerhand Charme, ich habe zumindest vor es auch sonst öfter mal zu benutzen. Gerade für automatisierte Doku oder Ausgaben sonstwelcher Art.

Benutzeravatar
Stefan Kottwitz
Admin
Admin
Beiträge: 2500
Registriert: Di 8. Jul 2008, 00:39
Kontaktdaten:

Re: Linien im Header mit TikZ

Beitrag von Stefan Kottwitz »

White_Fox hat geschrieben:
Sa 27. Mai 2023, 20:53
ich hätte sie gerne bis zum Seitenrand
die Seiten (-Ecken) kriegt man mit dem current page node.
\documentclass[twoside]{book}
\usepackage{lipsum}
\usepackage{tikz}
\usetikzlibrary{shapes, arrows, positioning, calc}
\usepackage{tikzpagenodes}
\usepackage{fancyhdr}
\setlength{\parindent}{0em}
\definecolor{red}{RGB}{128,64,64}
\definecolor{gray}{RGB}{150,150,150}

\newcommand{\makeDecorativeHeaderlines}{
	\begin{tikzpicture}[remember picture,overlay]
		\draw [line width = 3pt, color = red]
		  ($(current page.north west)!(current page header
		        area.south east)!(current page.south west)$)
		    -- ($(current page.north east)!(current page header
		        area.south west)!(current page.south east)$);
		\draw [line width = 3pt,color = gray,
		  transform canvas = {yshift=0.2cm}]
		  ($(current page.north west)!(current page header
		        area.south east)!(current page.south west)$)
		    -- ($(current page.north east)!(current page header
		        area.south west)!(current page.south east)$);
	\end{tikzpicture}
}
\fancypagestyle{standardvertical}{
	\fancyhf{}
	\renewcommand{\headrulewidth}{0pt}
	\fancyhead[LE]{
		\makeDecorativeHeaderlines
		\begin{tikzpicture}[remember picture,overlay]
			\node [above left = -0.16cm and 0.2cm of
		  		current page header area.south west,
		  		font = {\fontsize{20pt}{1.3em}\selectfont},
				text=gray, fill=white] {\thepage};
		\end{tikzpicture}
	}
	\fancyhead[RO]{
		\makeDecorativeHeaderlines
		\begin{tikzpicture}[remember picture,overlay]
			\node [above right = -0.16cm and 0.2cm of
		  		current page header area.south east,
		  		font = {\fontsize{20pt}{1.3em}\selectfont},
				text=gray, fill=white] {\thepage};
		\end{tikzpicture}
	}
}
\fancypagestyle{plain}[standardvertical]{}
\begin{document}
\pagestyle{standardvertical}
\chapter{Lip Sum}
\lipsum[1-18]
\end{document}
Stefan

White_Fox

Re: Linien im Header mit TikZ

Beitrag von White_Fox »

Moin

Mensch, vielen Dank...super. :)
Ich habe mir deinen Beispielcode gerade mal etwas näher angesehen (mein Latexdokument kompiliert noch, das dauert ein wenig), ein paar tolle Tricks sind da drin die ich so noch nicht kannte. yshift als Option z.B. Die Berechnung der Koordinaten im zweiten Beispiel verstehe ich gar nicht, das brauchte ich für meine Graphiken bisher gar nicht, aber dazu werde ich mir mal die TikZ-Dokumentation mal näher ansehen.

PS: Die Kopfzeile sieht jetzt wieder genau so aus wie sie soll, vielen Dank. Was ich verschwiegen habe (Minimalbeispiel halt) ist, daß ich solche Linien auch in der Fußzeile haben wollte. Es war aber kein Problem, das anzupassen, jetzt habe ich Kopf- und Fußzeile wieder so wie vorher.

PPS: Ah, das funktioniert leider nur auf Seiten im Hochformat. Bei Seiten im Querformat (ich habe ein paar Tabellen, relativ breit und lang, und allerhand Schaltplanseiten die ich einbinden will die allesamt im Querformat sind) funktioniert das leider nicht so. Ich erweitere das Minimalbeispiel mal etwas:
%\RequirePackage{fix-cm}
\documentclass[
	twoside
	]{book}
\usepackage[
	a4paper,
	twoside=true,
	top = 2cm,
	inner = 1.5cm,
	outer = 3cm,
	bottom = 4cm
	]{geometry}
\usepackage{pdflscape}
\usepackage{lipsum}
\usepackage[
	absolute
%	, showboxes
	]{textpos}
\usepackage{fancyhdr}
\usepackage{tikz}
\usetikzlibrary{shapes, arrows, positioning, calc}
\usepackage{tikzpagenodes}


%Längen für textpos
\setlength{\TPHorizModule}{1cm}
\setlength{\TPVertModule}{1cm}

%Beginn eines Absatzes nicht einrücken
\setlength{\parindent}{0em}

\definecolor{red}{RGB}{128,64,64}
\definecolor{gray}{RGB}{150,150,150}


\newcommand{\makeDecorativeHeaderlines}{
	\begin{tikzpicture}[remember picture,overlay]
		\draw [line width = 3pt, color = red]
		  ($(current page.north west)!(current page header
		        area.south east)!(current page.south west)$)
		    -- ($(current page.north east)!(current page header
		        area.south west)!(current page.south east)$);
		\draw [line width = 3pt,color = gray,
		  transform canvas = {yshift=0.2cm}]
		  ($(current page.north west)!(current page header
		        area.south east)!(current page.south west)$)
		    -- ($(current page.north east)!(current page header
		        area.south west)!(current page.south east)$);
	\end{tikzpicture}
}
\newcommand{\makeDecorativeFooterlines}{
	\begin{tikzpicture}[remember picture,overlay]
		\draw [line width = 3pt, color = red]
		  ($(current page.north west)!(current page footer
		        area.south east)!(current page.south west)$)
		    -- ($(current page.north east)!(current page footer
		        area.south west)!(current page.south east)$);
		\draw [line width = 3pt,color = gray,
		  transform canvas = {yshift=0.2cm}]
		  ($(current page.north west)!(current page footer
		        area.south east)!(current page.south west)$)
		    -- ($(current page.north east)!(current page footer
		        area.south west)!(current page.south east)$);
	\end{tikzpicture}
}

%Kopf- und Fußzeile für Hochformatseiten
\fancypagestyle{standardvertical}{
	\fancyhf{}
	\renewcommand{\headrulewidth}{0pt}
	\fancyhead[LE]{
		\makeDecorativeHeaderlines
		\begin{tikzpicture}[remember picture,overlay]
			\node [above left = -0.16cm and 0.2cm of
		  		current page header area.south west,
		  		font = {\fontsize{20pt}{1.3em}\selectfont},
				text=gray, fill=white] {\thepage};
		\end{tikzpicture}
	}
	\fancyhead[RO]{
		\makeDecorativeHeaderlines
		\begin{tikzpicture}[remember picture,overlay]
			\node [above right = -0.16cm and 0.2cm of
		  		current page header area.south east,
		  		font = {\fontsize{20pt}{1.3em}\selectfont},
				text=gray, fill=white] {\thepage};
		\end{tikzpicture}
	}
	\fancyfoot[C]{
		\makeDecorativeFooterlines
	}
}

\fancypagestyle{qformat2}{ 
	\fancyhf{}
	\fancyhead[LE]{%
		\begin{textblock}{20}(1, 1.3)
		\rotatebox{90}{
		\makeDecorativeHeaderlines
			\colorbox{white}{
				\fontsize{20pt}{1.3em}
				\selectfont
				\textcolor{gray}{
					\thepage
				}
			}
		}
		\end{textblock}
	}
	\fancyfoot[LO] {%
		\begin{textblock}{20}(19, 1.3)
		\rotatebox{90}{
		\makeDecorativeHeaderlines
			\colorbox{white}{
				\fontsize{20pt}{1.3em}
				\selectfont
				\textcolor{gray}{
					\thepage
				}
			}
		}
		\end{textblock}
	}
	\renewcommand{\headrulewidth}{0pt} 
	\renewcommand{\footrulewidth}{0pt}
}

\fancypagestyle{plain}[standardvertical]{}

\begin{document}
\pagestyle{standardvertical}

\chapter{Lip Sum}
	
\lipsum[1]\\

\lipsum[2]\\

\lipsum[3]\\

\lipsum[4]\\

\lipsum[5]\\

\lipsum[6]\\

\lipsum[7]\\

\lipsum[8]\\

\lipsum[9]\\

\lipsum[1]\\

\lipsum[2]\\

\lipsum[3]\\

\lipsum[4]\\

\lipsum[5]\\

\lipsum[6]\\

\lipsum[7]\\

\lipsum[8]\\

\lipsum[9]\\


\newgeometry{
	top = 2.5cm,
	inner = 1.5cm,
	outer = 3cm,
	bottom = 2.5cm
}

\begin{landscape}
\pagestyle{qformat2}
\fancypagestyle{plain}[qformat2]{}


\chapter{Querformat Lip Sum}
	
\lipsum[1]\\

\lipsum[2]\\

\lipsum[3]\\

\lipsum[4]\\

\lipsum[5]\\

\lipsum[6]\\

\lipsum[7]\\

\lipsum[8]\\

\lipsum[9]\\

\lipsum[1]\\

\lipsum[2]\\

\lipsum[3]\\

\lipsum[4]\\

\lipsum[5]\\

\lipsum[6]\\

\lipsum[7]\\

\lipsum[8]\\

\lipsum[9]\\

\end{landscape}
\end{document}
Mir scheint, daß ich dem tikzpagenodes-Paket irgendwie mitteilen muß, daß Header Area, Footer Area usw. nun anders liegen, finde in der kurzen Doku dazu aber keinen Befehl dazu. Andererseits würde ich erwarten daß ein Befehl, der "Current Page..." lautet, sich das für jede Seite selber neu zusammensammelt. Hast du da vielleicht auch eine Idee?

Benutzeravatar
Stefan Kottwitz
Admin
Admin
Beiträge: 2500
Registriert: Di 8. Jul 2008, 00:39
Kontaktdaten:

Re: Linien im Header mit TikZ

Beitrag von Stefan Kottwitz »

Mit Code von John Kormylo von hier, alles zwischen \makeatletter und \makeatother:
%\RequirePackage{fix-cm}
\documentclass[
	twoside
	]{book}
\usepackage[
	a4paper,
	twoside=true,
	top = 2cm,
	inner = 1.5cm,
	outer = 3cm,
	bottom = 4cm
	]{geometry}
\usepackage{pdflscape}
\usepackage{lipsum}
\usepackage[
	absolute
%	, showboxes
	]{textpos}
\usepackage{fancyhdr}
\usepackage{tikz}
\usetikzlibrary{shapes, arrows, positioning, calc}
\usepackage{tikzpagenodes}

\makeatletter
\newif\if@landscape% add test for landscape mode
\@landscapefalse
\let\old@landscape=\landscape
\def\landscape{\@landscapetrue\old@landscape}
\let\old@endlandscape=\endlandscape
\def\endlandscape{\old@endlandscape
\@landscapefalse}

\expandafter\def\csname pgf@sh@np@current page\endcsname{%
\if@landscape
  \def\southwest{\pgfpointorigin}%
  \def\northeast{\pgfpoint{\pgfsys@thepageheight}{\pgfsys@thepagewidth}}%
\else
  \def\southwest{\pgfpointorigin}%
  \def\northeast{\pgfpoint{\pgfsys@thepagewidth}{\pgfsys@thepageheight}}%
\fi}
\expandafter\def\csname pgf@sh@nt@current page\endcsname{%
\if@landscape{1}{0}{0}{1}{\dimexpr\paperwidth-2.17in}{.5cm}%
\else{1}{0}{0}{1}{0pt}{0pt}%
\fi}
\def\pgf@sh@nt@pagenodes{%
\if@landscape{0}{-1}{1}{0}{\dimexpr\paperheight-2.17in}{\dimexpr\paperwidth+0.5cm}%
\else{1}{0}{0}{1}{0pt}{0pt}%
\fi}
\def\@newtikzpagenode#1{%
    \expandafter\let\csname pgf@sh@ns@#1\expandafter\endcsname\csname pgf@sh@ns@current page\endcsname
    \expandafter\let\csname pgf@sh@nt@#1\endcsname\pgf@sh@nt@pagenodes
    \expandafter\let\csname pgf@sh@pi@#1\expandafter\endcsname\csname pgf@sh@pi@current page\endcsname
    \expandafter\def\csname pgf@sh@np@#1\endcsname
}
\@newtikzpagenode{current page text area}{%
\if@landscape
    \def\southwest{\pgfpoint{\current@textarea@left}{\paperwidth-\current@textarea@top-\linewidth}}%
    \def\northeast{\pgfpoint{\current@textarea@left+\textwidth}{\paperwidth-\current@textarea@top}}%
\else
    \def\southwest{\pgfpoint{\current@textarea@left}{\paperheight-\current@textarea@top-\textheight}}%
    \def\northeast{\pgfpoint{\current@textarea@left+\textwidth}{\paperheight-\current@textarea@top}}%
\fi}
\@newtikzpagenode{current page header area}{%
\if@landscape
    \def\southwest{\pgfpoint{\current@textarea@left}{\paperwidth-\current@textarea@top+\headsep}}%
    \def\northeast{\pgfpoint{\current@textarea@left+\textwidth}{\paperwidth-\current@textarea@top+\headsep+\headheight}}%
\else
    \def\southwest{\pgfpoint{\current@textarea@left}{\paperheight-\current@textarea@top+\headsep}}%
    \def\northeast{\pgfpoint{\current@textarea@left+\textwidth}{\paperheight-\current@textarea@top+\headsep+\headheight}}%
\fi}
\@newtikzpagenode{current page footer area}{%
\if@landscape
    \def\southwest{\pgfpoint{\current@textarea@left}{\paperwidth-\current@textarea@top-\linewidth-\footskip}}%
    \def\northeast{\pgfpoint{\current@textarea@left+\textwidth}{\paperwidth-\current@textarea@top-\linewidth-\footskip+\headheight}}%
\else
    \def\southwest{\pgfpoint{\current@textarea@left}{\paperheight-\current@textarea@top-\textheight-\footskip}}%
    \def\northeast{\pgfpoint{\current@textarea@left+\textwidth}{\paperheight-\current@textarea@top-\textheight-\footskip+\headheight}}%
\fi}
\@newtikzpagenode{current page marginpar area}{%
\if@landscape
    \def\southwest{\pgfpoint
        {\current@textarea@left\ifoddpageoroneside+\textwidth+\marginparsep\else-\marginparsep-\marginparwidth\fi}%
        {\paperwidth-\current@textarea@top-\linewidth}%
    }%
    \def\northeast{\pgfpoint
        {\current@textarea@left\ifoddpageoroneside+\textwidth+\marginparsep+\marginparwidth\else-\marginparsep\fi}%
        {\paperwidth-\current@textarea@top}%
    }%
\else
    \def\southwest{\pgfpoint
        {\current@textarea@left\ifoddpageoroneside+\textwidth+\marginparsep\else-\marginparsep-\marginparwidth\fi}%
        {\paperheight-\current@textarea@top-\textheight}%
    }%
    \def\northeast{\pgfpoint
        {\current@textarea@left\ifoddpageoroneside+\textwidth+\marginparsep+\marginparwidth\else-\marginparsep\fi}%
        {\paperheight-\current@textarea@top}%
    }%
\fi}
\newcommand{\lsrotate}{\if@landscape 90\else 0\fi}
%\tikzset{every node/.style={rotate=\lsrotate}}% this will also affect nodes in the text area
\makeatother

%Längen für textpos
\setlength{\TPHorizModule}{1cm}
\setlength{\TPVertModule}{1cm}

%Beginn eines Absatzes nicht einrücken
\setlength{\parindent}{0em}

\definecolor{red}{RGB}{128,64,64}
\definecolor{gray}{RGB}{150,150,150}


\newcommand{\makeDecorativeHeaderlines}{
	\begin{tikzpicture}[remember picture,overlay]
		\draw [line width = 3pt, color = red]
		  ($(current page.north west)!(current page header
		        area.south east)!(current page.south west)$)
		    -- ($(current page.north east)!(current page header
		        area.south west)!(current page.south east)$);
		\draw [line width = 3pt,color = gray,
		  transform canvas = {yshift=0.2cm}]
		  ($(current page.north west)!(current page header
		        area.south east)!(current page.south west)$)
		    -- ($(current page.north east)!(current page header
		        area.south west)!(current page.south east)$);
	\end{tikzpicture}
}
\newcommand{\makeDecorativeFooterlines}{
	\begin{tikzpicture}[remember picture,overlay]
		\draw [line width = 3pt, color = red]
		  ($(current page.north west)!(current page footer
		        area.south east)!(current page.south west)$)
		    -- ($(current page.north east)!(current page footer
		        area.south west)!(current page.south east)$);
		\draw [line width = 3pt,color = gray,
		  transform canvas = {yshift=0.2cm}]
		  ($(current page.north west)!(current page footer
		        area.south east)!(current page.south west)$)
		    -- ($(current page.north east)!(current page footer
		        area.south west)!(current page.south east)$);
	\end{tikzpicture}
}

%Kopf- und Fußzeile für Hochformatseiten
\fancypagestyle{standardvertical}{
	\fancyhf{}
	\renewcommand{\headrulewidth}{0pt}
	\fancyhead[LE]{
		\makeDecorativeHeaderlines
		\begin{tikzpicture}[remember picture,overlay]
			\node [above left = -0.16cm and 0.2cm of
		  		current page header area.south west,
		  		font = {\fontsize{20pt}{1.3em}\selectfont},
				text=gray, fill=white] {\thepage};
		\end{tikzpicture}
	}
	\fancyhead[RO]{
		\makeDecorativeHeaderlines
		\begin{tikzpicture}[remember picture,overlay]
			\node [above right = -0.16cm and 0.2cm of
		  		current page header area.south east,
		  		font = {\fontsize{20pt}{1.3em}\selectfont},
				text=gray, fill=white] {\thepage};
		\end{tikzpicture}
	}
	\fancyfoot[C]{
		\makeDecorativeFooterlines
	}
}

\fancypagestyle{qformat2}{ 
	\fancyhf{}
	\fancyhead[LE]{%
		\begin{textblock}{20}(1, 1.3)
		\rotatebox{90}{
		\makeDecorativeHeaderlines
			\colorbox{white}{
				\fontsize{20pt}{1.3em}
				\selectfont
				\textcolor{gray}{
					\thepage
				}
			}
		}
		\end{textblock}
	}
	\fancyfoot[LO] {%
		\begin{textblock}{20}(19, 1.3)
		\rotatebox{90}{
		\makeDecorativeHeaderlines
			\colorbox{white}{
				\fontsize{20pt}{1.3em}
				\selectfont
				\textcolor{gray}{
					\thepage
				}
			}
		}
		\end{textblock}
	}
	\renewcommand{\headrulewidth}{0pt} 
	\renewcommand{\footrulewidth}{0pt}
}

\fancypagestyle{plain}[standardvertical]{}

\begin{document}
\pagestyle{standardvertical}

\chapter{Lip Sum}
	
\lipsum[1]\\

\lipsum[2]\\

\lipsum[3]\\

\lipsum[4]\\

\lipsum[5]\\

\lipsum[6]\\

\lipsum[7]\\

\lipsum[8]\\

\lipsum[9]\\

\lipsum[1]\\

\lipsum[2]\\

\lipsum[3]\\

\lipsum[4]\\

\lipsum[5]\\

\lipsum[6]\\

\lipsum[7]\\

\lipsum[8]\\

\lipsum[9]\\


\newgeometry{
	top = 2.5cm,
	inner = 1.5cm,
	outer = 3cm,
	bottom = 2.5cm
}

\begin{landscape}
\pagestyle{qformat2}
\fancypagestyle{plain}[qformat2]{}


\chapter{Querformat Lip Sum}
	
\lipsum[1]\\

\lipsum[2]\\

\lipsum[3]\\

\lipsum[4]\\

\lipsum[5]\\

\lipsum[6]\\

\lipsum[7]\\

\lipsum[8]\\

\lipsum[9]\\

\lipsum[1]\\

\lipsum[2]\\

\lipsum[3]\\

\lipsum[4]\\

\lipsum[5]\\

\lipsum[6]\\

\lipsum[7]\\

\lipsum[8]\\

\lipsum[9]\\

\end{landscape}
\end{document}

White_Fox

Re: Linien im Header mit TikZ

Beitrag von White_Fox »

Sorry, mein Fehler. Ich hätte vielleicht noch dazu schreiben sollen was ich da eigentlich haben will. Wenn ich die Latexausgabe bei deinem letzten MWE aufrufe, sind die Linien in den Querformatseiten raus, da bräuchte ich nur auf den Aufruf \makeDecorativeHeaderLines verzichten.

Tatsächlich hätte ich die Linien aber gerne an den äußeren Längsseiten.

Benutzeravatar
Stefan Kottwitz
Admin
Admin
Beiträge: 2500
Registriert: Di 8. Jul 2008, 00:39
Kontaktdaten:

Re: Linien im Header mit TikZ

Beitrag von Stefan Kottwitz »

Ich sehe die Linien längs der Seiten 2 und 3:
linien.png
Klick mal hier auf den LaTeX-Ausgabe-Button. Bei Dir musst Du ggf. mehrfach übersetzen wegen der Speicherung der Koordinaten in der aux-Datei.

Stefan

White_Fox

Re: Linien im Header mit TikZ

Beitrag von White_Fox »

Das tat ich ja, Seite zwei und drei finde ich ja auch völlig in Ordnung, das ist genau so wie ich es haben möchte. :)

Ich meine eher Seite fünf, sechs und sieben. Da möchte ich diese Linien auch haben, an der jeweils äußeren Längsseite einer Seite. Bzw. wenn man das Buch dann um 90° drehen würde, am oberen und unteren Rand der Doppelseite, dort wo sich die Seitenzahlen befinden.

Benutzeravatar
Stefan Kottwitz
Admin
Admin
Beiträge: 2500
Registriert: Di 8. Jul 2008, 00:39
Kontaktdaten:

Re: Linien im Header mit TikZ

Beitrag von Stefan Kottwitz »

Ah, Seiten verwechselt, das war so gezoomt dass ich es versehentlich für querformatig hielt.

Das lässt sich sicher noch irgendwie anpassen, weil wenn ich \showboxes wie John definiere und aufrufe, werden die Boxen eigentlich richtig angezeigt.

Mangels Zeit kann ich da aber gerade nicht dran rumbasteln, kann mir aber vorstellen, dass man sich die betreffenden Punkte für die Linie analog definieren kann (ohne die ganzen Nodes mit Ankern zu definieren) oder man macht das gleiche noch analog für den current page node.

Stefan

Antworten