Aligner tableau/image avec une liste

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.
ezize
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 104
Inscription : samedi 05 août 2006, 13:01

Aligner tableau/image avec une liste

Message non lu par ezize »

Bonjour,

Voici le modèle de mon fichier .tex :

Code : Tout sélectionner

\documentclass[A4paper,french]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[francais]{babel}
\usepackage{enumerate}
\usepackage{enumitem}
\usepackage{array}
\usepackage[left=1cm,right=1cm,top=1cm,bottom=1cm]{geometry}

\begin{document}
%
\begin{tabular}{lcr}
\begin{minipage}{9cm}
%
\begin{enumerate} %debut de la liste
\item question 1...
\item question 2...
\item question 3...
\item question 4...
\end{enumerate}
%
\end{minipage}
&
\hspace*{1cm}
&
\begin{minipage}{5cm}
%
\begin{tabular}{|l|}
\hline
ici \\
je place un tableau \\
ou j'insère une image \\
\hline
\end{tabular}
%
\end{minipage}
%\begin{enumerate}[resume] %suite de la liste
%\item question 3...
%\item question 4...
%\end{enumerate}
%
\end{tabular}
%
\end{document}
Et voici le résultat :

Image

Je voudrais savoir comment aligner les questions 1 et 2 avec le tableau (placé à droite) et poursuivre cette liste en mettant les questions 3 et 4 après. Cela me permet d'exploiter l'espace vide en bas du tableau (lorsque les questions 3 et 4 prennent toute la largeur de la page).

J'ai essayé d'utiliser l'option "resume" dans "enumerate" après "\end{tabular}" (j'ai laissé ces lignes de codes commentées) mais ça me donne une erreur...

Merci bien d'avance !
balf
Modérateur spécialisé
Modérateur spécialisé
Messages : 4054
Inscription : mercredi 02 janvier 2008, 23:18

Re: Aligner tableau/image avec une liste

Message non lu par balf »

Bonsoir,

