Seite 1 von 1

scrlayer contents Variableninhalte überschreiben/-sprechen/-lagern sich

Verfasst: Mi 14. Okt 2020, 14:25
von maximilianminimalis

Hallo zusammen,

bin neu und auf Empfehlung von Markus hier ...

Mir scheint's als übersprechen/überschreiben sich neuerdings die "contents-" Inhalte über Layergrenzen hinweg.

Der folgende Code funktionierte die letzten 1,5 Jahren fehlerfrei - neuerdings leider nicht mehr (der Inhalt des ersten Layers taucht neuerdings im zweiten/dritten Layer auf). Erklären kann ich mir dies leider nicht. Vielleicht/hoffentlich weiß jemand von Euch warum und kann mir weiterhelfen.

Vielen Dank!

Umgebung: TL2020 (Up2date).
Compiler: LuaLatex.
Editor: TexStudio 3.x

Code: Alles auswählen

\RequirePackage{luatex85}
\documentclass[draft]{scrartcl}

\usepackage[%
	paperheight=294mm,
	paperwidth=210mm,
	%showcrop,
	%showframe,
	margin=0cm,
	noheadfoot,
	nomarginpar,]%
{geometry}

\usepackage{fontspec}
\usepackage{xcolor}
\usepackage{blindtext}

\usepackage{tikz}
\usetikzlibrary{fadings}

\newcommand\fadingtext[3][]{%
	\begin{tikzfadingfrompicture}[name=fading letter]%
		\node[text=transparent!0,inner xsep=0pt,outer xsep=0pt,#1] {#3};
	\end{tikzfadingfrompicture}%
	\begin{tikzpicture}[baseline=(textnode.base)]%
		\node[inner sep=0pt,outer sep=0pt,{#1}](textnode){\phantom{#3}};
		\shade[path fading=fading letter,#2,fit fading=false]
		(textnode.south west) rectangle (textnode.north east);%
	\end{tikzpicture}%
}

%Hintergrundebenengestaltung mit tikz:
\tikzset{%
	seite/.style = {%
		text=black,
		shade,%shading=axis,shading angle=45,
		left color=green,
		right color=orange,
		middle color=brown,
		minimum height=294mm,
		minimum width=210mm,
		anchor=south west
	},
}

\usepackage{scrlayer}
\DeclareNewLayer[%
	background,
	align=tl,
	hoffset=0mm,
	voffset=0mm,
	width=\paperwidth,
	height=\paperheight,]%
{seite}

\DeclareNewLayer[%
	foreground,
	align=tl,
	hoffset=5mm,
	voffset=5mm,
	width=200mm,
	height=142mm,]%
{info}

\DeclareNewLayer[%
	foreground,
	align=tl,
	hoffset=5mm,
	voffset=152mm,
	width=200mm,
	height=65mm,]%
{nummer}

\DeclareNewLayer[%
	foreground,
	align=tl,
	hoffset=5mm,
	voffset=222mm,
	width=200mm,
	height=69mm,]%
{name}

%Hintergrundebenengestaltung anwenden:
\newcommand{\seite}{%
	\begin{tikzpicture}%
		\node (seite) [seite] {};%
	\end{tikzpicture}%
}
\ModifyLayer[contents=\seite]{seite}

%Inhalte den Vordergrundebenen zuweisen:
\newcommand{\info}{%
	\centering%
	\fadingtext[scale=1.0]{%
		%shading=axis, shading angle=45,
		left color=red,%
		right color=yellow,%
		middle color=blue}%
	{%
		\parbox{0.80\layerwidth}{%
			\noindent
			\blindtext[1]
		}%<-parbox
	}%<-fadingtext
	\par%<-wg. centering!
}
\ModifyLayer[contents=\info]{info}

\newcommand{\nummer}{%
	\centering
	\fadingtext[scale=1.0]{%<- funktioniert nicht [mehr]
		left color=red,%
		right color=yellow,%
		middle color=blue}%
	{%
		{\fontsize{40pt}{\baselineskip}\selectfont
			1234}%
	}%<-\fadingtext
	\par%<-wg. centering!
}
\ModifyLayer[contents=\nummer,]{nummer}

\newcommand{\name}{%
	\centering%
%	\fadingtext[scale=1.0]{%<- funktioniert [auch] nicht [mehr]
%		left color=red,%
%		right color=yellow,%
%		middle color=blue}%
	{%
		{\fontsize{40pt}{\baselineskip}\selectfont%
			oror}%
	}%
	\par%<-wg. centering!
}
\ModifyLayer[contents=\name,]{name}

\DeclareNewPageStyleByLayers{seitenStil}{%
	seite,%
	info,%
	nummer,%
	name,%
}
\pagestyle{seitenStil}

\begin{document}
\mbox{}%
\end{document}

Viele Grüße
MM


Re: scrlayer contents Variableninhalte überschreiben/-sprechen/-lagern sich

Verfasst: Do 15. Okt 2020, 00:25
von u_fischer

also ohne Bilder, die zeigen, wie es richtig aussieht und was nun falsch ist, und was der erste und was der zweite Layer ist, ist das eine ziemlich mühselig Frage.


Re: scrlayer contents Variableninhalte überschreiben/-sprechen/-lagern sich

Verfasst: Do 15. Okt 2020, 00:33
von u_fischer

Meine Kristallkugel sagt, dass du dieses Problem hast: https://tex.stackexchange.com/a/566619/2388

Mache deine fadings eindeutig, mit einem Zähler

Code: Alles auswählen

\newcounter{fadingcnt}
\newcommand\fadingtext[3][]{\stepcounter{fadingcnt}%
	\begin{tikzfadingfrompicture}[name=fading letter\arabic{fadingcnt}]%
		\node[text=transparent!0,inner xsep=0pt,outer xsep=0pt,#1] {#3};
	\end{tikzfadingfrompicture}%
	\begin{tikzpicture}[baseline=(textnode.base)]%
		\node[inner sep=0pt,outer sep=0pt,{#1}](textnode){\phantom{#3}};
		\shade[path fading=fading letter\arabic{fadingcnt},#2,fit fading=false]
		(textnode.south west) rectangle (textnode.north east);%
	\end{tikzpicture}%
}

Re: scrlayer contents Variableninhalte überschreiben/-sprechen/-lagern sich

Verfasst: Do 15. Okt 2020, 00:45
von maximilianminimalis

Der Counter-Trick funktioniert bestens. Danke sehr!


Re: scrlayer contents Variableninhalte überschreiben/-sprechen/-lagern sich

Verfasst: Do 15. Okt 2020, 08:01
von gast
maximilianminimalis hat geschrieben:
Mi 14. Okt 2020, 14:25

bin neu und auf Empfehlung von Markus hier ...

Wobei Markus auch darauf hingewiesen hat, dass scrlayer noch nie Layerinhalte an den definierten Layergrenzen abgeschnitten hat und das deshalb eher kein KOMA-Script sondern ein Problem mit dem Umgang mit TikZ/pgf ist … Allerdings dachte er dabei eher an Clipping als Fading, was Ulrike dankenswerter Weise als den besseren Weg erkannt und erklärt hat.

Allgemein sei daher der Umstand festgehalten, dass die Layer von scrlayer genau wie TeX-Boxen oder LaTeX's \parbox kein automatisches Clipping beinhalten.