Environnement LaTeX sous Ubuntu

On m\’a fait remarquer il y a peu de temps que j\’avais publié un article sur comment écrire son CV en LaTeX sans expliquer comment faire du LaTeX… Remarque très pertinente! Du coup, je vais tenter de faire un rapide tutoriel permettant de se lancer rapidement et sans trop de difficultés dans l\’aventure LaTeX. Je laisserai de côté la syntaxe qui est déjà très bien documentée sur de nombreux sites (celui-ci étant mon favori) pour me concentrer plus spécifiquement sur l\’environnement nécessaire pour créer et compiler du LaTeX.

Installer LaTeX

Dans un premier temps, nous allons installer les bibliothèques et executables permettant de compiler des documents en LaTeX (que ce soit en DVI, PS ou encore PDF). Le plus simple, si on a un bon giga-octet de libre sur son disque, est d\’installer le paquet texlive-full. C\’est certes assez lourd en terme d\’espace mais on est sûr de ne rien oublier. Si en revanche on veut s\’éviter l\’installation de la prise en charge du grec ou du letton et économiser ainsi 300Mo je vous conseille plutôt d\’exécuter la commande suivante qui n\’installera que le nécessaire :

$ sudo apt-get install texlive texlive-lang-french texlive-latex-extra

En fonction de votre connexion, cette installation peut prendre un certain temps. Elle demande en effet de prendre plus de 400Mo dans les dépôts. Une fois ceci fait, vous devriez être en mesure de compiler votre premier document. Pour en être convaincu, créez un document doc.tex avec le premier éditeur de texte venu et écrivez dedans :

\\documentclass{article}
\\begin{document}
Premier test de compilation d\'un document \\LaTeX\\ en PDF.
\\end{document}

La compilation en PDF se fait ensuite simplement de cette manière :

$ pdflatex doc.tex

Dans le même dossier sera créé le fichier doc.pdf (mais aussi des fichiers temporaires que vous pouvez supprimer sans problème à savoir doc.aux et doc.log).

Seulement, écrire un document en LaTeX n\’est pas si évident à l\’aide d\’un simple éditeur de texte. Un peu d\’auto-complétion et de compilation automatique peut vite s\’avérer pratique si on veut gagner du temps et se consacrer exclusivement au contenu.

Éditeur LaTeX

Je ne connais pas vraiment les différents IDE (si on peut parler d\’IDE…) aidant à la rédaction de documents LaTeX donc je n\’oserai pas prétendre que ma solution est la meilleure. Cependant, je vais vous faire partager les outils que j\’utilise et qui pour le moment me conviennent parfaitement : Eclipse et le plugin TeXlipse.

Installation d\’Eclipse

Eclipse est un IDE open-source très connu écrit en Java fonctionnant essentiellement grâce à un système de plugins. Une communauté très active gravite autour de ce projet et propose des modules pour à peu près tout et en particulier pour le LaTeX. J\’utilise Eclipse aussi pour coder en Java et en C++. Du coup, pour éviter un nombre incalculable d\’applications et parce que je suis familier avec son interface, je l\’ai choisi aussi pour le LaTeX.

\ »Installation\ » est un bien grand mot puisque Eclipse n\’en nécessite justement pas! Pour pouvoir l\’utiliser, il faut dans un premier temps récupérer la dernière version disponible à cette adresse :

http://www.eclipse.org/downloads/packages/eclipse-classic-360/heliosr

Une fois l\’archive téléchargée, décompressez-là et lancez l\’exécutable eclipse. Si vous n\’avez pas de JRE (Java Runtime Environment), Eclipse vous le spécifiera puisqu\’il ne pourra tout simplement pas démarrer! vous pouvez remédier à ça en installant une implémentation libre du JRE d\’Oracle, OpenJDK :

$ sudo apt-get install openjdk-6-jre

Le lancement d\’Eclipse devrait ensuite ne plus poser de problèmes. Nous allons maintenant ajouter le plugin aidant à la création de documents LaTeX.

Ajout du plugin TeXlipse

