Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
[bash] script pour LaTeX : tab2tex.sh
View unanswered posts
View posts from last 24 hours

 
Reply to topic    Gentoo Forums Forum Index French
View previous topic :: View next topic  
Author Message
swilmet
n00b
n00b


Joined: 14 Mar 2007
Posts: 70
Location: Belgium

PostPosted: Tue Feb 03, 2009 2:08 am    Post subject: [bash] script pour LaTeX : tab2tex.sh Reply with quote

Salut à tous !
J'ai écris il y a quelques temps un script bash pour se simplifier la vie en LaTeX, il y a assez de commentaires je pense pour savoir de quoi il s'agit :
Code:

#!/bin/bash
# tab2tex.sh
# auteur : Sébastien Wilmet

# Fait plusieurs opérations pour faciliter le passage d'un document écrit avec
# un tableur (OOo Calc, Excell, ...) à LaTeX.
# Il faut d'abord faire un copier/coller du tableur dans un simple fichier texte.
# Les colonnes sont alors séparées par des tabulations normalement. Si ce n'est
# pas le cas, le script ne fonctionnera pas.

# traite le fichier passé en argument, lit l'entrée standard si pas d'argument
# ajoute & entre chaque colonne et \\ après chaque ligne
# option -l : rajoute \hline (ligne horizontale) entre chaque ligne
# option -c : appliquer une commande à la première colonne (mettre en gras p. ex)
#    exemple : tab2tex -l -c textbf sample

usage="Usage : $0 [-l] [-c commande] [nomfichier]"

option_c=0
while getopts ":lc:" opt; do
   case $opt in
      l )
         hline=' \\hline'
         ;;

      c )
         option_c=1
         commande=$OPTARG
         ;;

      \?)
         echo $usage
         exit 1
         ;;
   esac
done

shift $(($OPTIND - 1))
nomfichier=$1

# 1) & entre chaque colonne
# 2) \\ après chaque ligne
# 3) si option -l, ajoute \hline après chaque ligne

# Si option c
if [ "$option_c" -eq 1 ]; then
   sed -e "s/^[^\t]*/\\\\$commande\{&\}/" \
   -e 's/\t/\t \& /g' -e 's/^.*$/& \\\\/' -e "s/^.*$/&$hline/" $nomfichier
   exit $?
fi
sed -e 's/\t/\t \& /g' -e 's/^.*$/& \\\\/' -e "s/^.*$/&$hline/" $nomfichier


J'ai une petite question, comment faire pour ne pas dupliquer le code à la fin, il y a une partie en commun dans les 2 commandes sed.

Toute suggestion d'amélioration est aussi le bienvenu :)


Last edited by swilmet on Thu Feb 05, 2009 12:02 pm; edited 1 time in total
Back to top
View user's profile Send private message
VIKING
n00b
n00b


Joined: 05 Oct 2008
Posts: 57
Location: France

PostPosted: Tue Feb 03, 2009 9:57 am    Post subject: Reply with quote

Salut,

je ne peux pas tester mais à priori tu doit pouvoir utiliser une variable genre :

Code:
cmd=`-e 's/\t/\t \& /g' -e 's/^.*$/& \\\\/' -e "s/^.*$/&$hline/" $nomfichier `


puis :

Code:
sed -e "s/^[^\t]*/\\\\$commande\{&\}/" \
   $cmd
   exit $?
fi
sed $cmd


par contre je ne sais jamais si faut utiliser des espaces ou non avec le = et si c'est des ' ou " ou ` pour une commande.

Si tu as le courage peut être que avec du perl se serais plus simple . . . ^^"
Back to top
View user's profile Send private message
geekounet
Bodhisattva
Bodhisattva


Joined: 11 Oct 2004
Posts: 3756
Location: Lyon, France

PostPosted: Tue Feb 03, 2009 10:38 am    Post subject: Reply with quote

#!/usr/bin/env bash au lieu de #!/bin/bash c'est mieux pour la portabilité ;)

Sinon, ça te dit que je déplace ce topic dans Documentations, Astuces et Scripts ? Il sera plus facilement retrouvable. :)
_________________
Google+ | Twitter
Back to top
View user's profile Send private message
XavierMiller
Moderator
Moderator


Joined: 23 Jul 2004
Posts: 5449
Location: ~Brussels - Belgique

PostPosted: Tue Feb 03, 2009 10:39 am    Post subject: Reply with quote

Ou utiliser une function ;)
_________________
Xavier Miller
(FR) Merci de respecter les règles du forum.
http://www.xaviermiller.be
Back to top
View user's profile Send private message
swilmet
n00b
n00b


Joined: 14 Mar 2007
Posts: 70
Location: Belgium

PostPosted: Tue Feb 03, 2009 11:45 am    Post subject: Reply with quote

