Ширина изображения = headwidth, когда head — textwithmarginpar

Ширина изображения = headwidth, когда head — textwithmarginpar

Используя scrbookи scrpage2с headwith из textwithmarginpar, я пытаюсь установить отдельные изображения в текстовом теле на эту более широкую headwidth. \hoffsetэто 0pt. Сложение \textwidth, \marginparwidthи \marginparsepдает мне больше, чем headwidth, однако: image и pagenumber не заканчиваются на одной строке. Кажется, есть еще одна длина, влияющая на headwidth. Спасибо за любую идею!

\documentclass[10pt]{scrbook}
\usepackage{xltxtra}
\usepackage[paperwidth=170mm,paperheight=240mm]{geometry}
\usepackage{scrpage2}
\usepackage{mwe}
\usepackage{ifoddpage}

\KOMAoptions{DIV=calc,BCOR=15mm}   

\newlength{\TextwithMargin}
\setlength{\TextwithMargin}{\textwidth}
\addtolength{\TextwithMargin}{\marginparwidth}
\addtolength{\TextwithMargin}{\marginparsep}

\pagestyle{scrheadings}
\clearscrheadfoot
\lehead[]{{\pagemark}\quad\rightmark}
\rohead[]{{\rightmark}\quad\pagemark}
\setheadwidth[]{textwithmarginpar} % As expected, I get the same result when using \TextwithMargin.


\begin{document}
\thispagestyle{scrheadings}
\addsec{Section}
\begin{figure}[hptp]
\checkoddpage
\edef\side{\ifoddpage l\else r\fi}%
\makebox[\textwidth][\side]{%
\parbox{\TextwithMargin}{%
\includegraphics[width=\linewidth]{example-image}
\caption{Example image.}
}}
\end{figure}
\end{document}

решение1

Я буду использовать a headseplineдля обозначения ширины заголовков.

С scrlayer-scrpageопцией headwidth=textwithmarginparвсе работает как и ожидалось:

\documentclass[10pt]{scrbook}
%\providecommand*\Ifthispageodd{\ifthispageodd}% needed up to and including KOMA-Script version 3.27, see https://komascript.de/faq_deprecatedif
\usepackage{xltxtra}
\usepackage[paperwidth=170mm,paperheight=240mm]{geometry}
\KOMAoptions{DIV=calc,BCOR=15mm}

\newlength{\TextwithMargin}
\setlength{\TextwithMargin}{%
  \dimexpr\textwidth+\marginparwidth+\marginparsep\relax}

\usepackage[headwidth=textwithmarginpar,headsepline]{scrlayer-scrpage}
\clearpairofpagestyles
\lehead{{\pagemark}\quad\rightmark}
\rohead{{\rightmark}\quad\pagemark}

\usepackage{mwe}
\begin{document}
\addsec{Section}
\blindtext[4]
\begin{figure}[htb]
\Ifthispageodd{\edef\side{l}}{\edef\side{r}}%
\makebox[\textwidth][\side]{%
\parbox{\TextwithMargin}{%
\includegraphics[width=\linewidth]{example-image}
\caption{Example image.}
}}
\end{figure}
\end{document}

введите описание изображения здесь

Обратите внимание, что при использовании scrlayer-scrpageпараметра with headwidth=textwithmarginparзаголовок не центрируется над текстовой областью.

Кроме того, классы KOMA-Script определяют команду \Ifthispageodd.


Вот еще предложение с устаревшим пакетомscrpage2

\documentclass[10pt]{scrbook}
%\providecommand*\Ifthispageodd{\ifthispageodd}% needed up to and including KOMA-Script version 3.27, see https://komascript.de/faq_deprecatedif
\usepackage{xltxtra}
\usepackage[paperwidth=170mm,paperheight=240mm]{geometry}
\KOMAoptions{DIV=calc,BCOR=15mm}

\newlength{\TextwithMargin}
\setlength{\TextwithMargin}{\dimexpr\textwidth+\marginparwidth+\marginparsep\relax}

\usepackage[headsepline]{scrpage2}
\pagestyle{scrheadings}
\clearscrheadfoot
\lehead{{\pagemark}\quad\rightmark}
\rohead{{\rightmark}\quad\pagemark}
\setheadwidth[0pt]{textwithmarginpar}

\usepackage{mwe}
\begin{document}
\addsec{Section}
\blindtext[4]
\begin{figure}[htb]
\Ifthispageodd{\edef\side{l}}{\edef\side{r}}%
\makebox[\textwidth][\side]{%
\parbox{\TextwithMargin}{%
\includegraphics[width=\linewidth]{example-image}
\caption{Example image.}
}}
\end{figure}
\end{document}

Результат тот же, что и выше.

Обратите внимание, что вам необходимо использовать необязательный аргумент:

\setheadwidth[0pt]{textwithmarginpar}

Если необязательное смещение 0ptотсутствует, заголовок будет размещен по центру над текстовой областью.

введите описание изображения здесь

Связанный контент