Dans Eclipse, ouvrez Help > Install New Software. Dans le fenêtre qui s\’affiche, cliquez sur le bouton Add, ajoutez les informations suivantes puis validez :

  • Name : TeXlipse
  • Location : http://texlipse.sourceforge.net/
\"Add

Un item \ »TeXlipse\ » est alors proposé dans la liste. Cochez-le et cliquez sur Next. Il ne reste plus qu\’à suivre les instructions. Quelques questions sont posées durant le processus (accepter les conditions de licence, valider l\’installation) auxquelles vous devez bien entendu répondre par la positive.

Un redémarrage d\’Eclipse plus tard, le plugin est bien installé. On peut maintenant créer un projet LaTeX. Pour cela, File > New > Project… puis dans la fenêtre qui s\’est ouverte, séléctionnez LaTeX project dans le sous-menu de TeXlipse.

\"new

Attribuez un nom au projet et sélectionnez le format de sortie du document une fois le .tex compilé (par exemple PDF). Cet écran permet également de choisir le template qui sera utilisé pour mettre du contenu par défaut dans votre fichier LaTeX. Ça n\’a pas grand intérêt si ce n\’est de \ »pré-écrire\ » la balise \\documentclass{}. L\’étape suivante permet en particulier de renommer le fichier .tex principal et surtout le fichier de sortie (par exemple CV.pdf).

Et voilà! Il n\’y a plus qu\’à écrire son document. A chaque sauvegarde d\’un fichier du projet dans Eclipse, le LaTeX sera recompilé. Plus besoin de la ligne de commande, tout est automatique. Petite précision pour vous éviter des frayeurs, l\’instruction \\tableofcontents nécessite une double compilation pour que la table des matières du document soit mise à jour.

Fortune et Kaamelott

La commande fortune permet d\’afficher dans son terminal des citations en tout genre (extraits de livres, théorèmes, citations d\’hommes politiques, etc…). Bien que ce ne soit pas d\’une utilité flagrante, voire même carrément chronophage, une petite citation à chaque ouverture de terminal, par exemple, ajoute un peu de gaîté à une journée de travail pas toujours reluisante.

Pour l\’installer et ajouter des citations françaises :

$ sudo apt-get install fortune fortunes-fr

Ensuite l\’exécution se fait simplement en tapant la commande fortune éventuellement suivie d\’un des thèmes présent dans la liste issue de fortune -f.

Seulement voilà… Les citations incluses dans le paquet ne sont pas toujours fantastiques et parfois même incompréhensibles. Bref, suite à un journal posté sur LinuxFr concernant une fortune sur La Classe Américaine, je me suis lancé dans l\’écriture d\’un fichier contenant des citations de Kaamelott. Pour avoir une bonne base, je suis parti sur celles proposées sur Wikiquote. Après avoir ajoutées les extraits de la page principale et des pages dérivées (Arthur, Léodagan, Perceval, Karadoc, etc…) j\’arrive à un total de 505 entrées ce qui commence à être suffisamment correct pour le partager! Le fichier texte se trouve ici. Une fois que vous l\’aurez enregistrer, ouvrez un terminal et allez dans le répertoire contenant ce fichier texte puis :

$ mv kaamelott.txt kaamelott
$ strfile kaamelott
\"kaamelott.dat\" created
There were 505 strings
Longest string: 2166 bytes
Shortest string: 50 bytes

La comamnde strfile va générer un fichier .dat lisible par fortune. Il suffit ensuite de copier ces deux fichier dans le répertoire approprié :

$sudo cp kaamelott kaamelott.dat /usr/share/games/fortunes/

Le tour est joué! La preuve :

$ fortune kaamelott
Un village assailli de brigands, une femme qui se fait tabasser, une poule qui boîte,
c est pas les opprimés qui manquent ! Et là au moins, j aurais l impression de servir
à quelque chose.
[Lancelot, Livre III, 1 : Le chevalier errant]
$

Enfin, pour avoir une citation au lancement de son terminal il suffit d\’ajouter cette commande dans son fichier ~/.bashrc.

Le manuel de la commande fortune se trouve . Un explication détaillé est également disponible ici.

