默认情况下,页眉和页脚仅跨越文本主体的宽度,但我需要它们跨越边距注释的宽度和正文。我能够得到的最接近的结果是使用headwidth
和paperwidth
选项。
\documentclass[a4paper,oneside]{article}
\usepackage{mwe}
\usepackage[margin=2cm,marginparwidth=4cm,includemp,reversemp]{geometry}
\usepackage[headwidth=paper, footwidth=paper]{scrlayer-scrpage}
\ihead{left header}
\chead{centre header}
\ohead{right header}
\ifoot{left footer}
\cfoot{centre footer}
\ofoot{right footer}
\begin{document}
\section{Some text}
\blindtext
\marginpar{This is a margin note}
\section{Some more text}
\blindtext
\end{document}
现在,页眉与页边注释列正确左对齐。但是,“右页眉”超出了页面边缘。显然,我需要将页眉宽度设置为诸如 marginwidth + marginparsep + textwidth 之类的值。但是,我在 KOMA-Script 手册(至少是英语版本,scrguide-en.pdf
)中找不到有关如何执行此操作的任何信息。
我对有或没有 的解决方案持开放态度scrlayer-scrpage
。我宁愿避免手动放置标题元素(例如使用textpos
),因为我认为其他人维护代码会更加困难。
答案1
问题在于reversemp
选项geometry
。因此,简单的方法headwidth=textwithmarginpar
不起作用。但是,您可以使用额外的偏移量:
\documentclass[a4paper,oneside]{article}
\usepackage{mwe}
\usepackage[margin=2cm,marginparwidth=4cm,includemp,reversemp]{geometry}
\usepackage{scrlayer-scrpage}
\KOMAoptions{headwidth=textwithmarginpar:-\marginparsep-\marginparwidth,footwidth=textwithmarginpar:-\marginparsep-\marginparwidth}
\ihead{left header}
\chead{centre header}
\ohead{right header}
\ifoot{left footer}
\cfoot{centre footer}
\ofoot{right footer}
\begin{document}
\section{Some text}
\blindtext
\marginpar{This is a margin note}
\section{Some more text}
\blindtext
\end{document}
提供偏移量的信息记录在英文版 KOMA-Script 手册第 5.5 节中。
注意:使用类似的偏移量-\marginparwidth-\marginparsep
不能作为的可选参数,\usepackage
而只能使用\KOMAoption
或\KOMAoptions
。
编辑:KOMA-Script 的作者告诉我,从 KOMA-Script 3.39 开始,
\usepackage[headwidth=textwidthmarginpar,footwidth=head]{scrlayer-scrpage}
如果 在和选项scrlayer-scrpage
之后加载或在加载之前激活,则足够了。geometry
geometry
reversemp
\reversemarginpar
scrlayer-scrpage
答案2
只是为了好玩:
这重新定义了 pagestyle plain,通过重叠边缘来生成宽标题。
\documentclass[a4paper,oneside]{article}
\usepackage[margin=2cm,marginparwidth=4cm,includemp,reversemp,showframe]{geometry}
\usepackage{blindtext}
\makeatletter
\def\ps@plain{%
\def\@oddhead{\hspace{\dimexpr -\marginparwidth-\marginparsep}%
\rlap{\ihead}\hfill\chead\hfill\llap{\ohead}}
\let\@evenhead\@oddhead% just in case
\def\@oddfoot{\hspace{\dimexpr -\marginparwidth-\marginparsep}%
\rlap{\ifoot}\hfill\cfoot\hfill\llap{\ofoot}}
\let\@evenfoot\@oddfoot% just in case
\let\@mkboth\@gobbletwo
\let\sectionmark\@gobble
\let\subsectionmark\@gobble
}
\makeatother
\def\ihead{left header}
\def\chead{centre header}
\def\ohead{right header}
\def\ifoot{left footer}
\def\cfoot{centre footer}
\def\ofoot{right footer}
\pagestyle{plain}
\begin{document}
\section{Some text}
\blindtext
\marginpar{This is a margin note}
\section{Some more text}
\blindtext
\end{document}
这使用 paracol 将 marginpar 区域实现为单独的列。请注意,只能\marginpar
在段落之间使用。另一方面,这些 marginpar 会跨页。
\documentclass[a4paper,oneside]{article}
\usepackage[margin=2cm,showframe]{geometry}
\usepackage{paracol}
\usepackage{fancyhdr}
\usepackage{blindtext}
\fancyhead[L]{left header}
\fancyhead[C]{centre header}
\fancyhead[R]{right header}
\fancyfoot[L]{left footer}
\fancyfoot[C]{centre footer}
\fancyfoot[R]{right footer}
\pagestyle{fancy}
\renewcommand{\marginpar}[1]{\switchcolumn*
\vspace*{-\baselineskip}{\parindent=0pt\sloppy#1}%
\switchcolumn}
\begin{document}
\setcolumnwidth{4cm}% uses \columnsep instead of \marginparsep
\begin{paracol}{2}
\switchcolumn% start in right column
\section{Some text}
\blindtext
\marginpar{This is a margin note}
\section{Some more text}
\blindtext
\end{paracol}
\end{document}