新しいセクションがあるページのヘッダーに色のグラデーションがあるボックス (KomaScript)

新しいセクションがあるページのヘッダーに色のグラデーションがあるボックス (KomaScript)

KomaScriptで両面文書を作成しようとしています。新しいセクションが始まるすべてのページに何かを追加したいです。まず、新しいページスタイルを作成しました。この郵便受け. そこに示されている例を修正してみました。これまでのところ、次の操作を実行しました。

\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}

結果として、次のスタイルのヘッダーが生成されます。

これまでの結果

私は次の3つのことを達成したいと思っています。

  1. 作成するカスタムページスタイル特定のページ(新しいセクションが始まるページ)でアクティブ化できるMWEには、カラーバー(以下で指定)とページ番号が含まれています。

  2. 作成するヘッダーのページ番号の後ろのカラーグラデーション付きカラーバー(カラーバーが、好みに応じて、ヘッダー領域から内側または外側に拡張できると便利です)

  3. 変更ページマークのテキストカラーを白にする、カラーバーの前に白いテキストが表示されます。

私が求めているものを視覚化するために、MWE の重要なページを編集しました。私が達成したいことは次のとおりです。 ここに画像の説明を入力してください

tikz上記のリンクでも提案されているように、私はすでに次の方法で新しいページスタイルを作成しようとしました。ただし、それを機能させるには経験が足りません。

\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}

また、この方法では、必要な場所にページ番号を取得する方法さえわかりません。

おそらく皆さんの中に、これを以前にやったことがある人や、この問題を十分理解していて私を助けてくれる人がいるかもしれません。

答え1

残念ながら、望ましい結果が何であるかはよくわかりません。ただし、ヘッダーの背景に新しいレイヤーを定義することをお勧めします。

\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}

次に、新しく定義したページスタイルの先頭にこのレイヤーを追加できます。

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

例:

\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}

ここに画像の説明を入力してください

しかし、ドキュメント内のすべてのセクションを新しい奇数ページで開始する必要がある場合は、scrreprtオプションを使用してクラスに切り替えることができます。したがって、pagestyle がpagestyle と同じレイヤーと新しいレイヤーを使用すると仮定open=rightした場合の追加の提案を次に示します。highlightsplain.scrheadingshighlight.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}

ここに画像の説明を入力してください


アップデート(以下のコメントに関して)

addheight、、、、、、およびaddhoffsetのオプションを使用して、addvoffset背景ルールで新しく定義されたレイヤーの位置とサイズを調整できます。addwidthheighthoffsetvoffsetwidth

ヘッダー背景ルールを垂直方向に拡大したい場合は、レイヤー定義でオプションaddvoffsetとを使用できます。addheight

上記の 2 番目の MWE の例:

\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}

ここに画像の説明を入力してください

背景の罫線を内側のテキストから外側の紙の境界線まで伸ばす必要がある場合は、hoffset次の項目を変更せずに調整します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}

ここに画像の説明を入力してください

両面文書の偶数ページでも背景を使用する場合は、2 番目のレイヤーが必要になることに注意してください。

関連情報