Si vous avez des suggestions de citations à ajouter, ce sera avec plaisir! Postez les dans les commentaires et je me chargerai du reste. Si vous pouvez en plus fournir le nom et le numéro de l\’épisode, alors là c\’est parfait!

Rappel: Rediriger les entrées/sorties sous UNIX

Un article comme celui-là a déjà été écrit maintes et maintes fois mais une piqûre de rappel n\’est jamais de trop! Et ça me permettra de bien (re)intégrer ces notions de redirection d\’entrées/sorties.

Premier point : vu que sous un système UNIX tout est fichier, les entrées et sorties ne dérogent pas à cette règle. De même, chaque fichier possède un \ »descripteur de fichier\ » qui est un numéro unique permettant d\’identifier un fichier. Les fichiers d\’entrée/sortie ont un numéro fixe particulier permettant d\’y accéder facilement :

  • 0 : entrée standard
  • 1 : sortie standard
  • 2 : sortie d\’erreur

Ces numéros peuvent s\’avérer très utiles couplés aux caractères de redirection basiques. Ainsi, on peut facilement écrire dans un fichier les erreurs que provoque une commande ou encore en supprimer l\’affichage lors de l’exécution. Bref, il est possible de faire énormément de choses et le tableau suivant se veut en être un résumé (non exhaustif) :

[table id=1 /]

Quelques modestes exemples d\’utilisation (que je complèterai plus tard…) :

$ find -name test > ~/find_result
# recherche les fichiers nommés \"test\" depuis le repertoire courant récursivement
# dans tous les sous-répertoires et met le résultat dans le fichier find_result à la
# racine de son répertoire utilisateur
$ rgrep -n biscotte * 2> /dev/null
# recherche le mot \"biscotte\" depuis le répertoire courant récursivement dans
# tous les fichiers et supprime l\'affichage des erreurs (notamment les fameuses
# \"permission denied\" sur certains fichiers)

Planifier une execution avec at

\"Clock\"Lorsque l\’on souhaite planifier de façon régulière l\’exécution d\’une commande ou d\’un script, le plus efficace reste l\’utilisation de cron. En revanche, lorsqu\’il s\’agit d\’une action unique, il existe une commande linux très pratique : at. L\’utilisation de base pour une planification dans la journée est assez simple. Il suffit de faire suivre at de l\’heure à laquelle on souhaite exécuter la commande ou le script en concaténant les heures et les minutes. Après avoir pressé la touche <entrée> un prompt s\’ouvre pour y tapper la ou les commandes souhaitées chacune suivie d\'<entrée>. Après la dernière commande, un Ctrl+D validera la planification. Par exemple, pour lancer le script synchro.sh aujourd\’hui à 23h30 :

$ at 2330
warning: commands will be executed using /bin/sh
at> sh ~/synchro.sh
at> 
job 7 at Tue Jun 29 23:30:00 2010
$

Plusieurs options sont proposées pour personnaliser un peu plus l\’exécution. On peut citer en particulier le paramètre -l permettant de lister les planifications en cours :

$ at -l
7	Tue Jun 29 23:30:00 2010 a username
$

ou encore la commande atrm suivie de l\’id de la tâche pour la supprimer.

$ at -l
7	Tue Jun 29 23:30:00 2010 a username
$ atrm 7
$ at -l
$

Pour le manuel de la commande, c\’est par là.

Notifications depuis le shell

Voilà déjà un moment que les bulles de notification ont fait leur apparation sur des distributions linux (je pense en particulier à Ubuntu ou Kubuntu). Je les trouve personnellement très pratiques et bien intégrées. Du coup, pourquoi ne pas s\’en servir pour une utilisation plus personnelle depuis un terminal?

Prenons un exemple concret dans le cadre du développement d\’un site web avec le framework PHP Symfony (comme ça je commence un peu à en parler…). La tâche Symfony doctrine:build-all-reload permet de reconstruire la base de données, regénérer les classes d\’abstraction et remplir la base avec les données qu\’on lui fournit. Bref, dans le cadre d\’un projet qui devient important, cette tâche peut prendre facilement une dizaine de minutes. Il peut alors être intéressant d\’être alerté une fois ceci terminé plutôt que de surveiller régulièrement son terminal. C\’est là que la commande notify-send intervient. Pour pouvoir l\’utiliser :

