![Поле с цветовым градиентом в заголовке (KomaScript) на странице с новым разделом](https://rvso.com/image/420018/%D0%9F%D0%BE%D0%BB%D0%B5%20%D1%81%20%D1%86%D0%B2%D0%B5%D1%82%D0%BE%D0%B2%D1%8B%D0%BC%20%D0%B3%D1%80%D0%B0%D0%B4%D0%B8%D0%B5%D0%BD%D1%82%D0%BE%D0%BC%20%D0%B2%20%D0%B7%D0%B0%D0%B3%D0%BE%D0%BB%D0%BE%D0%B2%D0%BA%D0%B5%20(KomaScript)%20%D0%BD%D0%B0%20%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B5%20%D1%81%20%D0%BD%D0%BE%D0%B2%D1%8B%D0%BC%20%D1%80%D0%B0%D0%B7%D0%B4%D0%B5%D0%BB%D0%BE%D0%BC.png)
Я пытаюсь создать двусторонний документ с помощью 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}
В результате получается такой стиль заголовка:
Я хотел бы добиться трех вещей:
Создатьпользовательский стиль страницыв данном MWE, который я могу активировать на определенных страницах (где начинаются новые разделы), который содержит цветовую полосу (которую я указываю ниже) и номер страницы
Создайтецветовая полоса с цветовым градиентом позади нумератора страниц в заголовке(было бы неплохо, если бы цветовая полоса могла также выходить за пределы области заголовка во внутреннем или внешнем направлении, в зависимости от вкуса)
Изменитьtextcolor страницы должен быть белым, поэтому у меня есть белый текст перед цветовой полосой.
Чтобы наглядно представить, что я ищу, я отредактировал важную страницу своего 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
с опцией open=right
. Итак, вот дополнительное предложение, предполагающее, что pagestyle highlights
использует те же слои, что и pagestyle plain.scrheadings
и новый слой 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}
Обновлять(относительно комментария ниже)
Вы можете использовать параметры addheight
, addhoffset
, addvoffset
, addwidth
, height
, hoffset
, voffset
и width
для настройки положения и размера нового определенного слоя с помощью правила фона.
Если вы хотите увеличить фоновый рисунок заголовка по вертикали, вы можете использовать параметры addvoffset
и addheight
в определении слоя.
Пример для второго 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}
Обратите внимание, что вам понадобится второй слой, если фон будет использоваться в двустороннем документе и на четных страницах.