@VIKING : merci je vais tester ça quand j'aurai un peu de temps.

@geekounet : oui c'est une bonne idée de le déplacer.

@XavierMiller : de tête je sais plus trop comment ça fonctionne, mais je jetterai un coup d'œil une fois.

Sinon ça vous intéresse un aide-mémoire LaTeX ?
J'en ai diffusé un dans mon école d'ingé, la particularité c'est que je fournis les fichiers *.tex où j'ai mis plein de commentaires pour tout expliquer.
Back to top
View user's profile Send private message
geekounet
Bodhisattva
Bodhisattva


Joined: 11 Oct 2004
Posts: 3756
Location: Lyon, France

PostPosted: Tue Feb 03, 2009 12:07 pm    Post subject: Reply with quote

Ok j'ai déplacé le topic. :)
_________________
Google+ | Twitter
Back to top
View user's profile Send private message
swilmet
n00b
n00b


Joined: 14 Mar 2007
Posts: 70
Location: Belgium

PostPosted: Wed Feb 04, 2009 12:46 pm    Post subject: Reply with quote

VIKING wrote:
Salut,

je ne peux pas tester mais à priori tu doit pouvoir utiliser une variable genre :

Code:
cmd=`-e 's/\t/\t \& /g' -e 's/^.*$/& \\\\/' -e "s/^.*$/&$hline/" $nomfichier `


puis :

Code:
sed -e "s/^[^\t]*/\\\\$commande\{&\}/" \
   $cmd
   exit $?
fi
sed $cmd


par contre je ne sais jamais si faut utiliser des espaces ou non avec le = et si c'est des ' ou " ou ` pour une commande.

Si tu as le courage peut être que avec du perl se serais plus simple . . . ^^"


J'ai essayé toutes les possibilités (` ' et ") mais aucune ne marche.
J'ai peut-être une autre solution, c'est d'utiliser des variables comme pour hline. Si les variables sont vides ça ne fait pas de changement.
Si je galère avec ça j'essaye une fonction.
Back to top
View user's profile Send private message
yoyo
Bodhisattva
Bodhisattva


Joined: 04 Mar 2003
Posts: 4273
Location: Lyon - France

PostPosted: Thu Feb 05, 2009 5:01 pm    Post subject: Reply with quote

Bonjour,

Je voulais juste vous faire part d'un greffon pour OOocalc : calc2latex issue d'une macro : http://calc2latex.sourceforge.net/.
Je ne sais pas s'il fonctionne correctement ni s'il est OS-indépendant mais ça peut être utile à d'autres.

Enjoy !
_________________
La connaissance s'accroît quand on la partage.
JCB
Back to top
View user's profile Send private message
swilmet
n00b
n00b


Joined: 14 Mar 2007
Posts: 70
Location: Belgium

PostPosted: Fri Feb 06, 2009 11:02 am    Post subject: Reply with quote

Le greffon fonctionne chez moi, pourtant il est écrit "Operating System: Windows".
Enfin tant mieux, je ne connaissais pas :)
Back to top
View user's profile Send private message
truc
Advocate
Advocate


Joined: 25 Jul 2005
Posts: 3199

PostPosted: Mon Feb 09, 2009 12:10 am    Post subject: Reply with quote

Bon, j'avais fait une pure reponse detaillee, mais je ne sais pour quelle raison le navigateur a quitte inopinement... SUPER...


Bref, en gros, j'parlais de gnused, et d'autres dont je ne connais pas forcement le nom, tu peux faire ca (la je parle des ; pour separer les commandes, mais regarde egalement comment on peut inserer des variables sans deubeulequoter tout le bouzin):
Code:
sed -e "s/^[^\t]*/\\\\$commande\{&\}/" \
   -e 's/\t/\t \& /g' -e 's/^.*$/& \\\\/' -e "s/^.*$/&$hline/" $nomfichier

=>
Code:
sed 's/^[^\t]*/\\\'"$commande"'\{&\}/ ;
   s/\t/\t \& /g ;
   s/^.*$/& \\\\/ ;
   s/^.*$/&'"$hline"'/' $nomfichier



En se basant sur ca tu pourrais trs bien imaginer que ton sed s'ecrive comme suit:
Code:
sed "$conditionnal_cmd"'
   s/\t/\t \& /g ;
   s/^.*$/& \\\\/ ;
   s/^.*$/&'"$hline"'/' $nomfichier


avec $conditionnal_cmd qui peut, ou non, valoir
Code:
s/^[^\t]*/\\\'"$commande"'\{&\}/' ;
, enfin a quelques choses pres, j'n'ai rien verifie, et avec Latex, il est fort possible que quelques antislash me fassent un peu la gueule...


plus plus
_________________
The End of the Internet!
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index French All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum