Box mit Farbverlauf im Header (KomaScript) auf Seite mit neuem Abschnitt

Box mit Farbverlauf im Header (KomaScript) auf Seite mit neuem Abschnitt

Ich versuche, ein zweiseitiges Dokument mit KomaScript zu erstellen. Ich möchte jeder Seite, auf der ein neuer Abschnitt beginnt, etwas Besonderes hinzufügen. Ich habe mit der Erstellung eines neuen Seitenstils gemäßdieser Beitrag. Ich habe versucht, das dort angegebene Beispiel abzuändern. Bisher habe ich Folgendes getan:

\documentclass[12pt,a4paper,ngerman, twoside]{scrartcl}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc} 
\usepackage{lmodern} 
\usepackage[ngerman]{babel} 
\usepackage[left=3.8cm,right=2.2cm,top=3cm,bottom=3cm]{geometry}  
\usepackage{xcolor}

\usepackage[headsepline, automark]{scrlayer-scrpage}
\clearpairofpagestyles
\renewcommand*\pagemark{{\usekomafont{pagenumber}Seite\nobreakspace\thepage}}
\automark[section]{section}
\ihead*{\headmark}
\ohead*{\pagemark}
\chead{}
\cfoot[]{}
\ofoot[]{}
\ifoot[]{}

\newpairofpagestyles{highlights}{
    \chead{}
    \KOMAoptions{headsepline=false}
    \ohead*{\colorbox{blue!15}{%
            \makebox[\dimexpr\linewidth-2\fboxsep][l]{\color{white}%
                \hfill
                \pagemark}
        }
    }
}

\begin{document}
\section{Section 1}
Some text.
\cleardoublepage
\thispagestyle{highlights}
\section{Section 2}
Some text.
\end{document}

Das Ergebnis ist folgender Kopfzeilenstil:

Ergebnis bisher

Ich möchte drei Dinge erreichen:

  1. Ein ... kreierenbenutzerdefinierter Seitenstilim angegebenen MWE, das ich auf bestimmten Seiten aktivieren kann (wo neue Abschnitte beginnen), das die Farbleiste (die ich im Folgenden spezifiziere) und die Seitennummer enthält

  2. Erstellen Sie dieFarbbalken mit Farbverlauf hinter dem Seitennummerierer in der Kopfzeile(schön wäre es, wenn die Farbleiste optional auch nach innen oder außen über den Headerbereich hinausreichen könnte, je nach Geschmack)

  3. Ändere dasTextfarbe der Seitenmarkierung soll weiß sein, sodass ich weißen Text vor der Farbleiste habe.

Um zu visualisieren, was ich will, habe ich die wichtige Seite meines MWE bearbeitet;das ist, was ich erreichen möchte: Bildbeschreibung hier eingeben

Ich habe bereits versucht, einen neuen Seitenstil auf folgende Weise zu erstellen, was auch im obigen Link vorgeschlagen wurde. Ich habe tikzjedoch nicht genug Erfahrung damit, um es zum Laufen zu bringen:

\usepackage{tikz}
\DeclareNewLayer[background,head,
contents={\hspace*{0cm}%
    \tikz{
        \fill[shade,left color=blue!0,right color=blue!20,right color=blue!70] (0,0)rectangle(20cm ,{1.4cm});
        \node[rotate=0,font=\bfseries] at({\textwidth-0.9cm},{0})
        {\ppagemark};
}}
]{highlights.bg}
\DeclareNewPageStyleByLayers{highlights}{highlights.bg}

Außerdem weiß ich bei diesem Ansatz nicht einmal, wie ich die Seitenzahl dorthin bekomme, wo ich sie haben möchte.

Vielleicht hat jemand von euch das schon einmal gemacht oder kennt sich gut genug mit der Materie aus, um mir weiterhelfen zu können.

Antwort1

Leider verstehe ich nicht ganz, was das gewünschte Ergebnis sein soll. Ich würde aber vorschlagen, eine neue Ebene für den Header-Hintergrund zu definieren:

\DeclareNewLayer[
  background,
  head,
  hoffset=0pt,
  width=\paperwidth,
  mode=picture,
  contents={\putLL{\tikz{
    \ifodd \value{page}
      \fill[shade,left color=blue!0,right color=blue!70]
      (0,0)rectangle(\the\layerwidth,\the\layerheight);
    \else
      \fill[shade,left color=blue!70,right color=blue!0]
      (0,0)rectangle(\the\layerwidth,\the\layerheight);
    \fi
  }}
}
]{highlights.bg}

Dann können Sie diese Ebene am Anfang Ihres neu definierten Seitenstils hinzufügen:

\newpairofpagestyles{highlights}{
  \ohead{\pagemark}
  \KOMAoptions{headsepline=false}
  \addtokomafont{pagenumber}{\bfseries\color{white}}
}
\AddLayersAtBeginOfPageStyle{highlights}{highlights.bg}

Beispiel:

\documentclass[12pt,ngerman, twoside]{scrartcl}

\usepackage[T1]{fontenc}
%\usepackage[utf8]{inputenc}% needed with older TeX distributions
\usepackage{lmodern} 
\usepackage{babel} 
\usepackage[left=3.8cm,right=2.2cm,top=3cm,bottom=3cm]{geometry}  
\usepackage{tikz}% loads xcolor, graphicx etc.

