[LaTeX ; Sweave] Tableaux trop long

Postez ici vos questions, réponses, commentaires ou suggestions - Les sujets seront ultérieurement répartis dans les archives par les modérateurs

Modérateur : Groupe des modérateurs

Bastien Gamboa
Messages : 151
Enregistré le : 13 Jan 2011, 21:31

[LaTeX ; Sweave] Tableaux trop long

Messagepar Bastien Gamboa » 19 Sep 2012, 13:05

Bonjour,

Je réalise des fiches PDF à partir de bases de données. De ce fait j'utilise l'interaction entre R et LaTeX.
Je crée des tableaux dans R et les exportent vers LaTeX via la fonction xtable du package du même nom.
Ces tableaux ont des tailles variables, il arrive donc parfois (souvent) qu'ils ne puissent tenir en une seule page. Je sais que LaTeX gère bien des tableaux sur plusieurs pages mais mon problème est que je souhaite que chaque tableau soit inclus dans un rectangle coloré avec une bordure d'une autre couleur que le centre du rectangle. Pour ce faire j'utilise une \fcolorbox à l'intérieur d'une \minipage. Les \minipages étant des "boîtes" elles ne peuvent être scindées en plusieurs pages, et donc les tableaux trop grand sortent de la page du PDF.

Je vois plusieurs approches pour gérer ce problème :
(1) une fonction (R) déjà conçue permettant de découper le tableau dans R en autant de partie qu'il faudra de pages PDF pour le contenir en entier.
(2) créer cette fonction (R). Mais cela nécessite de connaître la dimension que prend le tableau dans LaTeX (et là je ne vois que quelque chose de très compliqué calculant (R) la largeur et la hauteur des contenus des cellules du tableau, sachant que si la largeur du tableau est trop large pour la page PDF il faut que le contenu des cellules puissent aller à la ligne et donc imposer une largeur fixe pour les colonnes. Largeur fixe à calculer ...).
(3) une fonction (R) qui reçoit par LaTeX les dimensions dudit tableau. Ces dimensions sont ensuite utilisées pour découper le tableau dans R afin qu'il tiennent à l'intérieur de chaque page PDF.
(4) une fonction (LaTeX) qui applique le rectangle coloré avec une bordure d'une autre couleur, en arrière plan du corps du texte des pages PDF. D'après les recherches que j'ai effectuées, l'arrière plan est difficilement personnalisable.
(5) abandonner le rectangle coloré.
(6) ?

L'approche (5) ne me satisfait pas, évidemment.
L'approche (2) est envisageable mais en dernier recours.
Les approches (1) et (4) sont préférées mais je ne les connais pas.
L'approche (3) est très intéressante, mais des recherches que j'ai fais, le dialogue entre R et LaTeX semble n'être qu'a sens unique : R -> LaTeX.
L'approche (6) et d'autres auxquels je n'ai pas pensé. Peut-être en avez vous ?


Je ne suis pas sur que la solution à ce problème concerne R mais au cas où je poste ce message. Je vous prie de m'excuser d'avance si ce sujet ne respecte pas les objectifs du forum. Mais savoir que ce problème ne concerne pas R est déjà une avancée dans sa résolution !

Bastien

Renaud Lancelot
Messages : 2484
Enregistré le : 16 Déc 2004, 08:01
Contact :

Messagepar Renaud Lancelot » 20 Sep 2012, 06:31

A tout hasard, avez-vous essayé d'utiliser l'argument tabular.environment (fonction print.xtable) ? Voir l'aide de print.xtable ainsi que l'exemple à la fin de l'aide de xtable.
Renaud

Bastien Gamboa
Messages : 151
Enregistré le : 13 Jan 2011, 21:31

Messagepar Bastien Gamboa » 20 Sep 2012, 07:29

Non je n'avais pas essayé, mais après l'avoir fait cela ne fonctionne pas. Toujours le même problème, le tableau sort de la page PDF puisqu'inclus dans une \minipage ne pouvant (à ma connaissance) être scindée en plusieurs pages.

Vous avez d'autres pistes ?

Bastien

Stéphane Adamowicz
Messages : 206
Enregistré le : 07 Mar 2012, 10:13
Contact :

Messagepar Stéphane Adamowicz » 20 Sep 2012, 07:31

Je ne suis pas sûr que vous trouverez une solution simple à ce problème. Mais, à tout hasard, jetez un oeil sur la bibliothèque « Hmisc » que j'utilise de préférence à « xtable ». Ses fonctions format.df et latex offrent considérablement plus de souplesse dans le formatage des tableaux en Latex. Entre autres, latex a un argument longtable qui vous concerne, et un argument cellTexCmds qui permet de transmettre à Latex des instructions de formatage de cellule en code Latex. Malheureusement, l'usage de cette dernière m'est obscur et la documentation n'éclaire que faiblement sur son usage.

Bon courage ...
Stéphane Adamowicz
INRA, UR 1115 Plantes et Systèmes de Culture Horticoles (PSH)
domaine St Paul, site agroparc
84914 Avignon, cedex 9

Bastien Gamboa
Messages : 151
Enregistré le : 13 Jan 2011, 21:31

Messagepar Bastien Gamboa » 20 Sep 2012, 09:54

Je ne suis pas sur non plus qu'une solution simple existe (mais je garde espoir au cas où !).

J'ai déjà essayer \longtable dans LaTeX, mais il ne m'aide pas non plus, car au sein de la \minipage incluant le tableau, longtable n'a pas la possibilité d'aller à la page suivante.

Pour garder l'environnement \minipage afin de réaliser le rectangle coloré avec un cadre, je pense qu'il n'y a que les approches (1), (2), (3) et (6) qui sont envisageables.
Sinon l'abandonner, et alors restent les approches (4) et (6).
Dans tous les cas je n'y arrive pas.

Dans l'attente d'autres suggestions, je travail sur l'approche (2) qui ne pourra être généralisée qu'à quelques types de tableaux particuliers. Les différentes dimensions (largeur et hauteur d'un caractère, d'une ligne, ...) étant mesuré au double décimètre (oui je sais ce n'est pas du tout optimal, mais pour le moment je n'ai pas mieux), et donc pour une seule taille de police.

Bastien

Bastien Gamboa
Messages : 151
Enregistré le : 13 Jan 2011, 21:31

Messagepar Bastien Gamboa » 20 Sep 2012, 12:52

Pour info, mon problème est solutionné à 50 % grâce à ici.

Maintenant mes tableaux peuvent avoir la hauteur qu'ils veulent, grâce au package framed (rectangle coloré avec cadre) et la fonction longtable (tableau sur plusieurs pages).

Il me reste à solutionner la largeur du tableau, si vous avez des idées...
Bastien


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Google [Bot] et 0 invité