Il m'arrive souvent de produire des documents illustrés, dans lesquels les images occupent le haut de la page et le texte, s'il y en a, figure dans la partie inférieure de la page. Si la page commence par un titre de section, celui-ci repousse l'image vers le bas. Et si la page suivante comporte également une image, celle-ci n'est évidemment pas en regard de la précédente. Comment faire pour que ces images soient alignées d'une page à l'autre ? \documentclass[a4paper, 12pt]{scrartcl} \usepackage[utf8]{inputenc} \usepackage[T1]{fontenc} \usepackage{kpfonts} \usepackage{mwe} \usepackage{float} \begin{document} \section{Première partie} \subsection{Première sous-partie} \begin{figure}[H] \centering \includegraphics[width=\textwidth{}]{example-image-a} \label{fig:1a} \caption{Une première illustration} \end{figure} \newpage{} \begin{figure}[H] \centering \includegraphics[width=\textwidth{}]{example-image-b} \label{fig:1b} \caption{Une deuxième illustration} \end{figure} \newpage{} \subsection{Deuxième sous-partie} \begin{figure}[H] \centering \includegraphics[width=\textwidth{}]{example-image-c} \label{fig:1c} \caption{Une troisième illustration} \end{figure} \newpage{} \section{Deuxième partie} \begin{figure}[H] \centering \includegraphics[width=\textwidth{}]{example-image-a} \label{fig:2a} \caption{Une autre illustration, guère plus alignée que les précédentes} \end{figure} \newpage{} \begin{figure}[H] \centering \includegraphics[width=\textwidth{}]{example-image-b} \label{fig:2b} \caption{Et une dernière illustration} \end{figure} \end{document} Je précise que j'utilise le package Posée 18 Mar '21, 11:34 Pathe ♦♦ |
Voici une solution qui demande deux passes. \documentclass[a4paper, 12pt]{scrartcl} \usepackage{kpfonts} \usepackage[T1]{fontenc} \usepackage[savepos]{zref} \usepackage[Export]{adjustbox} \usepackage{mwe} \newcounter{mtimg}[page] \makeatletter \newenvironment{mtfigure} {\par\noindent \begin{minipage}[t]{\textwidth}% \def\@captype{figure} \centering \ifnum\value{mtimg}=0 \stepcounter{mtimg}% \ifodd\value{page}% \zsaveposy{pg\arabic{page}}% \else \@ifundefined{Z@R@pg\the\numexpr\value{page}-1}\relax{\vskip\dimexpr\paperheight-\zposy{pg\the\numexpr\value{page}-1}sp-\topmargin-\headheight-\headsep-\topskip-1in\relax} \fi\fi} {\end{minipage}\par} \makeatother \begin{document} \section{Première partie} \subsection{Première sous-partie} \begin{mtfigure} \includegraphics[width=\textwidth,valign=T]{example-image-a} \captionof{figure}{Une première illustration} \label{fig:1a} \end{mtfigure} \newpage \begin{mtfigure} \includegraphics[width=\textwidth, height=8cm,valign=T]{example-image} \captionof{figure}{Une deuxième illustration} \label{fig:1b} \end{mtfigure} \newpage \begin{mtfigure} \includegraphics[width=\textwidth,valign=T]{example-image-a} \captionof{figure}{Une première illustration} \label{fig:2a} \end{mtfigure} \newpage \begin{mtfigure} \includegraphics[width=\textwidth, height=8cm,valign=T]{example-image} \captionof{figure}{Une deuxième illustration} \label{fig:2b} \end{mtfigure} \newpage \subsection{Première sous-partie} \begin{mtfigure} \includegraphics[width=\textwidth,valign=T]{example-image-a} \captionof{figure}{Une première illustration} \label{fig:3a} \end{mtfigure} \newpage \begin{mtfigure} \includegraphics[width=\textwidth, height=8cm,valign=T]{example-image} \captionof{figure}{Une deuxième illustration} \label{fig:3b} \end{mtfigure} \end{document} Publiée 21 Mar '21, 17:13 touhami Je n'obtiens pas le résultat escompté. C'est étrange, certaines images sont alignées par le milieu. En revanche, cela me permet de découvrir le package
(21 Mar '21, 17:30)
Pathe ♦♦
Peut être, puisque j'ai oublié de poser la question suivante : est-il possible qu'une page reçoit plus d'une image?
(21 Mar '21, 17:46)
touhami
@touhami : oui, c'est possible. Deux illustrations, dirons-nous : certaines sont formées de plusieurs images. Mais l'idée est d'avoir au maximum deux illustrations par page, chacune occupant toute la largeur de la zone de texte (
(21 Mar '21, 23:25)
Pathe ♦♦
|
En demandant que les flottants soient placés en haut de page (option \documentclass[a4paper, 12pt]{scrartcl} \usepackage[utf8]{inputenc} \usepackage[T1]{fontenc} \usepackage{kpfonts} \usepackage{mwe} % \usepackage{float} \makeatletter \setlength{\@fptop}{0pt} \setlength{\@fpbot}{0pt plus 1fil} \makeatother \begin{document} \section{Première partie} \subsection{Première sous-partie} \begin{figure}[t] \centering \includegraphics[width=\textwidth{}]{example-image-a} \label{fig:1a} \caption{Une première illustration} \end{figure} \newpage{} \begin{figure}[t] \centering \includegraphics[width=\textwidth{}]{example-image-b} \label{fig:1b} \caption{Une deuxième illustration} \end{figure} \newpage{} \subsection{Deuxième sous-partie} \begin{figure}[t] \centering \includegraphics[width=\textwidth{}]{example-image-c} \label{fig:1c} \caption{Une troisième illustration} \end{figure} \newpage{} \section{Deuxième partie} \begin{figure}[t] \centering \includegraphics[width=\textwidth{}]{example-image-a} \label{fig:2a} \caption{Une autre illustration, guère plus alignée que les précédentes} \end{figure} \newpage{} \begin{figure}[t] \centering \includegraphics[width=\textwidth{}]{example-image-b} \label{fig:2b} \caption{Et une dernière illustration} \end{figure} \end{document} Publiée 21 Mar '21, 15:24 denis ♦♦ |
Voici une solution qui consiste à ajouter des sections et sous-sections vides. \documentclass[a4paper, 12pt]{scrartcl} \usepackage[utf8]{inputenc} \usepackage[T1]{fontenc} \usepackage{kpfonts} \usepackage{mwe} \usepackage{float} \newcommand{\sectionfantome}{\section*{}} \newcommand{\subsectionfantome}{\subsection*{}} \begin{document} \section{Première partie} \subsection{Première sous-partie} \begin{figure}[H] \centering \includegraphics[width=\textwidth{}]{example-image-a} \label{fig:1a} \caption{Une première illustration} \end{figure} \newpage{} \sectionfantome \subsectionfantome \begin{figure}[H] \centering \includegraphics[width=\textwidth{}]{example-image-b} \label{fig:1b} \caption{Une deuxième illustration} \end{figure} \newpage{} \sectionfantome \subsection{Deuxième sous-partie} \begin{figure}[H] \centering \includegraphics[width=\textwidth{}]{example-image-c} \label{fig:1c} \caption{Une troisième illustration} \end{figure} \newpage{} \section{Deuxième partie} \subsectionfantome \begin{figure}[H] \centering \includegraphics[width=\textwidth{}]{example-image-a} \label{fig:2a} \caption{Une autre illustration, guère plus alignée que les précédentes} \end{figure} \newpage{} \sectionfantome \subsectionfantome \begin{figure}[H] \centering \includegraphics[width=\textwidth{}]{example-image-b} \label{fig:2b} \caption{Et une dernière illustration} \end{figure} \end{document} Attention cela ne fonctionnera pas comme souhaité avec des titres qui prennent plusieurs lignes. Dans ce cas, on pourra bidouiller en ajoutant des Pour aller plus loin dans le positionnement absolu on peut utiliser l'environnement Publiée 21 Mar '21, 02:07 YannD |
PS : dans le visualiseur pdf qui figure désormais au-dessous des blocs de code, je suggère de choisir le défilement horizontal, qui permet de mettre en évidence le problème posé.
Remplacer la balise [H] par la balise [t]? Pour que toutes les images soient en haut de page?
@pluton : la suggestion est bonne, mais je désire que les titres figurent en haut de page, de telle sorte que les images apparaissent dessous.
Il faudrait donc créer un empagement comprenant une zone de hauteur déterminée où les titres potentiels apparaîtraient, et qui resterait vide le reste du temps. Les images seraient situées au-dessous de cette zone dévolue aux titres.