À mon avis, le mieux est d'utiliser la clef rightmargin de l'extension enumitem (évitez de charger enumerate en même temps, il risque d'y avoir des conflits) d'une part, et le paquet de macros plain TeX insbox de l'autre. Ce paquet définit des commandes\InsertBoxL, \InsertBoxR et \InsertBoxC, qui prennent deux arguments: le numéro de la ligne du paragraphe suivant à partir de laquelle les lignes seront raccourcies pour permettre l'insertion de la boîte, et le contenu de ladite boîte. En outre , il peut y avoir un argument optionnel (qui, contrairement à toutes les traditions, est le dernier argument) pour décider de lignes supplémentaires raccourcies, au cas que le compilateur ferait un calcul erroné du nombre de lignes nécessaires pour placer la boîte.

Voici un code qui illustre le processus. J'en ai profité pour simplifier un peu le code. Je signale aussi que, depuis plus de 3 ans, il n'est plus nécessaire de charger inputenc avec l'option utf8, vu que c'est l'encodage que latex attend par défaut.

B. A.

Code : Tout sélectionner

\documentclass[A4paper,french]{article}
\usepackage[T1]{fontenc}
\usepackage{array, graphicx}
\usepackage{babel}
\usepackage{enumitem}
\usepackage[margin=1cm]{geometry}
\input{insbox}

\begin{document}

\InsertBoxR{1}{\includegraphics{dejeuner}}
\begin{enumerate}[rightmargin=6cm]%debut de la liste
\item There was a Family of Two old Parrots and Seven young Parrots.
\item There was a Family of Two old Storks and Seven young Storks.
\item There was a Family of Two old Geese, and Seven young Geese.
\item There was a Family of Two old Owls, and Seven young Owls.
\item There was a Family of Two Old Guinea Pigs and Seven young Guinea Pigs.
\item There was a Family of Two old Cats and Seven young Cats,
\item And there was a Family of Two old Fishes and Seven young Fishes.
\end{enumerate}
%
\end{document}
alignertableau-image_avec_liste.pdf
(22.17 Kio) Téléchargé 53 fois
ezize
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 104
Inscription : samedi 05 août 2006, 13:01

Re: Aligner tableau/image avec une liste

Message non lu par ezize »

Bonsoir,

Merci balf pour ces précisions...

J'ai réécris mon code d'origine en me basant sur ces précisions. Le voici :

Code : Tout sélectionner

\documentclass[A4paper,french]{article}
\usepackage[T1]{fontenc}
\usepackage{array, graphicx}
\usepackage{babel}
\usepackage{enumitem}
\usepackage[margin=1cm]{geometry}
\input{insbox}

\begin{document}

\InsertBoxR{1}{%
\begin{tabular}{|l|}
\hline
ici \\
je place un tableau \\
ou j'insère une image \\
\hline
\end{tabular}
}
%
\begin{enumerate}[rightmargin=5cm]
\item question 1...
\item question 2...
\item question 3...
\item question 4... ici une question très longue qui prend toute la largeur de la page et que je voudrais qu'elle apparaisse ainsi... 
\end{enumerate}

\end{document}
Je voudrais savoir comment faire pour que la question 4 prenne toute la largeur de la page.

Merci bien d'avance !
balf
Modérateur spécialisé
Modérateur spécialisé
Messages : 4054
Inscription : mercredi 02 janvier 2008, 23:18

Re: Aligner tableau/image avec une liste

Message non lu par balf »

Bonjour,

Voici une façon de faire: on interrompt enumerate après la 3e question, et après celle-ci on reprend tout de suite un autre environnement, en utilisant la clef resume pour ne pas reprendre la numérotation à 1. De plus, on utilise la clef after avec le premier environment pour ajouter un espace vertical négatif, afin que les items 3 et 4 aient l'espacement normal.

B. A.

Code : Tout sélectionner

\documentclass[a4paper,french]{article}
\usepackage[T1]{fontenc}
\usepackage{array, graphicx}
\usepackage{babel}
\usepackage{enumitem}
\usepackage[margin=1cm ]{geometry}
\input{insbox}

\begin{document}

\InsertBoxR{1}{%
\begin{tabular}{|l|}
\hline
ici \\
je place un tableau \\
où j'insère une image \\
\hline
\end{tabular}
}
%
\begin{enumerate}[rightmargin=5cm, after=\vspace*{\dimexpr-\topsep+\partopsep}]
\item question 1...
\item question 2...
\item question 3...
\end{enumerate}
\begin{enumerate}[resume]
\item question 4... ici surgit une question fort longue qui s’étale sur toute la largeur de la page et dont je voudrais qu'elle apparût ainsi...
\end{enumerate}

\end{document}  
]
alignertableau-image_avec_liste-1.pdf
(18.59 Kio) Téléchargé 35 fois
Dernière modification par balf le mercredi 16 juin 2021, 15:25, modifié 2 fois.
ezize
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 104
Inscription : samedi 05 août 2006, 13:01

Re: Aligner tableau/image avec une liste

Message non lu par ezize »

Merci !

J'ai fait ce code :

Code : Tout sélectionner

\documentclass[A4paper,french]{article}
\usepackage[T1]{fontenc}
\usepackage{array, graphicx}
\usepackage{babel}
\usepackage{enumitem}
\usepackage[margin=1cm]{geometry}
\input{insbox}

\begin{document}

\InsertBoxR{1}{%
\begin{tabular}{|l|}
\hline
ici \\
je place un tableau \\
ou j'insère une image \\
\hline
\end{tabular}
}
%
\begin{enumerate}[rightmargin=5cm]
\item question 1...
\item question 2...
\item question 3...
\end{enumerate}
\begin{enumerate}[resume]
\item question 4... ici une question très longue qui prend toute la largeur de la page et que je voudrais qu'elle apparaisse ainsi... 
\end{enumerate}

\end{document}
Et j'ai obtenu :

Image

Par contre, je n'ai pas su ajouter "after"...
balf
Modérateur spécialisé
Modérateur spécialisé
Messages : 4054
Inscription : mercredi 02 janvier 2008, 23:18

Re: Aligner tableau/image avec une liste