sudo apt-get install libnotify-bin

Puis pour faire apparaitre un premier message :

notify-send \"Test notification\"
\"Test

Pour le moment c\’est assez simple. Mais bien entendu, comme toujours, il existe un certain nombre de paramètres pour personnaliser tout ça. Les deux principaux selon moi sont :

  • -t <temps_en_millisecondes> qui permet de spécifier le temps (en millisecondes) au bout duquel le message expirera.
  • -i <chemin_vers_icone> qui permet d\’ajouter une icone dans la bulle de notification. Très pratique pour que l\’avertissement soit plus visuel.

Revenons à notre exemple. Dans un premier temps, j\’ai créé à la racine de mon répertoire personnel un dossier .notify dans lequel j\’ai copié une icone représentant le logo de Symfony. J\’ai ensuite rajouté un alias pour ma commande dans mon .bashrc. La commande qui doit être executée comprend la commande Symfony suivi d\’une notification (d\’où le && entre). Ce qui donne ceci :

alias sf-doctrine-build-all-reload=\'sf doctrine:build-all-reload --no-confirmation && notify-send -i ~/.notify/sf.png \"doctrine:build-all-reload done\"\'

On obtient tout de suite quelque chose de plus sympa!

\"Sf

Et voilà! C\’est facilement adaptable à d\’autres alias ou scripts en tout genre et ça a quand même de la gueule! Pour la manuel, c\’est par là. Pour les spécifications complètes de la commande, c\’est par ici.

sl ou comment s\’auto-flageller

Tous les utilisateurs de linux familiers avec la ligne de commande se sont retrouvés un jour avec cette faute de frappe :

user@server:~# sl
-bash: sl: command not found
user@server:~#

De façon à se punir de cette coquille, il existe une commande dont la description est plutôt claire :

sl – display animations aimed to correct users who accidentally enter sl instead of ls.

Cette commande fait passer un train en ASCII dans le terminal. Pour couronner le tout, on ne peut d\’une part pas tuer le processus (à moins de spécifier le paramètre -e mais là c\’est clairement plus une faute de frappe !!!) et d\’autre part les principaux paramètres à la commande ls, à savoir le -l et le -a, sont également implémentés dans sl. Le premier affichera un train plus petit et le second fera appeler au secours les passagers avec des \ »help!\ ».

\"Commande

Bref, c\’est inutile, énervant et relève du masochisme : autant dire indispensable! Donc pour l\’installer c\’est comme d\’habitude :

sudo apt-get install sl

Et le manuel est là : manuel sl.

Connaître la place prise sur le disque par un paquet

J\’ai eu besoin il y a quelques jours de connaître la taille utilisée sur le disque par un paquet installé. Sur une version desktop d\’Ubuntu (ou autre) il suffit d\’ouvrir le gestionnaire de paquet et de regarder les propriétés du programme installé. En revanche, sur une version serveur sans interface graphique, ça demande évidemment un peu plus de travail. A ma connaissance, deux solutions pour y parvenir : aptitude ou dpkg-query.

Exemple concret : on souhaite connaître la place utilisée sur le disque par l\’éditeur de texte vim.

1 – via aptitude

aptitude show vim

Cette commande fournit en sortie un certain nombre d\’informations concernant le paquet en question. La ligne qui nous intéresse est celle intitulée \ »Taille décompressée\ » :

Paquet : vim
État: installé
Automatiquement installé: non
Version : 2:7.2.245-2ubuntu2
Priorité : optionnel
Section : editors
Responsable : Ubuntu Developers
Taille décompressée : 1 937k
Dépend: vim-common (= 2:7.2.245-2ubuntu2), vim-runtime (= 2:7.2.245-2ubuntu2), libacl1 (>= 2.2.11-1), libc6 (>= 2.7), libgpm2 (>= 1.20.4), libncurses5 (>=
5.6+20071006-3), libpython2.6 (>= 2.6), libselinux1 (>= 2.0.85)
Suggère: ctags, vim-doc, vim-scripts
Est en conflit: vim-common (< 1:7.1-175+1)
Remplace: vim-common (< 1:7.1-175+1)
Fournit: editor
Fourni par: vim-gnome, vim-gtk, vim-nox
Description : Vi IMproved – enhanced vi editor
Vim is an almost compatible version of the UNIX editor Vi.

