Conserver et réutiliser la valeur du dernier \vfill

Tout ce qui concerne le langage TeX/LaTeX et ses variantes. Ce langage est utilisable sur le forum via les balises tex.
[participation réservée aux membres inscrits]
Règles du forum
Merci de soigner la rédaction de vos messages et de consulter ce sujet avant de poster. Pensez également à utiliser la fonction recherche du forum.
MB
Administrateur
Administrateur
Messages : 7549
Inscription : samedi 28 mai 2005, 14:23
Statut actuel : Enseignant

Conserver et réutiliser la valeur du dernier \vfill

Message non lu par MB »

Bonjour, je me penche sur la situation suivante, dans laquelle on dispose de trois environnements block sur une première page, espacés verticalement par des \vfill, et de deux environnements block sur une seconde page. L'objectif serait de conserver le même espacement vertical entre les environnements block sur les deux pages. Il faudrait donc à priori stocker la valeur effectivement des \vfill de la première page, par exemple dans \lastvfill, afin de pouvoir la réutiliser sur la seconde.

Code : Tout sélectionner

\documentclass{article}
\usepackage{lipsum}
\newenvironment{block}{\par\noindent\hrulefill\par}{\par\noindent\hrulefill\par}
\begin{document}
\begin{block}
\lipsum[1]
\end{block}
\vfill
\begin{block}
\lipsum[1]
\end{block}
\vfill
\begin{block}
\lipsum[1]
\end{block}
\newpage
\begin{block}
\lipsum[1]
\end{block}
\vskip\lastvfill
\begin{block}
\lipsum[1]
\end{block}
\end{document}
Quelqu'un aurait-il une méthode relativement simple permettant d'effectuer cette tâche ? (éventuellement à l'aide de luatex)
MB. (rejoignez pCloud afin d'obtenir 10Go de stockage en ligne gratuits)
Pas d'aide en message privé. Merci de consulter ce sujet avant de poster votre premier message.
touhami
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 467
Inscription : dimanche 11 février 2007, 11:45

Re: Conserver et réutiliser la valeur du dernier \vfill

Message non lu par touhami »

Bonjour. Voici une solution.

Code : Tout sélectionner

\documentclass[french]{article}
\usepackage{lmodern}
\usepackage[T1]{fontenc}
\usepackage{babel}

\newenvironment{block}{\par\noindent\hrulefill\par}{\par\noindent\hrulefill\par}

\usepackage{mwe}

\newsavebox\blocksbox
\newdimen\entreblocks
\newcommand{\MBlastvfill}{\vskip\entreblocks}

\newenvironment{BlocksEnv}{%
\newpage
\setbox\blocksbox\vbox\bgroup
}{\egroup
\global\setlength{\entreblocks}{.5\dimexpr\textheight-\ht\blocksbox}%
\unvbox\blocksbox\pagebreak}

\begin{document}
\begin{BlocksEnv}
\begin{block}
\lipsum[1]
\end{block}
\vfill
\begin{block}
\lipsum[1]
\end{block}
\vfill
\begin{block}
\lipsum[1]
\end{block}
\end{BlocksEnv}

\begin{block}
\lipsum[1]
\end{block}
\MBlastvfill
\begin{block}
\lipsum[1]
\end{block}
\end{document}
MB
Administrateur
Administrateur
Messages : 7549
Inscription : samedi 28 mai 2005, 14:23
Statut actuel : Enseignant

Re: Conserver et réutiliser la valeur du dernier \vfill

Message non lu par MB »

Bonjour et merci pour cette proposition qui me semble tout à fait fonctionnelle, même si elle nécessite d'englober toute la première page dans un environnement, ce qui n'est pas forcément très dérangeant. Je vais regarder ça plus en détails très prochainement.
MB. (rejoignez pCloud afin d'obtenir 10Go de stockage en ligne gratuits)
Pas d'aide en message privé. Merci de consulter ce sujet avant de poster votre premier message.
touhami
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 467
Inscription : dimanche 11 février 2007, 11:45

Re: Conserver et réutiliser la valeur du dernier \vfill

Message non lu par touhami »

Bonjour.
Par souci d'exhaustivité, j'ai modifié la définition de l'environnement BlocksEnv, au cas où la taille des blocks dépasserait la taille d'une page.

Code : Tout sélectionner

\newenvironment{BlocksEnv}{%
\newpage
\setbox\blocksbox\vbox\bgroup
}{\egroup
\setlength{\entreblocks}{.5\dimexpr\textheight-\ht\blocksbox}%
\ifdim\entreblocks>0pt\global\setlength{\entreblocks}{\entreblocks}\fi
\unvbox\blocksbox\pagebreak}