View previous topic :: View next topic |
Author |
Message |
swilmet n00b
![n00b n00b](/images/ranks/rank_rect_0.gif)
Joined: 14 Mar 2007 Posts: 70 Location: Belgium
|
Posted: Tue Feb 03, 2009 2:08 am Post subject: [bash] script pour LaTeX : tab2tex.sh |
|
|
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 ![Smile :)](images/smiles/icon_smile.gif)
Last edited by swilmet on Thu Feb 05, 2009 12:02 pm; edited 1 time in total |
|
Back to top |
|
![](templates/gentoo/images/spacer.gif) |
VIKING n00b
![n00b n00b](/images/ranks/rank_rect_0.gif)
Joined: 05 Oct 2008 Posts: 57 Location: France
|
Posted: Tue Feb 03, 2009 9:57 am Post subject: |
|
|
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 |
|
![](templates/gentoo/images/spacer.gif) |
geekounet Bodhisattva
![Bodhisattva Bodhisattva](/images/ranks/rank-bodhisattva.gif)
![](images/avatars/42499887147a7828d56a1b.png)
Joined: 11 Oct 2004 Posts: 3772
|
Posted: Tue Feb 03, 2009 10:38 am Post subject: |
|
|
#!/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. ![Smile :)](images/smiles/icon_smile.gif) |
|
Back to top |
|
![](templates/gentoo/images/spacer.gif) |
xaviermiller Bodhisattva
![Bodhisattva Bodhisattva](/images/ranks/rank-bodhisattva.gif)
![](images/avatars/18949772545903151f2312b.jpg)
Joined: 23 Jul 2004 Posts: 8723 Location: ~Brussels - Belgique
|
Posted: Tue Feb 03, 2009 10:39 am Post subject: |
|
|
Ou utiliser une function ![Wink ;)](images/smiles/icon_wink.gif) _________________ Kind regards,
Xavier Miller |
|
Back to top |
|
![](templates/gentoo/images/spacer.gif) |
swilmet n00b
![n00b n00b](/images/ranks/rank_rect_0.gif)
Joined: 14 Mar 2007 Posts: 70 Location: Belgium
|
Posted: Tue Feb 03, 2009 11:45 am Post subject: |
|
|
@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 |
|
![](templates/gentoo/images/spacer.gif) |
geekounet Bodhisattva
![Bodhisattva Bodhisattva](/images/ranks/rank-bodhisattva.gif)
![](images/avatars/42499887147a7828d56a1b.png)
Joined: 11 Oct 2004 Posts: 3772
|
Posted: Tue Feb 03, 2009 12:07 pm Post subject: |
|
|
Ok j'ai déplacé le topic. ![Smile :)](images/smiles/icon_smile.gif) |
|
Back to top |
|
![](templates/gentoo/images/spacer.gif) |
swilmet n00b
![n00b n00b](/images/ranks/rank_rect_0.gif)
Joined: 14 Mar 2007 Posts: 70 Location: Belgium
|
Posted: Wed Feb 04, 2009 12:46 pm Post subject: |
|
|
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 |
|
![](templates/gentoo/images/spacer.gif) |
yoyo Bodhisattva
![Bodhisattva Bodhisattva](/images/ranks/rank-bodhisattva.gif)
![](images/avatars/1382399841473c166bf2c72.jpg)
Joined: 04 Mar 2003 Posts: 4273 Location: Lyon - France
|
Posted: Thu Feb 05, 2009 5:01 pm Post subject: |
|
|
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 |
|
![](templates/gentoo/images/spacer.gif) |
swilmet n00b
![n00b n00b](/images/ranks/rank_rect_0.gif)
Joined: 14 Mar 2007 Posts: 70 Location: Belgium
|
Posted: Fri Feb 06, 2009 11:02 am Post subject: |
|
|
Le greffon fonctionne chez moi, pourtant il est écrit "Operating System: Windows".
Enfin tant mieux, je ne connaissais pas ![Smile :)](images/smiles/icon_smile.gif) |
|
Back to top |
|
![](templates/gentoo/images/spacer.gif) |
truc Advocate
![Advocate Advocate](/images/ranks/rank-G-1-advocate.gif)
![](images/avatars/128604942846f4cd99d01cb.jpg)
Joined: 25 Jul 2005 Posts: 3199
|
Posted: Mon Feb 09, 2009 12:10 am Post subject: |
|
|
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 |
|
![](templates/gentoo/images/spacer.gif) |
|