我构建了一个名为“landscapepage”的环境,以便typearea
在我的文章中插入风景页面。
一切都正常,只是插入的横向页面的页码位置不正确,如附图所示。
为什么?又该如何处理?
梅威瑟:
\documentclass{article}
\usepackage{typearea,geometry,fancyhdr}
\geometry{showframe}
\newenvironment{landscapepage}[1][]
{%
\clearpage
\savegeometry{prelandscape}
\KOMAoptions{paper=landscape,pagesize,DIV=15,#1}
\recalctypearea
}
{%
\clearpage
\KOMAoptions{paper=portrait,pagesize}
\recalctypearea
\loadgeometry{prelandscape}
}
\begin{document}
\newgeometry{top=3cm,bottom=3cm}
\section{This is my Portrait Page}
This is my Portrait Page
\clearpage
%%%%%%%%%%%%%%%%%%%%%%%
\begin{landscapepage}[DIV=8]
\pagestyle{fancy}
\fancyhfoffset[E,O]{0pt}
\fancyhf{}
\rfoot{\roman{page}}
\section{This is my Landscape Page}
Text in my landscape section\footnote{Footnote in Landscape}
\clearpage
Text in my landscape second page
\end{landscapepage}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{This is again Portrait Page}
\end{document}
答案1
您会在 MWE 的日志文件中发现以下警告:
包 typearea 警告:\typearea 在组级别 2 使用。在任何组内使用 \typearea(例如环境、数学模式、框等)可能会导致许多排版问题。您应该将命令 \typearea 移到输入行 26 上的所有组之外。
请注意,\recalctypearea
是 的缩写版本\typearea[current]{last}
。因此您不应\recalctypearea
在组中使用。请注意,\loadgeometry{prelandscape}
可以从 MWE 中删除,而无需对文档进行任何更改,因为它也位于组内。
您可以定义横向和纵向页面的开关:
\documentclass{article}
\usepackage[usegeometry]{typearea}
\usepackage[showframe]{geometry}
\usepackage{fancyhdr}
\newcommand\landscapepageon[1][]
{%
\cleardoublepage
\savegeometry{prelandscape}
\KOMAoptions{paper=landscape,DIV=15,#1}
\recalctypearea
\bgroup% begins a group
}
\newcommand\landscapepageoff{%
\cleardoublepage
\egroup% ends a group
\KOMAoptions{paper=portrait}
\recalctypearea
\loadgeometry{prelandscape}
}
\begin{document}
\newgeometry{top=3cm,bottom=3cm}
\section{This is my Portrait Page}
This is my Portrait Page
\landscapepageon[DIV=8]
\pagestyle{fancy}
\fancyhfoffset[E,O]{0pt}
\fancyhf{}
\renewcommand\thepage{\roman{page}}
\fancyfoot[R]{\thepage}
\section{This is my Landscape Page}
Text in my landscape section\footnote{Footnote in Landscape}
\clearpage
Text in my landscape second page
\landscapepageoff
\section{This is again Portrait Page}
\end{document}
备注: 由于代码中有和,\landscapepageon
所以后面必须跟。它们是横向页面本地更改所必需的。\landscapepageoff
\bgroup
\egroup
补充说明:不要使用\rfoot{\roman{page}}
。文档中会有罗马页码,但目录中会有阿拉伯页码。