几何形状:展示框 + 景观

几何形状:展示框 + 景观

我正在使用\usepackage[showframe]{geometry},并且发现当我使用landscape环境(通过pdflscape包添加)时框架似乎不太正常。

这是错误吗?有办法纠正吗?

这是我的 MWE:

\documentclass[a4paper,twoside,11pt,openright]{report}

\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[english]{babel}
\usepackage[outer=25mm,inner=35mm,vmargin=20mm,includehead,includefoot,headheight=15pt,showframe]{geometry}
\usepackage{pdflscape}


\begin{document}
Hello.  First page.  Everything ok.

\begin{landscape}
Why is the frame off?
\end{landscape}

\end{document}

结果如下: 在此处输入图片描述

答案1

有一个“设计妥协”在包中lscape(在其他包中,这当然会被称为“设计缺陷” ;-))。环境landscape只会旋转\textheight并且\textwidth保持不变。但是包期望不变的值,因此它对的旧值geometry感到惊讶。\textheight\textwidth

以下示例在绘制垂直线geometry的包 中修复了此问题。修复版本使用而不是。在环境 外部,宏扩展为。在环境 内部,它扩展为,该宏在环境 开始时使用文本高度(在 中可用)进行初始化:\Gm@vrule\gmshow@textheight\textheightlandscape\gmshow@textheight\textheight\gmshow@@textheight\hsizelandscape

\documentclass[a4paper,twoside,11pt,openright]{report}

\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[english]{babel}
\usepackage[
  outer=25mm,
  inner=35mm,
  vmargin=20mm,
  includehead,
  includefoot,
  headheight=15pt,
  showframe
]{geometry}
\usepackage{pdflscape}

\makeatletter
\newcommand*{\gmshow@textheight}{\textheight}
\newdimen\gmshow@@textheight
\g@addto@macro\landscape{%
  \gmshow@@textheight=\hsize
  \renewcommand*{\gmshow@textheight}{\gmshow@@textheight}%
}
\def\Gm@vrule{%
  \vrule width 0.2pt height\gmshow@textheight depth\z@
}%
\makeatother

\begin{document}
\noindent
Hello.  First page.  Everything ok.

\begin{landscape}
  \Huge
  \noindent
  top left\hfill top right\par
  \vfill
  \noindent
  bottom left\hfill bottom right
\end{landscape}
\end{document}

结果

相关内容