Création de tableaux complexes en LaTeX...sur plusieurs pages! - Divers - Programmation
Marsh Posté le 31-12-2005 à 15:01:24
Faut pas tenter de faire en LaTex ce que tu peux faire avec Excel... question de philosophie...
Marsh Posté le 31-12-2005 à 16:25:20
http://www.grappa.univ-lille3.fr/FAQ-LaTeX/23.9.html
Marsh Posté le 31-12-2005 à 16:26:21
http://www.jam-software.com/freeware/xl2latex.zip
Marsh Posté le 02-01-2006 à 13:34:58
Merci de ces réponses, mais en fait je dois écrire un code JAVA qui créé automatiquement ce tableau. J'ai déjà tenté d'obtenir le code LaTeX de ce tableau avec xl2talex, sans succès parce que mon tableau est trop complexe.
Je peux t'envoyer un modèle (format tex) d'un tableau qui se rapproche beaucoup de ce que je veux obtenir. Le problème est que quand je l'affiche, il est beaucoup plus grand qu'une page mais je n'arrive pas à le découper sur plusieurs. Je sais que la solution est d'utiliser supertabular ou longtable, mais je vois pas comment. C'est très chiant en tout cas.
Marsh Posté le 05-01-2006 à 18:39:21
ReplyMarsh Posté le 05-01-2006 à 20:56:57
AlatakLaTeX a écrit : Ca y est j'ai trouvé comment faire. |
Vas-y balance. J'ai vraiment pas compris ton but là, ça m'éclairerait...
Tu essayes de générer du code source LaTeX en java ?
Marsh Posté le 05-01-2006 à 21:09:54
pour l'instant je sais faire un tableau complexe sur plusieurs pages en latex, je cherche encore comment le créer automatiquement avec du code java (cad que sous java je puisse créer le fichier tex, ce tableau doit être de différentes formes en fonction de paramètres que je rentrerai à l'aide d'une interface graphique) et ensuite compiler automatiquement le tableau...en passant aussi par un code java...je sais pas si je suis clair, mais c'est assez chaud en tout cas.
Marsh Posté le 05-01-2006 à 21:30:02
AlatakLaTeX a écrit : pour l'instant je sais faire un tableau complexe sur plusieurs pages en latex, je cherche encore comment le créer automatiquement avec du code java (cad que sous java je puisse créer le fichier tex, ce tableau doit être de différentes formes en fonction de paramètres que je rentrerai à l'aide d'une interface graphique) et ensuite compiler automatiquement le tableau...en passant aussi par un code java...je sais pas si je suis clair, mais c'est assez chaud en tout cas. |
En gros tu dois
1) générer du latex en java
2) compiler du latex en java
Tordu comme truc...
C'est pour un TP ou tu fais une interface graphique pour du latex, ou tu fais ça pour le plaisir ?
Marsh Posté le 05-01-2006 à 23:48:22
c'est un projet pour une entreprise...à terme ça deviendra un logiciel très simple qu'ils utiliseront mais pour l'instant c'est sûr que c'est tordu
Marsh Posté le 06-01-2006 à 10:04:51
AlatakLaTeX a écrit : c'est un projet pour une entreprise...à terme ça deviendra un logiciel très simple qu'ils utiliseront mais pour l'instant c'est sûr que c'est tordu |
Tu dois faire un IDE pour latex, style kile, texmaker et texnikcenter ? Ou un wysiwyg à la lyx ?
Continue à poster ici, ça m'intéresse
Marsh Posté le 08-01-2006 à 01:38:58
AlatakLaTeX a écrit : Bonjour et bonnes fêtes à tous, |
Si tu veux te lancer dans un langage de script comme perl, ce sera beaucoup plus simple !
déjà, le programme perl compile et interpréte successivement, donc pas besoin de compiler à chaque fois...
de plus, un langage de script est fait pour ce type de manipulation (je fais tout mes tableaux et graphes comme ça : j'ai juste à créer un fichier INPUT avec mes données, et le programme me demande gentiment la taille des graphes, le nombre de colonnes pour tout bien ranger...) pour ça, regarde toutes ces histoires de formats
Marsh Posté le 08-01-2006 à 01:49:31
jagstang a écrit : Faut pas tenter de faire en LaTex ce que tu peux faire avec Excel... question de philosophie... |
la philosophie excel, ça me fait bien rire :
si il s'agit d'utiliser les macros excel pour essayer de faire la même chose qu'avec un langage de script pour générer du code latex, j'aimerais bien voir ça :
do {
I - je clique sur l'icone
II - je clique sur le deuxième icone
...
CLV - je clique
...
CMXXXIX - ça plante
} while (planté)
Marsh Posté le 08-01-2006 à 09:26:34
Jeddo a écrit : Tu dois faire un IDE pour latex, style kile, texmaker et texnikcenter ? Ou un wysiwyg à la lyx ? |
Non simplement une interface qui édite des formulaires contenant principalement des tableaux. Ces formulaires sont stockés au format tex pour prendre moins de place. Le choix de programmer en JAVA et d'éditer en LaTeX ne peuvent pas changer, vu que c'est plus ou moins imposé. Donc je cherche une solution pour autocompiler et éditer un fichier tex en JAVA (sachant que le fichier Tex doit pouvoir d'éditer différemment en fonction des choix de l'utilisateur, après quelques selections à la souris).
Mais je vais ke truc que tu me propose pour autocompiler.
Sinon, pour ceux que ça intéresse, je recommande vivement d'utiliser le package longtable pour créer des tableaux sur plusieurs pages en LaTeX; le package supertabular est moins bien fait et ne fonctionne pas toujours!
Marsh Posté le 08-01-2006 à 14:11:14
AlatakLaTeX a écrit : Non simplement une interface qui édite des formulaires contenant principalement des tableaux. Ces formulaires sont stockés au format tex pour prendre moins de place. Le choix de programmer en JAVA et d'éditer en LaTeX ne peuvent pas changer, vu que c'est plus ou moins imposé. Donc je cherche une solution pour autocompiler et éditer un fichier tex en JAVA (sachant que le fichier Tex doit pouvoir d'éditer différemment en fonction des choix de l'utilisateur, après quelques selections à la souris). |
Je ne comprends pas tout. Tu vas présenter à l'utilisateur une interface graphique, en java je suppose, où il pourra éditer un tableau (objet Table ou JTable) ? Et tes tableaux sont stockés dans un fichier au format .tex (au passage bon courage pour parser le fichier) ? Bon pourquoi pas...
Citation : Mais je vais ke truc que tu me propose pour autocompiler. |
En fait, si je comprends bien, tu fournis l'interface en java et les utilisateurs, en cliquant quelque part, compile leur document pour produire un dvi, ps ou pdf ?
C'est vrai que le choix de cette entreprise est quelque peu bizarre, sachant que 1) chaque machine doit avoir un jre et un compilateur latex (quel environnement au fait ?) 2) c'est vrai qu'openoffice fournit la même chose. Maintenant si l'entreprise veut ça pour pas payer de licence à Micro$oft, autant lui proposer openoffice, non ?
Marsh Posté le 08-01-2006 à 17:16:32
Jeddo a écrit : Je ne comprends pas tout. Tu vas présenter à l'utilisateur une interface graphique, en java je suppose, où il pourra éditer un tableau (objet Table ou JTable) ? Et tes tableaux sont stockés dans un fichier au format .tex (au passage bon courage pour parser le fichier) ? Bon pourquoi pas...
|
Ouais, vrai pour le 1), d'ailleurs c'est lequel le compilateur latex le plus léger à ton avis (étant donné qu'il va me falloir manipuler que 4/5 packages...et comment je les installe localement? faut qu'ils soient dans le même répertoire que le compilateur?
En fait OpenOffice est un truc trop générique; on ne veut qu'automatiser l'édition de plusieurs documents qui contiennent du texte ou des tableaux.
Tu vois ce que je veux dire? Merci de ton aide au fait!
Marsh Posté le 08-01-2006 à 17:35:11
En ce qui concerne le compilateur latex, j'ai envie de dire : "ça dépend" !
Dans quel environnement travaillent les utilisateurs ? Window$ ? Linux ? Autre ? Les machines sont-elles en réseau ?
Si tu es sous win, je ne saurais trop te conseiller MikTeX qui propose un compilateur "léger" (façon de parler), où chaque pakage est installé à la demande. Renseigne-toi. Il y a d'autres distributions.
Sous linux, TeX est bien souvent là par défaut, donc pas trop de souci.
Ensuite, logiquement, le répertoire contenant les binaires pour compiler se trouvera dans le PATH, donc pas trop de souci non plus Réfléchi aussi au format que tu veux pour tes documents en sortie. Si c'est du pdf, deux moyens : latex -> dvips -> ps2df, ou pdflatex.
Pour toute tes questions concernant le LaTeX, dirige-toi vers http://forum.hardware.fr/forum2.ph [...] w=0&nojs=0 et la faq donnée plus haut par JagStang.
N'hésite pas à mettre du code java ici.
Marsh Posté le 10-01-2006 à 09:57:31
Merci de tes réponses. J'arrive à générer mon fichier tex. Maintenant je cherche à le compiler, mais mon runtime ne marche pas. Si tu veux jeter un coup d'oeil au code (en fait j'ajoute aussi à rapport.tex des lignes contenues dans un fichier begin_doc.txt). Je sais pas si tu vas catcher le truc, mais bon au moins je n'aurai "pas hésité" à mettre du code java.
Merci de ton aide!
Le code:
public void enregistrer () {
try {
String texte = new String(jTextArea1.getText());
FileWriter lu = new FileWriter("rapport.tex" );
FileInputStream begindoc = new FileInputStream ("begin_doc.txt" );
BufferedWriter out = new BufferedWriter(lu);
int n;
while ((n = begindoc.available()) > 0) {
//chaque caractère est associé à 1 byte
byte[] b = new byte[n];
int result = begindoc.read(b);
//fin du flux = plus rien à lire = sortie de la boucle
if (result == -1) break;
String s = new String(b);
out.write(s);
}
out.write(texte);
out.write("\\end{document}" );
out.close();
// Flux d'entrée
//nombre de caractères dans le fichier
//tant que ce nombre de caractères est supérieur à 0...
} catch(Exception err) {;}
try {
Runtime.getRuntime().exec("latex rapport.tex" );
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
Marsh Posté le 10-01-2006 à 11:00:59
OK, je viens de trouve mon blème, c'est la commande latex rapport.tex qu'il faut manipuler avec précautions, il lui faut un chemin absolu entre guillemets. Ca donne ça donc:
Runtime.getRuntime().exec("latex "c:\\workspace\\projetTex\\rapport.tex"" );
Après on peut aussi créer un pdf avec
Runtime.getRuntime().exec("pdflatex "c:\\workspace\\projetTex\\rapport.tex"" );
Après, vous pouvez aussi faire une version optimisée en créant une méthode CmdExec qui éxécute les runtime et un petit fichier compileTex.bat qui contient les lignes de code dos pour la compilation latex et la conversion en pdf.
En gros, ça donne ça:
//La méthode CmdExec
public void CmdExec(String cmdline) {
try {
String line;
Process p = Runtime.getRuntime().exec(cmdline);
BufferedReader input = new BufferedReader
(new InputStreamReader(p.getInputStream()));
while ((line = input.readLine()) != null) {
System.out.println(line);
}
input.close();
}
catch (Exception err) {
err.printStackTrace();
}
}
//Son éxécution dans une autre méthode
try {
CmdExec("cmd /c compiletex.bat " );
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Et enfin le contenu du .bat
latex "C:\workspace\Test Write Text\rapport.tex"
pdflatex "C:\workspace\Test Write Text\rapport.tex"
Voilà, c'est très beau, ça marche très bien.
A+
Marsh Posté le 10-01-2006 à 13:12:20
Moi ce qui me gènerait, c'est cette histoire de chemin absolu... J'aime bien quand c'est générique et portable
Sinon tu m'as pas dit quelle distribution tu as choisie ?
Marsh Posté le 31-12-2005 à 14:20:38
Bonjour et bonnes fêtes à tous,
Je voudrais créer un tableau assez sous LaTeX, qui puisse en plus s'afficher sur plusieurs pages. Le tableau étant un peu complexe (car il demande la fusion de cellules d'une même colonne sur plusieurs lignes), j'ai du mal à utiliser les packages longtable et supertabular, car il faut pour ce la découper précisémment mon tableau sur plusieurs pages. Pour plus de clareté, je peux envoyer par mail à celui qui me répondra le tableau au format Excel que je souhaite obtenir en LaTeX.
Quelqu'un pourrait-il m'aider?
Merci d'avance!