\usepackage[headsepline]{scrlayer-scrpage}
\clearpairofpagestyles
\renewcommand*\pagemark{{\usekomafont{pagenumber}Seite\nobreakspace\thepage}}
\automark[section]{section}
\ihead{\headmark}
\ohead*{\pagemark}

\newpairofpagestyles{highlights}{
  \ohead{\pagemark}
  \KOMAoptions{headsepline=false}
  \addtokomafont{pagenumber}{\bfseries\color{white}}
}
\DeclareNewLayer[
  background,
  head,
  hoffset=0pt,
  width=\paperwidth,
  mode=picture,
  contents={\putLL{\tikz{
    \ifodd \value{page}
      \fill[shade,left color=blue!0,right color=blue!70]
      (0,0)rectangle(\the\layerwidth,\the\layerheight);
    \else
      \fill[shade,left color=blue!70,right color=blue!0]
      (0,0)rectangle(\the\layerwidth,\the\layerheight);
    \fi
  }}
}
]{highlights.bg}
\AddLayersAtBeginOfPageStyle{highlights}{highlights.bg}

\usepackage{blindtext}% only for dummy text
\begin{document}
\section{Section 1}
Some text.

\cleardoublepage
\thispagestyle{highlights}
\blinddocument
\end{document}

Bildbeschreibung hier eingeben

Wenn jedoch jeder Abschnitt in Ihrem Dokument auf einer neuen ungeraden Seite beginnen soll, können Sie scrreprtmit der Option zur Klasse wechseln open=right. Hier ist also ein zusätzlicher Vorschlag, vorausgesetzt, dass pagestyle highlightsdieselben Ebenen verwendet wie pagestyle plain.scrheadingsund die neue Ebene highlight.bg:

\documentclass[12pt,ngerman, twoside,open=right]{scrreprt}
\RedeclareSectionCommand[beforeskip=0pt,afterindent=false]{chapter}

\usepackage[T1]{fontenc}
%\usepackage[utf8]{inputenc}% needed with older TeX distributions
\usepackage{lmodern} 
\usepackage{babel} 
\usepackage[left=3.8cm,right=2.2cm,top=3cm,bottom=3cm]{geometry}  
\usepackage{tikz}% loads xcolor, graphicx etc.

\usepackage[headsepline]{scrlayer-scrpage}
\clearpairofpagestyles
\renewcommand*\pagemark{{\usekomafont{pagenumber}Seite\nobreakspace\thepage}}
\automark[chapter]{chapter}
\ihead{\headmark}
\ohead*{\pagemark}

\DeclareNewLayer[
  background,
  oddpage,% not on even pages in two-sided documents
  head,
  hoffset=0pt,
  width=\paperwidth,
  mode=picture,
  contents={\putLL{\tikz{
    \fill[shade,left color=blue!0,right color=blue!70]
      (0,0)rectangle(\the\layerwidth,\the\layerheight);
  }}
}
]{highlights.bg}
\DeclareNewPageStyleByLayers{highlights}{highlights.bg}
\ForEachLayerOfPageStyle{plain.scrheadings}{\AddLayersToPageStyle{highlights}{#1}}% <- add all plain.scrheadings layers to the new page style
\AddToLayerPageStyleOptions{highlights}{oninit=\addtokomafont{pagenumber}{\bfseries\color{white}}\KOMAoptions{headsepline=false}}

\renewcommand\chapterpagestyle{highlights}

\usepackage{blindtext}% only for dummy text
\begin{document}
\chapter{Chapter 1}
Some text.
\blinddocument
\end{document}

Bildbeschreibung hier eingeben


Aktualisieren(bezüglich eines Kommentars unten)

addheightMit den Optionen , addhoffset, addvoffset, addwidth, height, hoffset, voffsetund können Sie widthdie Position und Größe der neu definierten Ebene mit der Hintergrundregel anpassen.

Wenn Sie die Hintergrundlinie der Kopfzeile vertikal vergrößern möchten, können Sie die Optionen addvoffsetund addheightin der Ebenendefinition verwenden.

Beispiel für das zweite MWE oben:

\DeclareNewLayer[
  background,
  oddpage,% not on even pages in two-sided documents
  head,
  addvoffset=2mm,% moves the layer 2mm down
  addheight=4mm,% enlarges the height of the layer by 4mm
  hoffset=0pt,
  width=\paperwidth,
  mode=picture,
  contents={\putLL{\tikz{
    \fill[shade,left color=blue!0,right color=blue!70]
      (0,0)rectangle(\the\layerwidth,\the\layerheight);
  }}
}
]{highlights.bg}

Bildbeschreibung hier eingeben

Wenn die Hintergrundlinie vom inneren Text bis zum äußeren Papierrand reichen soll, nicht verändern hoffsetund anpassen width:

\DeclareNewLayer[
  background,
  oddpage,% not on even pages in two-sided documents
  head,
  addvoffset=2mm,% moves the layer 2mm down
  addheight=4mm,% enlarges the height of the layer by 4mm
  %hoffset=0pt,% <- removed
  width=\paperwidth-1in-\hoffset-\oddsidemargin,% <- changed
  mode=picture,
  contents={\putLL{\tikz{
    \fill[shade,left color=blue!0,right color=blue!70]
      (0,0)rectangle(\the\layerwidth,\the\layerheight);
  }}
}
]{highlights.bg}

Bildbeschreibung hier eingeben

Beachten Sie, dass Sie eine zweite Ebene benötigen, wenn der Hintergrund in einem doppelseitigen Dokument auch auf geraden Seiten verwendet werden soll.

verwandte Informationen