Message non lu par balf »

Je suis désolé, j'ai eu un accident de copier-coller, et j'ai omis de vérifier que je postais bien le code idoine. C'est réparé maintenant, vou pouvez essayer le nouveau code.

B. A.
ezize
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 104
Inscription : samedi 05 août 2006, 13:01

Re: Aligner tableau/image avec une liste

Message non lu par ezize »

Merci bien !

Ma curiosité m'amène à chercher comment faire si on voudrait continuer encore la liste en insérant une deuxième image ou tableau comme au début du fichier.

Voici le code :

Code : Tout sélectionner

\documentclass[a4paper,french]{article}
\usepackage[T1]{fontenc}
\usepackage{array, graphicx}
\usepackage{babel}
\usepackage{enumitem}
\usepackage[margin=1cm ]{geometry}
\input{insbox}

\begin{document}

\InsertBoxR{1}{%
\begin{tabular}{|l|}
\hline
ici \\
je place un tableau \\
où j'insère une image \\
\hline
\end{tabular}
}
%
\begin{enumerate}[rightmargin=5cm, after=\vspace*{\dimexpr-\topsep+\partopsep}]
\item question 1...
\item question 2...
\item question 3...
\end{enumerate}
\begin{enumerate}[resume]
\item question 4... ici surgit une question fort longue qui s’étale sur toute la largeur de la page et dont je voudrais qu'elle apparût ainsi...
\end{enumerate}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\InsertBoxR{1}{%
\begin{tabular}{|l|}
\hline
ici \\
je place un tableau \\
où j'insère une image \\
\hline
\end{tabular}
}
%
\begin{enumerate}[resume, rightmargin=5cm, after=\vspace*{\dimexpr-\topsep+\partopsep}]
\item question 5...
\item question 6...
\item question 7...
\end{enumerate}
\end{document}  
Et le résultat :

Image

Y a-t-il une possibilité pour supprimer l'espace supplémentaire entre les questions 4 et 5 ?

Merci !
balf
Modérateur spécialisé
Modérateur spécialisé
Messages : 4054
Inscription : mercredi 02 janvier 2008, 23:18

Re: Aligner tableau/image avec une liste

Message non lu par balf »

Bonsoir,

Par essais et erreurs, voici ce qui donne un résultat acceptable (à mon gré, en tout cas):
a) Insérer une ligne blanche entre le second\InsertBoxR{…} et le dernier environnement enumerate.

b) Insérer ce dernier avec les options suivantes : \begin{enumerate}[resume, rightmargin=5cm, before=\vspace*{\dimexpr-\baselineskip+\topsep+\partopsep}]

B. A.
pzorba75
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 220
Inscription : mardi 20 août 2013, 04:50
Localisation : Paris

Re: Aligner tableau/image avec une liste

Message non lu par pzorba75 »

Je pinaille certes un peu, mais l'utilisation de Latex l'incite. Est-il possible de bien justifier sur la marge droite l'image encadrée?
On se lasse de tout, excepté d'apprendre.
Virgile
balf
Modérateur spécialisé
Modérateur spécialisé
Messages : 4054
Inscription : mercredi 02 janvier 2008, 23:18

Re: Aligner tableau/image avec une liste

Message non lu par balf »

Bonsoir,
pzorba75 a écrit : jeudi 17 juin 2021, 06:15 Je pinaille certes un peu, mais l'utilisation de Latex l'incite. Est-il possible de bien justifier sur la marge droite l'image encadrée?
Il faudrait que je regarde le code utilisé. Je sais que ce paquetage ajoute une marge de 2mm sur chaque côté, donc, à mon avis, soit on essaie de ruser LaTeX, en lui faisant croire que la boîte insérée a un largeur inférieure de 2mm à ce qu'elle est réellement, soit on utilise xpatch pour supprimer la marge droite, mais cela suppose de comprendre de façon précise ce que fait insbox pour insérer ; en outre, je n'ai jamais essayé xpatch avec plain TeX, de sorte que je ne sais pas s'il fonctionne avec. Je vais essayer d'y réfléchir.

B. A.