ジオメトリ パッケージの \newgeometry が用紙サイズを変更しないのはなぜですか?

ジオメトリ パッケージの \newgeometry が用紙サイズを変更しないのはなぜですか?

これにはどのような技術的な理由があるのでしょうか?

からパッケージジオメトリのマニュアル:

... 用紙サイズのオプション (papersize、paper=a4paper など) は、 では変更できません\newgeometry

答え1

この回答を提供してくれた@DavidCarlisleと@UlrikeFischerに感謝します。

paperwidthおよび はpaperheightLaTeX の長さであり、最終的には次のスニペットを使用して、たとえば の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対応部分は最終的に設定に使用されるものです。

ジオメトリはpdf、おそらく複数のページサイズをサポートしていないドライバーとの互換性を維持するために、ドキュメントの先頭でも長さを設定しますdvips。そのため、ドキュメントの途中で長さをリセットすることはできず、用紙のサイズ変更オプションは破棄されます。

関連情報