Configuration de (xm)grace

Grace et plus précisément sa version graphique xmgrace (anciennement xmgr) est un outil permettant de concevoir des graphiques en deux dimensions (XY, polaire, logarithmique, boxplot …) ainsi que faire un peu d’analyse numérique (regression, interpolation, intégration …) et réaliser quelques traitements sur les données. Les graphiques obtenus sont de haute qualité et peuvent être exportés sous divers formats vectoriels (eps, ps, svg) ou non (png, jpg …). Le paquet est disponible sous ubuntu (apt://grace), fedora et la plupart des distributions linux.

site web : plasma-gate.weizmann.ac.il/Grace.

Accents et séparateur des décimaux

Par défaut, les accents ne sont pas pris en charge. Il faut passer un paramètre de langue au lancement de xmgrace pour pouvoir les utiliser. Sur la ligne de commande, lancer xmgrace de la façon suivante :

[user@machine] > LANG=C xmgrace

ou

[user@machine] > LANG=fr_FR xmgrace

Suivant votre distribution, le paramètre LANG=fr_Fr activera les accents et conservera un séparateur des décimaux avec une virgule, tandis que LANG=C activera les accents et changera le séparateur de décimaux en un point. Il est possible d’enregistrer ces paramètres dans un alias pour simplifier l’utilisation. Pour cela, ajouter la ligne suivante dans votre fichier .bashrc ou .profile :

alias xm="LANG=fr_FR xmgrace -geometry 1150x900"

L’option geometry permet quand à elle de faire en sorte que la fenêtre de xmgrace soit suffisamment grande pour voir la totalité du graphique.

Template

Pour éviter d’avoir à saisir systématiquement les mêmes paramètres (épaisseur des bordures, taille du texte …) il est possible de créer un template qui sera chargé automatiquement à l’ouverture du programme. Pour ce faire, créer un graphique vide avec toutes les options qui vous intéressent et sauvegarder le sous le nom Default.agr. Placer ensuite ce fichier dans :

~/.grace/templates/

Si les dossiers n’existent pas, il faut les créer.

Ce fichier Default.agr permet également de définir de nouvelles couleurs pour étoffer un peu la palette proposée par défaut qui est un peu pauvre. Voici, par exemple, les lignes à insérer pour disposer d’une partie des couleurs de bases plus celles de la palette tango. Ces lignes sont à placer à la place de celles définissant les couleurs dans le fichier Default.agr (commençant par @map. Pour ce faire utiliser un éditeur de texte quelconque tel que vim, gedit, emacs …

@map color  0 to (255, 255, 255), "white"
@map color  1 to (  0,   0,   0), "black"
@map color  2 to (255,   0,   0), "red"
@map color  3 to (  0, 255,   0), "green"
@map color  4 to (  0,   0, 255), "blue"
@map color  5 to (148,   0, 211), "violet"
@map color  6 to (255, 165,   0), "orange"
@map color  7 to (  0, 255, 255), "cyan"
@map color  8 to (255,   0, 255), "magenta"
@map color  9 to (114,  33, 188), "indigo"
@map color 10 to (103,   7,  72), "maroon"
@map color 11 to ( 64, 224, 208), "turquoise"
@map color 12 to (  0, 139,   0), "green4"
@map color 13 to (252, 233,  79), "Butter 1"
@map color 14 to (237, 212,   0), "Butter 2"
@map color 15 to (196, 160,   0), "Butter 3"
@map color 16 to (138, 226,  52), "Chameleon 1"
@map color 17 to (115, 210,  22), "Chameleon 2"
@map color 18 to ( 78, 154,   6), "Chameleon 3"
@map color 19 to (252, 175,  62), "Orange 1"
@map color 20 to (245, 121,   0), "Orange 2"
@map color 21 to (206,  92,   0), "Orange 3"
@map color 22 to (114, 159, 207), "Sky Blue 1"
@map color 23 to ( 52, 101, 164), "Sky Blue 2"
@map color 24 to ( 32,  74, 135), "Sky Blue 3"
@map color 25 to (173, 127, 168), "Plum 1"
@map color 26 to (117,  80, 123), "Plum 2"
@map color 27 to ( 92,  53, 102), "Plum 3"
@map color 28 to (233, 185, 110), "Chocolate 1"
@map color 29 to (193, 125,  17), "Chocolate 2"
@map color 30 to (143,  89,   2), "Chocolate 3"
@map color 31 to (239,  41,  41), "Scarlet Red 1"
@map color 32 to (204,   0,   0), "Scarlet Red 2"
@map color 33 to (164,   0,   0), "Scarlet Red 3"
@map color 34 to (238, 238, 236), "Aluminium 1"
@map color 35 to (211, 215, 207), "Aluminium 2"
@map color 36 to (186, 189, 182), "Aluminium 3"
@map color 37 to (136, 138, 133), "Aluminium 4"
@map color 38 to ( 85,  87,  83), "Aluminium 5"
@map color 39 to ( 46,  52,  54), "Aluminium 6"

Lorsque vous choisissez une couleur, vous avez maintenant une palette plus importante :

grace_color

Exportation par défaut

Dans le dossier :

~/.grace/

Créer un fichier gracerc.user contenant les lignes suivantes pour que le format de sortie par défaut soit .eps :

# 
HARDCOPY DEVICE "EPS"

Il sera alors inutile de passer par le menu « print setup » avant d’exporter un graphique. Changer le paramètre "EPS" par le format de sortie qui vous convient.

Configuration de vim

Voici le contenu de mon fichier .vimrc. Cette configuration n’est pas la meilleure puisqu’elle est adaptée à ma façon de faire mais vous trouverez peut être des exemples pour construire votre propre configuration.

La fin du fichier concerne l’utilisation de vim-latex. Il s’agit d’un plugin pour vi ajoutant des fonctionnalités intéressantes pour l’écriture de fichiers latex avec vi. Ce plugin est disponible dans les dépôts ubuntu officiels ou directement sur le site du plugin.

" --------------------------------------------------------------------
"  abandonne les regles de vim anciennes versions
" --------------------------------------------------------------------
set nocompatible
set backspace=2	" pour un fonctionnement correct du backspace
 
" --------------------------------------------------------------------
"  COULEURS:
" --------------------------------------------------------------------
colorscheme default
highlight IncSearch term=underline ctermbg=LightGreen ctermfg=NONE guibg=LightGreen guifg=NONE
highlight Search term=underline ctermbg=LightGreen ctermfg=NONE guibg=LightGreen guifg=NONE
highlight Cursor guifg=white guibg=grey30 
highlight CursorLine term=underline cterm=underline guibg=#F4F4F4
highlight CursorColumn term=NONE ctermbg=grey guibg=#F4F4F4
highlight StatusLine term=reverse,bold cterm=reverse,bold gui=italic guibg=SteelBlue guifg=white
highlight StatusLineNC term=reverse cterm=reverse gui=italic guibg=grey75 guifg=SteelBlue
highlight Error gui=bold guifg=red guibg=yellow
 
" --------------------------------------------------------------------
"  RECHERCHE:
" --------------------------------------------------------------------
set hlsearch	" active surbrillance
set incsearch	" se deplace pendant la frappe
set ignorecase	" ignore la casse
 
" --------------------------------------------------------------------
"  STATUS LINE:
" --------------------------------------------------------------------
set ruler          " Affiche le numero de la ligne/colonne
set showmode       " Affiche le mode courant
set showcmd        " Affiche des commandes
set laststatus=2   " affiche la status line
set statusline=fichier:\ %m\%F\ %y\ %=\ ligne\ %l\ colonne\ %c\ --\%P\--
 
" --------------------------------------------------------------------
"  APPARENCE:
" --------------------------------------------------------------------
syntax on                    " coloration syntaxique
let fortran_free_source=1    " fortran syntax is free format (f90)
 
set visualbell t_vb=	" pas de message sonore ni visuel
			" When the GUI starts, 't_vb' is reset to its default value.
			" You have to set it again in your gvimrc
set nowrap		" pas de retour à la ligne
set textwidth=90	" coupe la ligne si elle depasse 90 caractères
set showmatch		" affiche les paires de parenthese
set cursorline		" highlight current line
set autoindent		" copy indent from the current line to the new line
set smartindent		" automatically indent a line depending on previous line
set expandtab           " remplace les tab par des espaces
set shiftwidth=4        " indentation = 4 espaces
set encoding=utf-8
" set guifont=Mono\ 9
 
" --------------------------------------------------------------------
"  SOURIS:
" --------------------------------------------------------------------
set mouse=a             " active le deplacement a la souris
 
" --------------------------------------------------------------------
"  ABBREVIATIONS ET RACCOURCIS CLAVIER:
" --------------------------------------------------------------------
ab ccom /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
ab fcom ! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
ab lcom % * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
ab pcom # * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
 
" mise a zero du champ de recherche avec F2 : supprime la surbriallance apres la recherche
nnoremap <silent> <F2> :silent noh<cr>
 
" nouvel onglet
map <C-n> <Esc>:tabnew<cr>
" navigateur de fichier
map <C-e> <Esc>:Exp<cr>
" sauvegarde
map <C-s> <Esc>:w<cr>
" tout selectionner
map <c-a> ggVG
 
" --------------------------------------------------------------------
"  ORTHOGRAPHE:
" --------------------------------------------------------------------
" set spell
" set spelllang=fr
map <F3> :setlocal spell spelllang=fr<cr>
map <F4> :set nospell<cr>
 
" --------------------------------------------------------------------
"  PLUGINS:
" --------------------------------------------------------------------
" charge le bon plugin à l'ouverture du fichier
filetype on
filetype plugin on
 
" --------------------------------------------------------------------
"  VIMLATEX:
" --------------------------------------------------------------------
" PATH: ajout dans le path pour chercher vim-latex-suite
" set runtimepath+=/usr/share/vim/addons/
 
" IMPORTANT: win32 users will need to have 'shellslash' set so that latex
" can be called correctly.
" set shellslash
 
" IMPORTANT: grep will sometimes skip displaying the file name if you
" search in a singe file. This will confuse Latex-Suite. Set your grep
" program to always generate a file-name.
set grepprg=grep\ -nH\ $*
 
" OPTIONAL: This enables automatic indentation as you type.
"filetype indent on
 
" OPTIONAL: Starting with Vim 7, the filetype of empty .tex files defaults to
" 'plaintex' instead of 'tex', which results in vim-latex not being loaded.
" The following changes the default filetype back to 'tex':
let g:tex_flavor='latex'
 
" TIP: if you write your \label's as \label{fig:something}, then if you
" type in \ref{fig: and press <C-n> you will automatically cycle through
" all the figure labels. Very useful!
autocmd FileType *.tex set iskeyword+=: 
" => conflit avec else: de python
 
" REPLIS: vim-latex replis automatiquement certaines sections et environnements
" ou commandes. La liste de ce qui doit être replié est géré par les varibales
" globales suivantes. Les replis se font en partant de la fin de la liste puis
" en remontant. Les defaut sont dans folding.vim (~/.vim/ftplugin/latex-suite/)
let g:Tex_FoldedSections="part,chapter,section,%%fakesection,subsection"
let g:Tex_FoldedEnvironments="verbatim,comment,eq,align,figure,table,tabular,tikzpicture,thebibliography,abstract,frame"
let g:Tex_FoldedMisc = 'preamble,<<<'
 
" COMPILATION VISUALISATION: par defaut on compile avec pdflatex et on utilise
" pour visualiser les pdf : evince
let g:Tex_DefaultTargetFormat="pdf"
let g:Tex_ViewRule_pdf = "evince"
let g:Tex_CompileRule_pdf="pdflatex -shell-escape -interaction=nonstopmode $*"

J’utilise les plugins :

Fichier .bashrc, alias et fonctions

Voici quelques alias ou fonction que j’utilise dans le fichier .bashrc ou .profile. Dans un terminal linux, un alias est une sorte de raccourcis permettant de créer des commandes personnelles. L’intérêt d’un alias est de regrouper dans une commande simple une commande ou un ensemble de commandes plus complexes ou comportant de nombreuses options que vous utilisez fréquement. Pour aller plus loin, les fonctions bash permettent de gérer les arguments de cette commandes personnelles.

# Alias basiques
alias ll='ls -lrth'
alias la="ls -a"
alias cp="cp -ip"
alias mv="mv -i"
alias clr="clear; pwd; ls -lrth"
alias le="less"
 
# une fonction pour faire un cd suivi d'un ls
function cl { 
    cd $* && ls 
}
 
alias vi="gvim -geometry 120x50"
alias orthographe="aspell -t check --lang=fr"
 
# fonction pour suivre une commande
function suivre { 
    gnome-terminal -e "watch -n1 $*" 
}
 
# cleantex, fonction pour nettoyer les fichiers output de latex
function cleantex {
    rm -vf $1.aux $1.log $1.out $1.bbl $1.toc $1.lof $1.lot $1.snm $1.nav $1.vrb $1.blg
}
 
# quelque options de compilation
alias gfcomp="gfortran -o exe -g -fbounds-check -fbacktrace -Wall"
alias ifcomp="ifort -o exe -g -traceback -check bounds -check uninit -warn unused"
alias compc="gcc -o exe -O1 -lm -W -Wall -Wuninitialized -fbounds-check "

Il est souvant pratique de faire des alias pour se connecter à diverses machines avec ssh. Une autre possibilité est l’utilisation de sshfs. Cette commande permet de monter un dossier d’une autre machine. Le montage est possible si la machine est accessible par ssh, il est donc inutile de faire un montage réseau. Vos fichiers de la machine distante sont alors accessible depuis votre machine locale comme s’il s’agissait d’une clef usb ou d’un dossier quelconque. Attention, je pense qu’il est quand même préférable que l’id utilisateur soit le même sur la machine distante et la machine locale si vous voulez écrire dans les fichiers de la machine distante.

# connexions ssh
alias machine="ssh -Y user@machine"
 
# montage ssh d'un dossier avec sshfs. Cette commande montera votre dossier 
# utilisateur de la machine distante sur le dossier machine de votre ordinateur
# local.
alias mntmachine="sshfs user@machine:/home/user/ /home/user/machine/"

La variable PATH contient la liste des dossiers dans lesquels se trouvent les exécutables. Si vous voulez installer des programmes ou scripts personnels, mettez les dans un dossier et ajoutez ce dossier à PATH.

# rajout d'un dossier dans le PATH.
export PATH=/home/user/bin/:$PATH

Pour pouvoir utiliser mes modules python n’importe où, je les ai tous mis dans un même dossier et les lignes suivantes ajoutent ces dossiers à la variable PYTHONPATH. Lors de l’importation d’un module, python cherche parmi les dossiers contenu dans PYTHONPATH s’ils contiennent ce module.

# python : recuperation des dossiers contenant les classes python
classDir="/home/user/Python/classes/"
liste=`ls $classDir`
monpath="$classDir:"
for dossier in $liste
do
	monpath="$classDir$dossier:$monpath"
done
export PYTHONPATH=$PYTHONPATH:$monpath

Pour la personnalisation du prompt

  • \e ou \033 sequence d’echappement pour les couleurs
  • \[ \] début et fin de texte non imprimable
  • format : [ format texte ; couleur1; couleur2 m

J’avais utlisé ce lien pour écrire les lignes ci-dessous : Mettez de la couleur dans votre prompt.

# prompt
PS1="\[\e[0;32m\]\n# \u@\h \[\e[1;33m\] \w\[\e[0m\]\n> "
 
# autre variante :
PS1="\[\e[0;34m\]\n# \u@\h \[\e[1;33m\] \w\[\e[0m\]\n> "
 
# sans couleur :
#PS1="[\u@\h \W]> "

Le terminal linux et l’éditeur vim : une petite introduction

Ce petit document fait 3 pages et rassemble une présentation rapide et un ensemble de commandes de bases du terminal linux et de l’éditeur vim (ou de sa version graphique gvim). La liste de commandes et très loin d’être exhaustives mais elle est suffisante pour débuter. Ce document a été rédigé à l’attention de stagiaires de niveaux L3 à M2 que j’ai encadré.

Aide mémoire pour vim et le terminal linux

Pour aller plus loin :

  • En ligne de commande, la commande man vous donnera accès à la documentation des commandes linux
  • L’éditeur vim contient un tutoriel intégré. Dans un terminal tapez vimtutor pour démarrer.
  • Vous pouvez accéder très simplement à l’aide sur vim en tapant :help en mode normal suivi de la commande sur laquelle vous souhaitez de l’aide
  • Programmez des scripts Bash

Script de post-installation pour ubuntu

Voici un script bash dont je me sers lorsque je dois installer une série de paquets après une installation ou réinstallation toute fraiche d’Ubuntu. Ce script est assez simpliste, il installe simplement des paquets les uns après les autres préalablement enregistrés dans une liste. Pour l’écrire je me suis inspiré des nombreux autres scripts du même genre existant sur le web.

Comme tous ces scripts, il est bien entendu adapté à mon utilisation d’ubuntu. La première chose à faire pour l’adapter à vous est de supprimer les paquets qui ne vous intéressent pas et de rajouter les votre. Je ne prétend pas donner ici la liste des paquets indispensable.

Je vous met également en garde, étant donné que ce script doit être lancé avec les droits administrateur il est préférable de le comprendre avant de l’exécuter car il pourrait endommager votre machine.

#!/bin/bash
 
# Germain Vallverdu
# 15 Avril 2011
# <germain.vallverdu@univ-pau.fr>
 
# ----------------------------------------------------------------------------------------
# paquets disponnibles dans les dépots ubuntu
# ----------------------------------------------------------------------------------------
compilateur="build-essential gcc gfortran"
 
python="idle python-qt4 python-numpy python-scipy python-matplotlib pymol bpython python-profiler"
 
editeur="vim-gnome jabref poedit"
 
sciences="grace gnuplot gperiodic gchempaint mpich2"
 
video="vlc mozilla-plugin-vlc libdvdread4 ubuntu-restricted-extras cheese" 
 
son="audacity banshee-extension-alarm banshee-extension-jamendo tuxguitar"
 
graphisme="gimp inkscape povray"
 
latex="texlive texlive-lang-french texlive-latex-extra aspell-fr lyx"
 
divers="filezilla compizconfig-settings-manager acroread pdfsam conky"
 
# paquets à installer
paquets="$compilateur $python $editeur $sciences $video $son $graphisme $latex $divers"
 
# ----------------------------------------------------------------------------------------
# Options de apt-get pour l'installation des paquets
# ----------------------------------------------------------------------------------------
options="--auto-remove --yes -q"
 
# ----------------------------------------------------------------------------------------
# Test des droits administrateur
# ----------------------------------------------------------------------------------------
if [ $USER != "root" -o $UID != 0 ]
then
  echo "Ce script doit être exécuté en tant qu'administrateur (root)."
  echo "Placez sudo devant votre commande :"
  echo "sudo $0"
  echo "Abandon"
  exit 1
fi
 
echo "Assurez-vous d'avoir lu et compris le script avant de l'exécuter."
echo -n "Êtes-vous sûr de savoir ce que vous faites ? (o/n) "
read rep
if [ $rep != "o" ] && [ $rep != "oui" ] && 
   [ $rep != "y" ] && [ $rep != "yes" ]
then
  echo "Pour lire le script, entrez la commande suivante :"
  echo "gedit $0 &"
  exit 1
fi
 
# version d'ubuntu
version=`lsb_release -cs`
echo "* Ajout des dépots pour Ubuntu $version"
 
# ----------------------------------------------------------------------------------------
# ajouts de dépots
# ----------------------------------------------------------------------------------------
 
# partenaires
echo -e "\n* Canonical partners"
cp -v /etc/apt/sources.list /etc/apt/sources.list.bak
echo "sed \"s/# deb http\:\/\/archive.canonical.com/deb http\:\/\/archive.canonical.com/\" /etc/apt/sources.list > sources.list.new"
sed "s/# deb http\:\/\/archive.canonical.com/deb http\:\/\/archive.canonical.com/" /etc/apt/sources.list > sources.list.new
cp -v sources.list.new /etc/apt/sources.list
 
# medibuntu
echo -e "\n* Medibuntu"
wget http://www.medibuntu.org/sources.list.d/${version}.list --output-document=/etc/apt/sources.list.d/medibuntu.list
wget -q http://packages.medibuntu.org/medibuntu-key.gpg -O- | sudo apt-key add -
apt-get -q update
apt-get --yes -q --allow-unauthenticated install medibuntu-keyring
 
codecs="non-free-codecs libdvdcss2"
 
# virtual box
echo "deb http://download.virtualbox.org/virtualbox/debian $version contrib" | sudo tee -a /etc/apt/sources.list
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 98AB5139 
virtualbox=" virtualbox"
 
# wine
add-apt-repository ppa:ubuntu-wine/ppa
wine=" wine1.3"
 
paquets="$codecs $paquets $virtualbox $wine"
 
# ----------------------------------------------------------------------------------------
# mise à jour des sources de logiciels
# ----------------------------------------------------------------------------------------
echo -e "\napt-get -q clean"
apt-get -q clean
echo -e "\napt-get -q update"
apt-get -q update
echo -e "\napt-get -q --yes upgrade"
apt-get -q --yes upgrade
 
# ----------------------------------------------------------------------------------------
# installation des paquets
# ----------------------------------------------------------------------------------------
for paquet in $paquets
do
    echo -e "\n----------------------------------------------------------------"
    echo " INSTALLATION DE : $paquet"
    echo -e "----------------------------------------------------------------\n"
    apt-get $options install $paquet
done
 
# ----------------------------------------------------------------------------------------
# parametrage de libdvdread4
# ----------------------------------------------------------------------------------------
echo -e "\n----------------------------------------------------------------"
echo " parametrage de libdvdread4"
echo -e "----------------------------------------------------------------\n"
echo -e "/usr/share/doc/libdvdread4/install-css.sh\n"
/usr/share/doc/libdvdread4/install-css.sh
 
# ----------------------------------------------------------------------------------------
# nettoyage
# ----------------------------------------------------------------------------------------
echo -e "\n----------------------------------------------------------------"
echo " PURGE : apt-get -q --yes autoremove"
echo -e "----------------------------------------------------------------\n"
apt-get -q --yes autoremove