考慮一個包含幾個整頁浮動的文檔。您已為這些浮動頁面指派了empty
頁面樣式,因為您認為在這些頁面上保留您在常規文字頁面上使用的完整、詳細的標題是不必要的且會分散注意力。
但結果是,現在浮動相對於文字頁面的文字區域放置得有點太低了。透過省略浮動頁面上的標題,可以使用〜兩行額外的行,看到浮動頂部與文字正文的第一行(在文字頁面上)對齊是非常尷尬的:
您想要的是修改類型區域(在浮動頁面上),使其與文字正文加標題所佔用的區域一樣高。因為正是後一個區域(至少如果我們的標題足夠長,形成適當的文本行)在視覺上我們將其視為“the”類型區域(因此該headinclude
選項,請參見 scrguide.pdf,第 2 章)。
koma-script 允許我們做的是更改文件中間的類型區域。用這段程式碼:
\KOMAoptions{
footinclude=false,
headinclude=false
}
\recalctypearea
....我們可以在包含標題的類型區域和不包含標題的類型區域之間來回切換。在我的 MWE 的後半部分中,這為我們在浮動頁面上提供了幾乎所需的效果,但當然這還不是解決方案,因為問題仍然存在:
當呼叫整頁浮動時,我們如何以健全、穩健的方式自動觸發類型區域變更?
\documentclass[12pt,DIV=9]{scrartcl}
\usepackage{blindtext,floatpag}
\usepackage[automark]{scrlayer-scrpage}
%include header in type area calculation
\KOMAoptions{
footinclude=false,
headinclude=true
}
\recalctypearea
%setup headers/footers
\pagestyle{scrheadings}
\clearscrheadings
\ihead{\headmark}
\ohead{\thepage}
%make sure figure starts at top of text area
\makeatletter
\setlength{\@fptop}{0pt}
\makeatother
%no headers/footers on float pages
\floatpagestyle{empty}
\begin{document}
\section{Text with regular type area}
\Blindtext
\begin{figure}[p]
\rule{\textwidth}{\textheight}
\caption{Float with regular typearea; no headings, float could be taller (using the space taken by the headers}
\end{figure}%
\Blindtext
%changing type area in mid-document. Not very elegant
\KOMAoptions{
footinclude=false,
headinclude=false
}
\recalctypearea
\section{Text with taller type area (no headers)}
\Blindtext
\begin{figure}[p]
\rule{\textwidth}{\textheight}
\caption{Float with tall typearea, as it should be; no headings, float uses the space taken by the headers}
\end{figure}%
\Blindtext
\end{document}
聚苯乙烯
當然,還有一種暴力方法。如果我們無論如何都要使用@fptop
修改(我就是這麼做的),我們也可以將該值設為負數,例如:
\makeatletter
\setlength{\@fptop}{-2\baselineskip}
\makeatother
這似乎確實有效,甚至不需要使用 koma-script 的功能,因此它是一個獨立於類別的解決方案。但這是非常殘酷的。
答案1
該解決方案使用\afterpage
和\newgeometry
來激活整頁圖形,而不是相反。
注意:將標題放入外部保存箱中是\afterpage
為了確保標題編號正確(過度)。
\documentclass[12pt,DIV=9]{scrartcl}
\usepackage{blindtext,floatpag}
\usepackage[automark]{scrlayer-scrpage}
\usepackage{geometry}
\usepackage{afterpage}
\newsavebox{\tempbox}
%include header in type area calculation
\KOMAoptions{
footinclude=false,
headinclude=true
}
\recalctypearea
%setup headers/footers
\pagestyle{scrheadings}
\clearscrheadings
\ihead{\headmark}
\ohead{\thepage}
%make sure figure starts at top of text area
\makeatletter
\setlength{\@fptop}{0pt}
\makeatother
%no headers/footers on float pages
\floatpagestyle{empty}
\begin{document}
\section{Text with regular type area}
\Blindtext
\begin{figure}[p]
\rule{\textwidth}{\textheight}
\caption{Float with regular typearea; no headings, float could be taller (using the space taken by the headers}
\end{figure}%
\Blindtext
\section{Text with taller type area (no headers)}
\Blindtext
\setbox\tempbox=\vbox{\expandafter\def\csname @captype\endcsname{figure}% increment caption counter NOW
\caption{Float with tall typearea, as it should be; no headings, float uses the space taken by the headers}%
}
\afterpage{\newgeometry{noheadfoot}% automatic \clearpage
\begin{figure}[p]
\rule{\textwidth}{\textheight}
\unvbox\tempbox
\end{figure}%
\restoregeometry}
\Blindtext
\end{document}