![使页面宽度 = 纸张宽度,无论页面几何形状如何](https://linux22.com/image/331081/%E4%BD%BF%E9%A1%B5%E9%9D%A2%E5%AE%BD%E5%BA%A6%20%3D%20%E7%BA%B8%E5%BC%A0%E5%AE%BD%E5%BA%A6%EF%BC%8C%E6%97%A0%E8%AE%BA%E9%A1%B5%E9%9D%A2%E5%87%A0%E4%BD%95%E5%BD%A2%E7%8A%B6%E5%A6%82%E4%BD%95.png)
我希望每页的页眉线延伸到整个页面。我遇到的问题是当几何形状通过以下方式更改时\newgeometry
:
\documentclass{scrreprt}
\usepackage{geometry}
\usepackage[headsepline, headwidth=paper:\the\textwidth/2-\the\paperwidth/2:\the\textwidth/2-\the\paperwidth/2]{scrlayer-scrpage}
\usepackage{lipsum}
\begin{document}
\lipsum
\newgeometry{textwidth=5cm}
\lipsum
\end{document}
在具有新几何形状的页面上,页眉不会延伸到整个页面。如何才能使用scrlayer-scrpage
任意页面几何形状延伸页眉线?
答案1
使用您的代码,根据当前的 计算一次标题偏移量\textwidth
。如果 发生变化,则不会重新计算\textwidth
。
如果应该headoffset
依赖于灵活性,\textwidth
您必须确保headwidth
在每一页上重新计算包括偏移量。
\documentclass{scrreprt}
\usepackage{geometry}
\usepackage[headsepline]{scrlayer-scrpage}
\KOMAoptions{onpsbackground={\KOMAoptions{headwidth=paper}}}
\usepackage{lipsum}
\begin{document}
\lipsum
\newgeometry{textwidth=5cm}\KOMAoptions{headwidth=paper}
\lipsum
\end{document}
请注意,headwidth=paper
单侧模式\the\textwidth/2-\the\paperwidth/2
默认使用偏移量。
但无需重新计算每一页的偏移量也是有可能的。
如果页眉应具有与纸张相同的宽度,则将所有页眉层的水平偏移量设置为 0pt:
\ForEachLayerOfPageStyle*{scrheadings}{%
\ifstrstart{#1}{scrheadings.head}{%
\ModifyLayer[hoffset=0pt,width=\paperwidth]{#1}%
}{}%
}
也许您必须对 执行相同的操作plain.scrheadings
。请注意,页面样式plain
只是加载plain.scrheadings
时的一个别名。scrlayer-scrpage
代码:
\documentclass
%[twoside]
{scrreprt}
\usepackage{geometry}
\usepackage[headsepline,headwidth=page]{scrlayer-scrpage}
\ForEachLayerOfPageStyle*{scrheadings}{%
\ifstrstart{#1}{scrheadings.head}{%
\ModifyLayer[hoffset=0pt,width=\paperwidth]{#1}%
}{}%
}
\ForEachLayerOfPageStyle*{plain.scrheadings}{%
\ifstrstart{#1}{plain.scrheadings.head}{
\ModifyLayer[hoffset=0pt,width=\paperwidth]{#1}%
}{}%
}
\ihead{inner}\chead{center}\ohead{outer}
\usepackage{lipsum}
\begin{document}
\lipsum
\newgeometry{textwidth=5cm}
\lipsum
\end{document}
如果只需要扩展标题下方的行而不是标题本身,则只需修改层scrheadings.head.below.line
。
\documentclass
%[twoside]
{scrreprt}
\usepackage{geometry}
\usepackage[headsepline=:page]{scrlayer-scrpage}
\ModifyLayer[hoffset=0pt,width=\paperwidth]{scrheadings.head.below.line}%
\ihead{inner}\chead{center}\ohead{outer}
\usepackage{lipsum}
\begin{document}
\lipsum
\newgeometry{textwidth=5cm}
\lipsum
\end{document}
结果: