Re: problema con comando \newgeometry e pacchetto fancyhdr

#44655
Up
0
Down
::

Ho un documento in cui uso il comando \newgeometry (pacchetto geometry) per modificare i margini di una sola pagina.

Aggiungendo però intestazioni personalizzate con il pacchetto fancyhdr, la loro posizione nella pagina non si adegua ai nuovi margini impostati.

Esempio:

`
\documentclass[a4paper,oneside]{article}

\usepackage[T1]{fontenc}
\usepackage[utf8x]{inputenc}
\usepackage[italian]{babel}
\usepackage{microtype}
\usepackage{lipsum}

\usepackage{fancyhdr}
\usepackage[showframe]{geometry}

\pagestyle{fancy}
\lhead{}
\chead{}
\rhead{}
\lfoot{Left foot}
\rfoot{Right foot}
\cfoot{}
\renewcommand{\headrulewidth}{0pt}
\renewcommand{\footrulewidth}{0pt}

\begin{document}

\newgeometry{margin=2cm}

\lipsum[1]

\cleardoublepage

\restoregeometry

\lipsum[1]

\end{document}
`

l’allineamento di “Right foot” nella prima pagina è uguale alla seconda pagina, nonostante il testo abbia dimensioni diverse.

Dove sbaglio?

grazie

Il pacchetto fancyhdr determina l’ampiezza di testatina e piedino mediante il valore di \headwidth che è impostato al momento della definizione dello stile fancy (cioè dal comando \pagestyle{fancy}). Se non modifichi le ampiezze con \fancy{head|foot|hf}offset (le tre macro descritte a pagina 12 del manuale), puoi fare così:
`\newenvironment{changegeometry}[1]
{\newgeometry{#1}\setlength{\headwidth}{\textwidth}}
{\cleardoublepage\aftergroup\restoregeometry}`
Il tuo documento diventerà
`\begin{document}

\begin{changegeometry}{margin=2cm}

\lipsum[1]

\end{changegeometry}

\lipsum[1]

\end{document}`
che dovrebbe fare come desideri, perché \headwidth è ricalcolata con il valore attuale di \textwidth, ma la modifica viene annullata alla fine dell’ambiente changegeometry.

Ciao
Enrico

Go to top