Я хотел бы добавить изображение на поля рядом с заголовком. Нижняя часть изображения должна быть выровнена с базовой линией заголовка. В моем MWE (см. ниже) верхняя часть изображения скорректирована с верхней частью заголовка.
Как настроить изображение на базовой линии?
Предлагаете ли вы другие улучшения? Например, имеет ли смысл использовать marginnote
в ihead
?
МВЭ:
\documentclass{scrreprt}
\usepackage{blindtext, graphicx, marginnote}
\usepackage[twoside = true]{geometry}
\usepackage[automark, headsepline, footsepline, plainfootsepline]{scrlayer-scrpage}
\ihead{%
\marginnote{%
\includegraphics[width=\marginparwidth]{example-image-a}%
}
}
\begin{document}
\Blinddocument
\end{document}
решение1
Я бы не использовал, marginnote
а только scrlayer-scrpage
:
\documentclass{scrreprt}
\usepackage{mwe,graphicx}
\usepackage[twoside = true]{geometry}
\usepackage[automark, headsepline, footsepline, plainfootsepline]{scrlayer-scrpage}
\rohead{\headmark\makebox[0pt][l]{\hskip\marginparsep\includegraphics[width=\marginparwidth]{example-image-a}}}
\lehead{\makebox[0pt][r]{\includegraphics[width=\marginparwidth]{example-image-a}\hskip\marginparsep}\headmark}
\begin{document}
\Blinddocument
\end{document}
Вы также можете добавить свой собственный слой к стилю страницы scrheadings
, и если вы хотите, чтобы изображение отображалось и на обычных страницах plain.scrheadings
:
\documentclass{scrreprt}
\usepackage{mwe,graphicx}
\usepackage[twoside = true]{geometry}
\usepackage[automark, headsepline, footsepline, plainfootsepline]{scrlayer-scrpage}
\DeclareNewLayer[background,
head,
addhoffset=\ifodd\value{page}\textwidth+\marginparsep\else-\marginparwidth-\marginparsep\fi,
width=\marginparwidth,% optional reduce layer width
contents={\includegraphics[width=\marginparwidth]{example-image-a}}]{image}
\AddLayersToPageStyle{scrheadings}{image}
%\AddLayersToPageStyle{plain.scrheadings}{image}
\begin{document}
\Blinddocument
\end{document}
Результат тот же, но вам не нужно разделять на \ihead
и \lehead
. \rohead
И вам просто нужно активировать одну закомментированную строку, чтобы активировать изображение для простых страниц.
Кстати: я бы предложил поместить изображение один раз в рамку и использовать эту рамку на каждой странице:
\documentclass{scrreprt}
\usepackage{mwe,graphicx}
\usepackage[twoside = true]{geometry}
\usepackage[automark, headsepline, footsepline, plainfootsepline]{scrlayer-scrpage}
\newsavebox\headimagebox
\AtBeginDocument{\sbox\headimagebox{\includegraphics[width=\marginparwidth]{example-image-a}}}
\DeclareNewLayer[background,
head,
addhoffset=\ifodd\value{page}\textwidth+\marginparsep\else-\wd\headimagebox-\marginparsep\fi,
width=\marginparwidth,
contents=\usebox\headimagebox]{image}
\AddLayersToPageStyle{scrheadings}{image}
\AddLayersToPageStyle{plain.scrheadings}{image}% used on chapter start page
\begin{document}
\Blinddocument
\end{document}
А если код должен всегда размещать логотип справа в одностороннем режиме:
\documentclass{scrreprt}
%\documentclass[twoside]{scrreprt}
\usepackage{mwe,graphicx}
\usepackage{geometry}
\usepackage[automark, headsepline, footsepline, plainfootsepline]{scrlayer-scrpage}
\newsavebox\headimagebox
\AtBeginDocument{\sbox\headimagebox{\includegraphics[width=\marginparwidth]{example-image-a}}}
\makeatletter
\DeclareNewLayer[background,
head,
addhoffset=\ifcase\if@twoside \ifodd\value{page} 0 \else 1 \fi\else 0 \fi\textwidth+\marginparsep\else-\wd\headimagebox-\marginparsep\fi,
width=\marginparwidth,
contents=\usebox\headimagebox]{image}
\makeatother
\AddLayersToPageStyle{scrheadings}{image}
\AddLayersToPageStyle{plain.scrheadings}{image}% used on chapter start page
\begin{document}
\Blinddocument
\end{document}
Но в этом случае было бы проще использовать разные слои для левой и правой страниц:
\documentclass{scrreprt}
%\documentclass[twoside]{scrreprt}
\usepackage{mwe,graphicx}
\usepackage{geometry}
\usepackage[automark, headsepline, footsepline, plainfootsepline]{scrlayer-scrpage}
\newsavebox\headimagebox
\AtBeginDocument{\sbox\headimagebox{\includegraphics[width=\marginparwidth]{example-image-a}}}
\DeclareNewLayer[background,
oddpage,% for right pages in double-side mode or all pages in single-side mode
head,
addhoffset=\textwidth+\marginparsep,
width=\marginparwidth,
contents=\usebox\headimagebox]{image.odd}
\DeclareNewLayer[background,
evenpage,% for left pages in double-side mode
head,
addhoffset=-\wd\headimagebox-\marginparsep,
width=\marginparwidth,
contents=\usebox\headimagebox]{image.even}
\AddLayersToPageStyle{scrheadings}{image.odd,image.even}
\AddLayersToPageStyle{plain.scrheadings}{image.odd,image.even}% used on chapter start page
\begin{document}
\Blinddocument
\end{document}