Many new features have been added: multi level undo, syntax highlighting, command line history, on-line help, filename completion, block operations, folding, Unicode
support, etc.

This package contains a version of vim compiled with a rather standard set of features. This package does not provide a GUI version of Vim. See the other vim-*
packages if you need more (or less).
Site : http://www.vim.org/

2 – via dpkg-query

dpkg-query -s vim

Dans ce cas, c\’est la ligne \ »Installed size\ » qui va nous importer (la valeur affichée est en kilo-octet) :

Package: vim
Status: install ok installed
Priority: optional
Section: editors
Installed-Size: 1892
Maintainer: Ubuntu Developers
Architecture: amd64
Version: 2:7.2.245-2ubuntu2
Replaces: vim-common (<< 1:7.1-175+1) Provides: editor Depends: vim-common (= 2:7.2.245-2ubuntu2), vim-runtime (= 2:7.2.245-2ubuntu2), libacl1 (>= 2.2.11-1), libc6 (>= 2.7), libgpm2 (>= 1.20.4), libncurses5 (>= 5.6+20071006-3), libpython2.6 (>= 2.6), libselinux1 (>= 2.0.85)
Suggests: ctags, vim-doc, vim-scripts
Conflicts: vim-common (<< 1:7.1-175+1)
Description: Vi IMproved – enhanced vi editor
Vim is an almost compatible version of the UNIX editor Vi.
.
Many new features have been added: multi level undo, syntax
highlighting, command line history, on-line help, filename
completion, block operations, folding, Unicode support, etc.
.
This package contains a version of vim compiled with a rather
standard set of features. This package does not provide a GUI
version of Vim. See the other vim-* packages if you need more
(or less).
Homepage: http://www.vim.org/
Original-Maintainer: Debian VIM Maintainers

L\’avantage selon moi de dpkg-query est le grand nombre d\’options permettant notamment de spécialiser l\’affichage en le limitant à l\’information que l\’on cherche. Ainsi pour n\’afficher que le nom du paquet et la place qu\’il prend sur le disque :

dpkg-query --show --showformat=\'${Package}\\t${Installed-Size}\\n\' vim

On aura alors en sortie :

vim 1892

Cependant, comme on peut le voir sur cet exemple les informations donnée par chacune des commandes ne sont pas toujours les mêmes (par exemple 1937ko pour aptitude contre 1892ko pour dpkg-query). Cette différence ne se constate que sur certains paquets et je dois dire que je n\’ai pas encore trouvé quelle en est la raison…
Pour plus d\’informations sur ces commandes : manuel d\’aptitude et manuel de dpkg-query.

Decibel Audio Player

Suite à un post de Jerôme M. (Phollow me), j\’ai découvert un player audio open source pour GNU/Linux : Decibel Audio Player.

\"Decibel

Celui-ci a plusieurs avantages à mon sens :

  • Il est très léger! Le player pèse seulement 1,6Mo une fois installé contre 3,8Mo pour vlc et 14,9Mo pour Rhythmbox. Qui plus est, d\’après le benchmark présenté sur le site du projet (ça vaut ce que ça vaut…) son temps de chargement est très court et sa consommation mémoire est particulièrement faible. A l\’usage en tous cas, ces résultats ne me semblent pas aberrants. Enfin, il est léger dans son utilisation. Pas de superfu, juste l\’essentiel pour écouter ses fichiers musicaux.
  • On peut facilement \ »switcher\ » entre un système de bibliothèque et l\’arborescence réelle des fichiers audios. C\’est un gros avantage pour tous ceux qui, comme moi, n\’ont pas taggé leurs fichiers audios mais qui en revanche les ont classé par dossier.
  • Il dispose de quelques options bien pratiques comme l\’ajout d\’une icône dans la barre des tâches depuis laquelle les principaux raccourcis sont disponibles (lecture, pause, piste suivante, …), l\’affichage d\’un message lors d\’un changement de piste utilisant dans mon cas le système de notification d\’Ubuntu ou encore la normalisation du volume. Tout fonctionne en activant/désactivant ces options comme avec un système de greffons.

