为什么几何包中的 \newgeometry 不会改变纸张尺寸?

为什么几何包中的 \newgeometry 不会改变纸张尺寸?

这背后有何技术原因?

封装几何手册

... 纸张尺寸选项(例如 papersize、paper=a4paper 等等),这些选项无法通过 进行更改\newgeometry

答案1

我感谢@DavidCarlisle 和@UlrikeFischer 提供此答案的支持

paperwidthpaperheight是 LaTeX 长度,然后最终转换为pdftex长度pdfpagewidthpdfpageheight使用以下代码片段:

\ifGin@setpagesize
\ifx\paperwidth\@undefined\else
  \AtBeginDocument{%
% If a package has changed \mag, assume it knows what it is doing
% and leave page size alone
\ifnum\mag=\@m
  \@ifundefined{stockwidth}{%
  \@ifundefined{paperwidth}{%
  }{%
    \ifdim\paperwidth>0pt\relax
      \ifdim\paperheight>0pt\relax
        \pdfpagewidth=\paperwidth
        \pdfpageheight=\paperheight
      \fi
    \fi
  }%
}{%
  \ifdim\stockwidth>0pt\relax
    \ifdim\stockheight>0pt\relax
      \pdfpagewidth=\stockwidth
      \pdfpageheight=\stockheight
    \fi
  \fi
}%
\fi
}

文档开始后,“LaTeX”对应项会被丢弃(意味着它们不再有意义),而pdf对应项才是最终用于设置的对应项。

Geometrypdf也在文档的开头设置长度,可能是为了保持与dvips驱动程序的兼容性(不支持多种页面尺寸),因此不允许在文档期间重置它们,从而丢弃纸张调整大小选项

相关内容