LaTeX-Package-Repositories / geometry

Updating Hideo Umeki's geometry package for LaTeX page dimensions
38 stars 5 forks source link

unexpected result with \geometry in the preamble (but not with \newgeometry) #3

Open komascript opened 5 years ago

komascript commented 5 years ago

I've already reported this to Hideo Umeki without any reaction. So once again:

It seems that geometry for \geometry prioritizes textwidth and textheight settings over total setting, but does not do so for \newgeometry in the document body. Look at this example:

\documentclass{article}
\usepackage[%
  includehead=false,% default
  includefoot=false,% default
  includemp=false,% default
  textwidth=400pt,
  textheight=500pt,
]{geometry}
%\usepackage{xpatch}
%\xapptocmd{\geometry}{\newgeometry{#1}}{}{}
\geometry{a4paper,total={500pt,600pt}}
\begin{document}
\raggedright
first set: 400pt, 500pt\\
second:    500pt, 600pt\\
expect:    500pt, 600pt\\
got: \the\textwidth, \the\textheight

\newgeometry{total={500pt,600pt}}
After \verb|\newgeometry| inside document body:\\
expected: 500pt, 600pt\\
got: \the\textwidth, \the\textheight
\end{document}

It results in:

first set: 400pt, 500pt second: 500pt, 600pt expect: 500pt, 600pt got: 400.0pt, 500.0pt ` After \newgeometry inside document body: expected: 500pt, 600pt got: 500.0pt, 600.0pt`

Output after \newgeometry is as expected. But the initial \geometry{a4paper,total={500pt,600pt}} does not change \textwidth and \textheight (only \paperwidth and \paperheight) as expected.

If you activate the two deactivated patch lines, you'll get the expected result:

first set: 400pt, 500pt second: 500pt, 600pt expect: 500pt, 600pt got: 500.0pt, 600.0pt ` After \newgeometry inside document body: expected: 500pt, 600pt got: 500.0pt, 600.0pt`

but an additional warning because of usage of a4paper in \newgeometry. Same, if you replace \geometry by \newgeometry.

Note: The example is only for simplification. In true life the problem is due to default settings in a package that cannot be overwritten by the user using \geometry{total={…}}. I know, the user could use:

\geometry{a4paper,textwidth=500pt,textheight=600pt}

or

\geometry{a4paper}
\newgeometry{total={500pt,600pt}}

and each of them would work. But the user should know this.

I would not call this is a bug. But can you at least document it, e.g., in the "Known Problems" section?

davidcarlisle commented 5 years ago

Thanks, I setup this github to do some "emergency updates" but I don't really have a feel yet for what geometry should do for various combinations of options. So I can certainly add to the documentation as suggested but I'd be wary of changing the code at present. But if I find time to work out what's happening here or what the compatibility issues are with any changes, I'll come back to this issue.

thanks for the report.