Bref, je l\’ai trouvé très concluant et l\’ai adopté. La version 1.03 est disponible dans les paquets universe d\’Ubuntu.

sudo apt-get install decibel-audio-player

Cependant une version plus recente estampillée 1.04 peut être installée en téléchargeant le .deb proposé sur le site du projet ou en récupérant et compilant les sources.

Opérations sur les images dans Nautilus

Pour ceux qui utilisent Nautilus comme gestionnaire de fichiers (sous Ubuntu par exemple…), il existe un paquet qui ajoute dans le menu contextuel qui apparait lors d\’un clic droit sur une image, des options de redimensionnement et de rotation d\’images. Ce qui permet ainsi d\’effectuer ces opérations de base sur une image sans avoir à ouvrir GIMP ou autre. Pour cela, un petit

sudo apt-get install nautilus-image-converter
killall nautilus
nautilus

Et le tour est joué. Dorénavant, un clic droit sur une image propose deux nouvelles entrées :

\"Menu

Le redimensionnement comme la rotation fonctionnent de la même manière. Une fenêtre vous propose deux options. La première concerne respectivement les dimensions de l\’image et l\’angle de rotation que l\’on souhaite appliquer. La seconde option offre la possibilité d\’enregistrer l\’image modifiée dans un nouveau fichier ou d\’écraser celui d\’origine. Quelques précisions tout de même concernant l\’option de redimensionnement : quel que soit le système de calcul de dimension que vous choisirez (taille prédéfinie, échelle ou taille personnalisée) les proportions de l\’image d\’origine seront toujours respectées! Ainsi, une image de taille 800x600px redimensionnée en choisissant la taille prédéfinie 128x128px aura au final comme dimension 128x96px. De plus, en utilisant l\’option de redimensionnement personnalisé, il faudra veiller à modifier les deux valeurs dans le cas d\’un agrandissement… En effet, pour une image de taille 800x600px, si vous spécifiez une hauteur de 500px pour réduire l\’image d\’origine, la largeur par defaut de 1000px ne sera pas prise en compte et vous aurez une image en sortie de 667x500px. En revanche, si vous spécifiez une hauteur de 900px, l\’image en sortie sera de 1000x750px. Il s\’agit sans doute d\’un bug donc dans le doute, le mieux sera toujours d\’enregistrer l\’image modifiée dans un nouveau fichier pour préserver le fichier d\’origine. Malgré tout, c\’est une fonctionnalité de nautilus très pratique et qui fait gagner un temps précieux!

Ubuntu: changer la source des paquets

Lors de la sortie il y a quelques jours de la version 10.04 alias Lucid Lynx d\’Ubuntu, j\’ai tenté à plusieurs reprise la migration depuis ma 9.10. Le problème qui s\’est posé et qui se pose finalement à chaque nouvelle version était que les serveurs utilisés par défaut étaient surchargés. Chacune de mes tentatives de mise à jour s\’est alors soldée par un échec cuisant jusqu\’à ce que je m\’aperçoive que chez Canonical (Debian?), on pense à tout!
En effet, si vous allez dans Système > Administration > Sources de logiciels vous verrez dans le premier onglet la ligne \ »Télécharger depuis: \ » avec comme sélection par defaut \ »Serveur National (France)\ ». Sélectionnez à la place \ »Autre…\ » puis dans la fenêtre qui s\’affiche, cliquez sur \ »Sélectionner le meilleur serveur\ ». Une série de tests de connexion est alors lancée sur quelques 350 serveurs afin de déterminer celui qui est le mieux adapté.

\"Changer

Dans mon cas, il m\’a choisi un serveur qui appartient visiblement à Orange :

http://ftp.oleane.net/ubuntu

La mise à jour s\’est ensuite faite sans aucun problème et à une vitesse folle (3Mo/s pour la partie téléchargement des paquets).