0. Ligne de commande

Mis en avant

Suite à mon article sur la nécessité d’une autre informatique, beaucoup moins dépendante des interfaces graphiques et aux antipodes de la vidéo et suite aux nombreux autres articles que j’ai rédigés sur différents aspects d’une informatique en ligne de commande, voici un petit tour d’horizon de ce qu’il est possible de faire de cette manière :

  1. Pourquoi relever ses mails en ligne de commande
  2. Comment relever ses mails en ligne de commande 1
  3. Comment relever ses mails en ligne de commande 2
  4. Terminator pour la ligne de commande
  5. Gérer ses fichiers en ligne de commande
  6. Naviguer en ligne de comande
  7. Lynx, midnight commander et mutt transparents dans terminator
  8. Installer un shell particulier : zsh
  9. Gestion du temps et des tâches en ligne de commande
  10. Redimensionner en ligne de commande
  11. Flux RSS en ligne de commande
  12. De la musique en ligne de commande
  13. GNUpg en ligne de commande
  14. Images en ligne de commande : planche de contact
  15. Carnet d’adresse en ligne de commande
  16. Mutt avancé en ligne de commande
  17. Covid eo 19
  18. Processus en avant/arrière plan
  19. Calendrier en ligne de commande
  20. Suivi de poids en ligne de commande
  21. Météo en ligne de commande
  22. Éditer du texte en ligne de commande
  23. Email, mon amour
  24. Vim et LaTeX
  25. Vit et taskwarrior
  26. Git introduction
  27. Git et les branches

Écrire n’est pas un métier, c’est une envie

27. Git et les branches

Git est un formidable outil de suivi de version que j’utilise quotidiennement pour mes scripts (LaTeX, python, bash, …). Il n’est pas nécessaire de faire de la programmation pour l’utiliser. Je vais ici présenter la manière de réaliser un travail sur deux branches d’un script LaTeX versionné sous git.

La raison du passage sur une autre branche que « master » tient dans l’évolution du module « siunits » vers la version plus performante « siunitx ». Ces deux modules sont incompatibles, car la commande principale « \units{…}{…} » du premier a été remplacée par « \SI{…}{…} » dans le second. Or, le nombre d’occurrences de cette commande dans mon script étant important et des spécificités d’écritures propres au module « siunits » étant possibles, il était dangereux de travailler directement sur la branche « master ». On va donc créer une branche « unites », travailler sur celle-ci et quand toutes les modifications seront faites et que la compilation sera à nouveau fonctionnelle, on fusionnera les modifications faites dans la branche « unites » dans « master ».

Voici comment on peut procéder. Avant de créer une nouvelle branche, on vérifie qu’il n’existe que la branche master grâce à la commande :

git branch

qui devrait retourner « master » (en pressant sur Q on revient à l’invite de commande). On peut voir l’ensemble des branches avec leur dernier commit grâce à :

git branch -v

Avant le nom de la branche se trouve une étoile (*) qui montre la branche sur laquelle on se trouve actuellement.

On crée alors la nouvelle branche ainsi :

git branch unites

La commande « git branch » précédente retourne alors non seulement « master » mais aussi « unites ». La branche « master » reste cependant la branche de travail, comme le montre la présence de l’étoile devant celle-ci.

La branche « unites » est donc créée. Mais si on effectue des modifications sur les fichiers du dépôt, ces modifications seront reportées sur la branche « master ».

Pour changer de branches, il faut utiliser :

git checkout unites

La commande « git branch » présente alors une étoile devant la branche « unites ». On est sur la nouvelle branche.

On peut alors effectuer des modifications sur les fichiers du dépôt, comme par exemple, ajouter une ligne de commentaire : « % blabla » dans le fichier principal, main.tex par exemple.

Ensuite, on vérifie que les changements existent pour cette branche :

git status

Puis, on les ajoute pour le commit :

git add .

On effectue le commit :

git commit -m 'Ajout commentaire'

Et on verse ce commit au dépôt :

git push -u origin unites

et non :

git push -u origin master

puisque sur le dépôt « origin », on veut atteindre la branche « unites ».

Si maintenant, on veut revenir à la branche « master », il faut savoir qu’il est nécessaire d’avoir réalisé toutes les opérations de commit précédemment. Sans quoi le changement ne sera pas autorisé.


Et là on assiste à un miracle. Oui, oui, un miracle. Car en revenant à la branche « master » par :

git checkout master

et en éditant le fichier main.tex, on peut constater la disparition du commentaire.

Pour moi, c’est simplement fou, car cela signifie qu’en changeant de branche, l’ensemble des modifications réalisées sur la branche « unites » a été annulé. Toutes les modifications ont disparu. Et quand on retourne sur la branche « unites », le miracle continue, le commentaire réapparaît, ce qui signifie que toutes les modifications sont revenues.

On peut ainsi, sur la branche « unites » effectuer une compilation, qui peut bien ou mal se dérouler, quand on reviendra sur la branche « master », tous les fichiers issus de la compilation du main.tex de cette branche seront restaurés et une nouvelle compilation se déroulera correctement.

Il faut renouveler le WAHOO du miracle qui s’est accompli et évidemment les milliers de merci à tous les développeurs qui nous fournissent avec bienveillance cet outil formidable.


Après qu’une branche ait été créée, en n’oubliant pas de s’y placer par un checkout, on peut donc travailler en toute tranquillité sur celle-ci. Dans mon cas, j’ai remplacé le module siunits par siunitx dans un fichier contenant le préambule de mon fichier .tex principal. Puis, dans plein d’autres fichiers, j’ai du changer la commande LaTeX \unit{…}, propre au module siunits, par la commande \SI{…} propre au module siunitx. De plus, pour écrire un symbole d’unité pour l’ampère, par exemple, siunits permet \ampere, alors que siunitx demande \si{\ampere}. Enfin, les chiffres ne pouvant être notés comme \SI{10’000\cdot 10^3}{\metre}, par exemple, en raison du séparateur des milliers et du \cdot, il a fallu convertir cela en \SI{10000e3}{\metre} pour que la compilation fonctionne. Ce fut long.

Entre temps, je pouvais à loisir continuer de travailler sur la branche master pour avancer à la rédaction de mon cours. C’est incroyablement pratique.


Et enfin venu le moment où j’ai fini les modifications liées au module siunitx. Sur la branche unites, j’ai fait une dernière compilation pour vérifier que tout se passait bien et ai considéré la migration du module siunits vers siunitx comme terminée.

Il fallait maintenant fusionner les deux branches, ou plutôt, fusionner la branche unites dans la branche master. Pour ce faire, il faut d’abord de placer sur la branche dans laquelle la fusion doit être réalisée :

git checkout master

Puis, très simplement, faire la fusion :

git merge unites

En quelques secondes tout était prêt. Aucun conflit n’ayant été détecté, j’ai simplement compilé le fichier .tex principal de mon cours pour voir si tout avait bien fonctionné. Ce fut le cas. Tout les changements effectués sur la branche unites étaient passés dans la branche master et celle-ci compilait parfaitement.

Restait une dernière étape à réaliser. Comme aucun changement n’étaient plus à faire sur la branche unites, il fallait la supprimer :

git branch -d unites

Restait en fin à pousser tout cela sur le dépôt distant :

git status
git add .
git commit -m 'Fusion de la branche unites réalisée'
git push origin master

Ce fut une vraie partie de plaisir que je vous souhaite.

Surveillance de masse

Nous reproduisons ici un texte fondamental quant à la compréhension de l’idée qu’aucune technique n’est neutre et que chacune porte en elle-même un projet politique, une vision du monde de part son existence elle-même. Ce texte est reproduit en licence libre sur le site de La Quadrature du Net et c’est pourquoi nous nous permettons de le reproduire tel quel tout en remerciant vivement ses auteurs de la clarté de leurs propos.

EDRi demande l’interdiction de la surveillance biométrique

Posted on14 mai 2020

L’association internationale EDRi, soutenue par La Quadrature du Net, lance une campagne européenne pour faire interdire la reconnaissance faciale et plus généralement la surveillance de masse biométrique. Nous publions la traduction du communiqué de lancement.

À travers toute l’Europe, des technologies de reconnaissance faciale et d’identification biométrique, intrusives et violant les droits, se répandent discrètement dans les espaces publics. Comme la Commission européenne consulte le public à ce sujet, EDRI appelle les États membres de l’UE à garantir que de telles technologies soient totalement interdites, à la fois dans la loi et dans la pratique.

Circulez, y a rien à voir…

À la fin de l’année 2019, au moins 15 pays européens ont expérimenté des technologies de surveillance de masse utilisant l’identification biométrique, comme la reconnaissance faciale. Ces technologies sont conçues pour surveiller, suivre et analyser les individus, pour les noter et les juger dans leur vie quotidienne.
Pire, plusieurs gouvernements l’ont fait en collaboration avec des entreprises technologiques secrètes, en l’absence de débat public et sans avoir démontré que ces systèmes respectent les critères les plus élémentaires de responsabilité, de nécessité, de proportionnalité, de légitimité, de légalité ou de sécurité.

Quelques milliers de caméras pour les gouverner tous

Sans la vie privée, vous n’avez plus de conversations privées avec vos ami·es, votre famille, votre supérieur ou même votre docteur. Votre militantisme et votreengagement pour sauver la planète sont connus de tous et toutes. Si vous lancez l’alerte pour dénoncer un fait d’exploitation ou de corruption, ou si vous assistez à une manifestation politique qui déplaît à votre gouvernement, on peut vous retrouver. Vous perdez de fait le droit d’assister à une cérémonie religieuse ou à une réunion syndicale sans qu’on garde un œil sur vous, le droit d’étreindre votre partenaire sans que quelqu’un vous regarde, le droit de flâner librement sans que quelqu’un puisse trouver ça louche.

La surveillance de masse permanente supprime le droit d’être réellement seul et instaure l’obligation d’être constamment surveillé et contrôlé.

COVID-1984 ?

Les débats autour de la pandémie de coronavirus ont vu naître des idées d’applications et d’autres propositions pour étendre rapidement les systèmes de surveillance, sous couvert de santé publique. Le risque est considérable que les dégâts causés par cet élargissement des mesures de surveillance survivent à l’épidémie. On peut se demander, par exemple, si les employeurs enlèveront les caméras thermiques des bureaux une fois la pandémie passée.

Les systèmes de surveillance biométriques exacerbent les inégalités structurelles, accélèrent la création de fichiers et de « profilages » illégaux, ont un effet intimidant sur les libertés d’expression et de réunion, et limitent les capacités de chacun·e à participer à des activités sociales publiques.

Fanny Hidvegi, responsable de la politique européenne à Access Now, insiste sur ce point :

« Les droits humains s’appliquent en temps de crise et d’urgence. On ne doit pas avoir à choisir entre la vie privée et la santé : protéger les droits numériques favorise la santé publique. La suspension des droits à la protection des données en Hongrie est la preuve que l’UE doit renforcer la protection des droits fondamentaux. »

La surveillance biométrique : une architecture d’oppression

Se présentant comme une « architecture d’oppression », la capture et le traitement non ciblé de données biométriques sensibles permet aux gouvernements et aux entreprises d’enregistrer en permanence et en détail qui vous rencontrez, où vous allez, ce que vous faites. Cela leur permet aussi d’utiliser ces informations contre vous — que ce soit par les pouvoirs publics pour faire appliquer la loi ou à des fins commerciales. Une fois ces enregistrements reliés à nos visages et corps, il n’y a plus de retour possible, nous sommes marqués au fer rouge. Il ne peut y avoir de place pour de telles pratiques dans une société démocratique.

Ioannis Kouvakas, juriste chez Privacy International (PI), membre d’EDRi met en garde :

« L’introduction de la reconnaissance faciale dans les villes est une idée extrémiste et dystopique qui menace explicitement nos libertés et pose des questions fondamentales sur le type de société dans laquelle nous voulons vivre. En tant que technique de surveillance très intrusive, elle offre aux autorités de nouvelles opportunités de s’en prendre à la démocratie sous prétexte de la défendre. Nous devons interdire son déploiement dès maintenant et de manière définitive avant qu’il ne soit trop tard. »

EDRi demande donc une interdiction immédiate et permanente de la surveillance de masse biométrique dans l’Union européenne.

La surveillance de masse biométrique est illégale

Cette interdiction est fondée sur les droits et protections consacrés par la Charte des droits fondamentaux de l’Union européenne, le Règlement général sur la protection des données (RGPD) et la Directive Police Justice. Ensemble, ces textes garantissent aux résidents de l’UE de vivre sans la crainte d’un traitement arbitraire ou d’un abus de pouvoir, et le respect de leur autonomie. La surveillance de masse biométrique constitue une violation de l’essence de ces textes et une violation du cœur même des droits fondamentaux de l’UE.

Une fois que des systèmes qui normalisent et légitiment la surveillance constante de tout le monde sont en place, nos sociétés glissent vers l’autoritarisme. L’UE doit donc veiller, par des moyens notamment législatifs, à ce que la surveillance de masse biométrique soit totalement interdite en droit et en pratique. Lotte Houwing, conseillère politique chez Bits of Freedom (BoF), membre d’EDRi, déclare :

« Les mesures que nous prenons aujourd’hui façonnent le monde de demain. Il est de la plus haute importance que nous gardions cela à l’esprit et que nous ne laissions pas la crise du COVID-19 nous faire sombrer dans un état de surveillance (de masse). La surveillance n’est pas un médicament. »

L’UE réglemente tout, des médicaments aux jouets pour enfants. Il est inimaginable qu’un médicament dont l’efficacité n’a pas été prouvée ou un jouet présentant des risques importants pour la santé des enfants soient autorisés sur le marché. Cependant, en ce qui concerne la captation et le traitement des données biométriques, en particulier à la volée dans les espaces publics, l’UE a été un foyer pour les expérimentations illégales. D’après une étude de 2020, plus de 80% des Européens sont pourtant opposés aux partages de leurs données faciales avec les autorités.

EDRi appelle la Commission européenne, le Parlement européen et les États membres à respecter leurs valeurs et à protéger nos sociétés en interdisant la surveillance de masse biométrique. S’ils s’y refusent, nous augmentons nos chances de voir naître une dystopie numérique incontrôlable.

L’invention des déchets urbains

Un ouvrage d’une qualité remarquable. Non seulement par le sérieux de son contenu, mais par l’importance de son sujet.

Le début du XIXe siècle est caractérisé par l’absence de la notion de déchet en raison d’une vision incroyablement écologique du cycle des matières qui, étant alors essentiellement organiques, sortent de la ville pour y revenir par les comestibles.

Ce cycle est brisé par l’apparition des engrais chimiques qui vont remettre en question l’utilisation des matières rejetées par la ville en direction des champs. La résistance à cet abandon du recyclage existera durant la fin du siècle et le début du suivant. Mais le cercle sera rompu essentiellement par un changement de vision du cycle écologique des matières biologiques au profit d’un cycle intégrant une dégradation de celles-ci vers des déchets minéraux.

On y apprends aussi l’histoire du papier à travers les chiffonniers et la dégradation progressive de leur conditions de travail par l’apparition des poubelles et celles beaucoup plus récentes des décharges, des incinérations et des stations d’épurations.

La conclusion fait le point de ce que ces histoires devraient permettre de remettre en question dans notre façon de voir les déchets humains et urbains et elle montre l’aveuglement qui est caractéristique de notre époque.

C’est un ouvrage exceptionnel de clarté, de mise en lumière, d’importance qui n’est semble-t-il malheureusement (et on peut imaginer pourquoi) plus édité. N’hésitez donc pas à vous le procurer en bibliothèque, car il contient des informations qui vont certainement changer votre vie.

25. Vit et taskwarrior

Voici un script permettant d’utiliser taskwarrior en ligne de commande avec une interface du type de cmus, pour la musique.

On lance vit en tapant simplement son nom.

Après avoir lancé vit , les principales commandes permettant de l’utiliser sont (cmd signifie simplement qu’il faut presser la touche qui suit) :

cmda STRINGcréer une nouvelle tâche de description STRING
cmdA STRINGcréer une annotation datée pour la tâche courante
cmdb STRINGdémarrer / arrêter une tâche
cmdm STRINGmodifie la description de la tâche courante en la renommant STRING
cmd:![rw] STRINGexecute « STRING » in shell. ‘r’ rereads, ‘w’ waits
cmdtprepend the command prompt with « :!rw task « 
cmd:s/OLD/NEW/passe OLD à NEW la description de la tâche courante
cmd:%s/OLD/NEW/change OLD to NEW in the current task’s description
cmdDsupprime l’annotation sélectionnée, supprime la tâche sélectionnée (confirmation par y)
cmdepermet d’éditer toutes les propriétés de la tâche courante dans un éditeur (vim par exemple)
cmd=voir toutes les informations concernant la tâche courante
cmd<enter>voir toutes les informations concernant la tâche courante
cmduannule le dernier changement
rpt:REPORTdisplay REPORT
rpt:REPORT FILTERdisplay REPORT with FILTER
rpt:STRING<tab>display REPORT using tab completion
rpt:<tab>display REPORT using tab completion of all defined reports
cmdqquitte après confimation
cmdQquitte
cmdZZquitte
cmd:qquitte
cmdf FILTERfilter the current report with FILTER
cmddmarque la tâche courante comme faite
navjdescend d’une ligne
navDownArrowdescend d’une ligne
navSpacebardescend d’une ligne
nav:Nva à la tâche numérotée N
nav0va à la première ligne
navggva à la première ligne
navHva à la première ligne sur l’écran
navGva à la dernière ligne
navLva à la dernière ligne sur l’écran
navMva à la ligne au milieu de l’écran
navkmonte d’une ligne
navUpArrowmonte d’une ligne
cmdNva à l’occurrence précédente d’une recherche
cmdnva à l’occurrence suivante d’une recherche
nav^lrafraîchit la liste (l’écran)
nav^fscroll down (forward) one page
navPgDnscroll down (forward) one page
nav^bscroll up (back) one page
navPgUpscroll up (back) up one page
cmd/STRINGrecherche vers le bas la chaîne STRING
cmd?STRINGrecherche vers le haut la chaîne STRING
cmdP [hmln]donne à la tâche courante la priorité H, M, L, ou none
cmdp STRINGplace la tâche courante dans le projet STRING
cmdp STRING<tab>place la tâche courante dans le projet STRING avec complétion (tab)
cmdp<tab>place la tâche courante dans un projet en utilisant la complétion (tab)
help:hprésente l’aide complète
help:h cmdprésente l’aide relative à la commande cmd
help:h helpprésente l’aide sur l’aide
help:h navprésente l’aide sur la navigation
help:h rptprésente l’aide sur les rapports
help:h PATTERNprésente les fichiers d’aide correspondants à l’occurrence PATTERN
cmdw STRINGmet en pause la tâche courante
cmdT +STRINGajoute le tag STRING à la tâche courante
cmdT -STRINGretire le tag STRING de la tâche courante
cmdT<tab>ajoute des tâches à la tâche courante avec complétion (tab)
On peut trouver la version anglaise de cette aide à l’aide de :h dans vit.

Vim et LaTeX

Voici un article amusant qui révèle la difficulté à se séparer de ses préjugés sur le bien fondé des interfaces graphiques.

Cela fait maintenant dix ans que j’utilise Latex et suis entièrement convaincu du bien fondé d’un traitement de texte basé sur un code source. Aucun autre traitement de texte en mode visuel, comme LibreOffice auquel je tire néanmoins ma révérence, ne m’a convaincu. LaTeX est un traitement de texte extraordinaire et le fait qu’il faille l’utiliser à avec un langage de script y est pour beaucoup.

Alors qu’aucun doute ne s’est jamais présenté dans ma tête sur LaTeX, il faut reconnaître que l’utilisation de différents éditeurs graphiques pour LaTeX, comme Texmaker, TexStudio ou Kile, m’a très longtemps empêché d’envisager l’utilisation d’éditeurs en ligne de commande comme vim ou emacs pour rédiger en LaTeX.

Je me lance donc aujourd’hui dans l’aventure avec vim. Pourquoi pas emacs ? Comme déjà dit ailleurs, la présence de vi par défaut sur toutes les distributions linux m’a fait considérer son utilisation avant toute chose. Mais emacs viendra un jour sans aucun doute, tant je considère les idées de RMS comme pertinentes.

Installation

On va ici supposer que LaTeX est installé et fonctionnel, car il s’agit dans cet article de montrer comment l’utiliser avec vim et son plugin vim-latex. Ce dernier est une solution standard et d’autres existent. Mais dans un premier temps, c’est à celle-ci que nous allons nous intéresser.

L’installation, sous Debian, se passe apparemment sans difficultés avec un petit :

apt-get vim-latesuite

Malheureusement, ce n’est pas aussi simple. Sous Debian, il faut encore passer par le README.debian du paquet pour y découvrir que :

… ce paquet fournit la composante latex-suite de vim, mais elle n’est pas activée par défaut. Si vous voulez l’activer sur le compte d’un utilisateur, exécutez :

vim-addons install latex-suite

Pareillement, pour l’activer pour tous les utilisateurs du système, exécutez (sous root) :

vim-addons -w install latex-suite

vim-addons est fourni par le paquet vim-addons-manager, jetez un coup d’œil à sa page de manuel pour plus d’informations.

En plus, vous devez mettre les lignes suivantes :

filetype plugin on
set grepprg)grep\ -nH\ $*
filetype indent on
let g:tex_flavor='latex'

dans ~/.vimrc (ou /etc/vim/vimrc sous root) pour une pleine utilisation. Pour plus d’informations sur ces lignes, type : « :help ls_1 » dans vim (après avoir activé ce plugin avec vim-addons).

Il est nécessaire d’activer le plugin, car la structure permettant de le gérer sera alors créée dans le répertoire ~/.vim/

En plus de cela, d’autres problèmes peuvent apparaître. Étonnamment, après l’activation du plugin, le caractère « é » n’était plus actif. Il était simplement impossible de le taper. Cela était dû au mappage de l’équivalent clavier utilisé par vim-latex pour mettre la commande \item de l’environnement itemize. Pour régler ce problème, il a fallu mettre la ligne suivante dans ~/.vimrc :

imap <buffer> <leader>it <Plug>Tex_InsertItemOnThisLine

comme cela est très bien décrit sur la page de FAQ de vim-latex :

http://vim-latex.sourceforge.net/index.php?subject=faq&title=FAQ#faq-viewing

Signalons enfin que tout au long de mes recherches, un fichier était souvent cité pour des modifications. Il s’agit de ~/.vim/tex.vim. Sous debian ce fichier n’existe pas à cet endroit. De plus, il existe dans ~/.vim/compiler et dans ~/.vim/indent. Enfin, les commandes à modifier n’étaient pas présentes dans ces deux fichiers. Je n’ai découvert le véritable fichier de configuration dans lequel celles-ci se trouvaient qu’en allant dans :

~/vim/ftplugin/latex-suite/texrc

C’est ce fichier qui permet la configuration du plugin vim-latex, mais il faut le savoir.

Utilisation

L’utilisation de vim-latex est relativement simple. En effet, vim détecte l’extension de votre fichier .tex pour modifier son comportement. Ainsi, en créant un fichier test.tex, par exemple, et en y insérant une structure de fichier LaTeX, vous pourrez constater avec plaisir que celle-ci est reconnue. En y mettant cependant quelques section, en enregistrant et quittant le fichier et en le rouvrant, vous aurez cependant la surprise de ne plus retrouver votre code. À l’intérieur de celui-ci seront présents des caractères « + » mis en évidence. C’est le pliage du code. Celui-ci étant activé par défaut, on peut être surpris, surtout si on ne sait pas comment le déplier.

Pour cela, il suffit de mettre le curseur dans la ligne où se trouve le code plié et, en mode normal de vim, de presser za. C’est une bascule. Donc pour replier le code précédemment déplié, il suffit de refaire za. Pour déplier l’ensemble du code, il faut presser zR en mode normal. Pour replier tout le code, toujours en mode normal, il suffit de presser zM.

Beaucoup d’autres commandes vont faciliter la vie pendant l’écriture en LaTeX. Le manuel les décrivant est à l’adresse :

http://vim-latex.sourceforge.net/documentation/latex-suite-quickstart/index.html

Compilation

Pour votre première compilation, il faut naturellement être attentif à avoir placé votre fichier source (.tex) dans un répertoire pour éviter de disperser les nombreux fichier qui vont apparaître.

Après cela, la compilation se fait très simplement en utilisant en mode normal la commande :

\ll

Vous verrez alors apparaître une fenêtre de compilation qui si celle-ci se déroule bien, se refermera rapidement. Une compilation en DVI aura été réalisée. Pour en voir le résultat, il faut utiliser \lv.

Si des erreurs apparaissent, vous verrez votre terminal se diviser en deux parties. L’une contiendra les erreurs et l’autre le code. Vous pourrez alors corriger le code et recompiler pour faire disparaître la fenêtre de compilation.

Configuration de la compilation

Par défaut la compilation produit à partir du code source un fichier DVI. La production de documents utilisant Gnuplot par exemple nécessitant d’une part Gnuplot et d’autre part une compilation en postscript, on peut préciser la chaîne de compilation utilisée par vim-latex dans le fichier ~/.vim/ftplugin/latex-suite/texrc. Il s’agit en réalité d’un lien vers /usr/share/vim/addons/ftplugin/latex-suite/texrc. Or, ce fichier est amené à être mis-à-jour. Il ne faut donc pas l’utiliser directement, mais le copier dans le répertoire personnel à la place de son lien. Pour cela, renommez le lien, puis copiez le fichier en lui donnant comme propriétaire et groupe celui de l’utilisateur.

La structure de compilation choisie est DVI → PS → PDF. Pour le faire comprendre à vim-latex, dans ce fichier, il faut trouver la section « Rules : specifications of programs for compiling and viewing ». Dans celle-ci figurent les lignes suivantes :

if has('macunix')
    TexLet g:Tex_DefaultTargetFormat = 'pdf'
else
    TexLet g:Tex_DefaultTargetFormat = 'pdf'
endif

Selon les plateformes, Mac ou (else) autre, assurez-vous d’abord que le fichier final est est en PDF. C’est ce type de fichier que la commande \lv appellera.

Ensuite, il faut définir la chaîne de compilation. Un peu plus bas, se trouvent les deux lignes suivantes :

TexLet g:Tex_MultipleCompileFormats = 'dvi'
" TexLet g:Tex_FormatDependency_ps = 'ps'

Le premier indique s’il est possible qu’il faille compiler plusieurs fois le fichier et le second comment s’il faut compiler en ps, par exemple (ici le commentaire (« ) indique que la compilation en ps n’est pas requise). Dans notre cas, ces deux fichiers doivent contenir :

TexLet g:Tex_MultipleCompileFormats = 'dvi,ps,pdf'
TexLet g:Tex_FormatDependency_ps = 'dvi,ps,pdf'

La première ligne vous permettra d’éviter de devoir valider après la compilation de chaque fichier. La seconde est la chaîne de compilation choisie.

Plus bas se trouvent les règles de compilation (Compiler Rules). Il s’agit de définir l’appel des logiciels en charge de chaque étape de compilation. Pour la compilation LaTeX, il faut la commande :

TexLet g:Tex_CompileRule_dvi = 'latex -enable-write18 -shell-escape -interaction=nonstopmode -file-line-error-style $*'

Les deux premiers arguments de la commande latex ont ici été ajoutés pour permettre l’utilisation de Gnuplot. C’est cette commande qui est utilisée par défaut pour une compilation en DVI.

Puis, il faut spécifier la commande postscript :

TexLet g:Tex_CompileRule_ps = 'dvips -Ppdf -o $*.ps $*.dvi'

où l’argument -Ppdf pourrait être retiré, car il récupère la configuration de l’imprimante pour optimiser la sortie postscript.

Enfin, il faut spécifier la commande pdf :

TexLet g:Tex_CompileRule_pdf = 'ps2pdf $*.ps'

Ainsi, la compilation se fera automatiquement vers DVI → PS → PDF.

Relevez que si celle-ci ne devait pas permettre le bon visualiseur PDF, il vous faudrait spécifier celui-ci dans la partie qui suit, nommée Viewer rules avec :

TexLet g:Tex_ViewRule_pdf = 'okular'

par exemple.

Enfin, un petit problème est survenu qui rendait désagréable la compilation. Par défaut, l’enregistrement du document ne se faisait pas avant celle-ci, au lancement de la commande \ll. On peut comprendre que certains préfèrent qu’il en soit ainsi. Mais un autre comportement devrait être possible sans qu’il nécessite une utilisation complexe de vim. Or, pour le régler, ce que j’ai pu trouver tout au long de mes recherches pour le faire est de placer les deux lignes suivantes dans mon ~/.vimrc :

autocmd FileType tex call Tex_MakeMap('<leader>ll', ':update!<CR>:call Tex_RunLaTeX()<CR>', 'n', '<buffer>')
autocmd FileType tex call Tex_MakeMap('<leader>ll', '<ESC>:update!<CR>:call Tex_RunLaTeX()<CR>', 'v', '<buffer>')

Je ne commente pas ces lignes qui sont certainement parfaitement évidentes pour tout le monde 🙂 … Reste qu’elle fonctionnent parfaitement.

Utilisation avancée

Verbosité

Tout d’abord, il est possible de régler ne niveau de détection des erreurs grâce à la commande :

:TCLevel numero

Par défaut le numéro 3 permet un niveau moyen de verbosité. En augmentant le niveau, on affiche moins d’erreurs. Pour n’afficher aucune erreur, le niveau à choisir est le numéro 7. Pour afficher toutes les erreurs, le niveau est le 0 ou l’utilisation du mot (sans guillemets) : strict.

En réalité, en définissant le niveau, on choisit les warning à ne pas ignorer. Dans le fichier .vim/ftplugin/latex-suite/texrc, se trouvent les lignes suivantes :

TexLet g:Tex_IgnoreWarnings =
\"Underfull\n".
\"Overfull\n".
\"specifier changed to\n".
\"You have requested\n".
\"Missing number, treated as zero.\n".
\"There were undefined references\n".
\"Citation %.%# undefined"

TexLet g:Tex_IgnoreLevel = 7

En choisissant le niveau 7, on décide de passer sur l’ensemble de tous ces avertissements.

Si, on désire que les avertissements de références définies plusieurs fois ne soient pas pris en compte, on peut ajouter la ligne :

\'Label %.% multiply defined.'

En laissant la variable g:Tex_IgnoreLevel à 7, comme la numérotation commence à 0, cela signifie les erreurs de définition multiple des labels ne seront pas prises en compte, puisque on va ignorer les 7 premières lignes. Pour que celles-ci soient à nouveau prises en compte, il faut donc passer le niveau 6 par défaut. Ainsi, en utilisant la commande :

:TCLevel 7

on élimine les erreurs de labels définis de manière multiple.

Commandes prédéfinies

Un exemple est particulièrement parlant, celui des figures. Pour obtenir facilement une structure de figure, en mode édition de texte, il suffit de taper directement : EFI. La structure qui apparaît alors est la suivante :

\begin{figure}[<+htpb+>]
    \centering
    \includegraphics{<+file+>}
    \caption{<+caption text+>}
    \label{fig:<+label+>}
\end{figure}<++>

On y voit une structure commune de figure avec des éléments à remplir qui se nomment des «Place-Holder». Il s’agit d’endroits où se trouvent les balises <+ et +> entourant un mot. À l’aide de Ctrl J, on peut passer d’un place-holder à l’autre pour remplir ces champs par ce qui est demandé. C’est très efficace. Quand tout est fini, le dernier place-holder sélectionné disparaît.

Une autre commande prédéfinie permet d’obtenir l’environnement d’équations. Il s’agit d’EEQ.

Ci-dessous le manuel de référence :

http://vim-latex.sourceforge.net/documentation/latex-suite-quickstart/

23. Email, mon amour !

Je reproduit ici un magnifique texte d’un écrivain électronique @ploum qui, non content de nous livrer une pensée fort intéressante, la publie sous différents formats, mais en licence libre (CC-By BE). Se trouve après celui-ci une critique qui, me semble-t-il, permet de dépasser son propos.

Je me suis surpris à envoyer un long email à une personne que je suis depuis plusieurs années sur les réseaux sociaux. J’ai pris le temps de rédiger cet email. De le relire. De le corriger. De l’affiner. J’y exprime une idée simple que j’aurai pu lui envoyer sur Twitter, que ce soit en le mentionnant ou en messagerie privée. Je lui dis, tout simplement, que je ne souhaite plus interagir sur Twitter.

Le fait de prendre du temps, de réfléchir, de me relire m’a procuré un énorme plaisir. J’avais l’impression d’avoir apporté un petit quelque chose au monde, une clarification de mes idées, une main tendue, une piste de réflexion partagée. J’ai construit quelque chose d’intime, où je me révèle.

En tentant de regagner le contrôle de mon cerveau, j’ai retrouvé, sans le vouloir, l’art désuet de la relation épistolaire.

Nous avons oublié l’importance et la facilité de l’email. Nous l’avons oublié, car nous n’en avons pas pris soin. Nous laissons notre boîte aux lettres pourrir sous des milliers de messages non sollicités, nous perfectionnons volontairement l’art de remplir nos boîtes de courriels inutiles, inintéressants, ennuyeux sans plus jamais prendre le temps d’y déposer un courrier utile, écrit, intime.

Nous croyons que le mail est ennuyeux alors que ce sont nos pensées qui sont obscurément désertes. « Ce qui se conçoit bien s’énonce clairement et les mots pour le dire viennent aisément », disait Boileau. Force est de constater que nos cerveaux sont désormais d’infernaux capharnaüms assiégés par d’innombrables tentatives de les remplir encore et encore. Anesthésiés par la quantité d’informations, nous ne trouvons d’échappatoire que dans la consommation.

Souhaitant soigner ma dépendance à Twitter, j’avais décidé de ne plus suivre que quelques comptes sélectionnés dans mon lecteur RSS grâce à l’interface Nitter. En quelques semaines, une froide vérité s’est imposée à moi : rien n’était intéressant. Nous postons du vide, du bruit. Une fois ôtées les fonctionnalités affriolantes, les notifications, les commentaires, le contenu brut s’avère misérable, souffreteux. J’avais pourtant sélectionné les comptes Twitter de personnes particulièrement intéressantes et intelligentes selon mes critères. Las ! Nous nous complaisons tous dans la même fange d’indignation face à une actualité très ciblée, le tout saupoudré d’autocongratulation. Réduite à quelques caractères, même l’idée la plus enrichissante se transforme en bouillie prédigérée conçue pour peupler un hypnotique défilement ininterrompu.

Un soir, alors que je profitais de ma douche pour articuler un concept théorique qui m’occupait l’esprit, j’ai réalisé avec effroi que je pensais en threads Twitter. Mon esprit était en train de diviser mon idée en blocs de 280 caractères. Pour le rendre plus digeste, plus populaire. J’optimisais spontanément certaines phrases pour les rendre plus « retweetables ».

En échange d’un contenu de piètre qualité, Twitter déformait mes pensées au point de transformer mon aquatique méditation vespérale en quête semi-consciente de glorioles et d’approbations immédiates. Le prix payé est inimaginable, exorbitant.

Ayant bloqué tous les sites d’actualité depuis belle lurette, je décidai que Twitter et Mastodon allaient suivre le même régime que Facebook et Linkedin : ne plus suivre personne. Je nourris désormais ma sérendipité d’écrits plus longs grâce à l’ancienne magie vaudoue du RSS.

Libéré, aéré, le cerveau retrouve soudain de la souplesse, de l’amplitude. Au détour d’une blague dans un forum que je suis, je crois deviner qu’un politicien a été mis en prison. L’information m’agresse. Elle occupe une place imméritée dans mon cerveau. Je n’avais pas envie de savoir cet inutile artefact qui sera vite effacé de la conscience publique. Comme un ancien fumeur soudainement allergique à la fumée, mon cerveau ne peut plus supporter les déchets pseudo-informationnels dont nous sommes abreuvés par tous les pores, par tous les écrans, par toutes les conversations.

Une fois débarrassé de cette gangue d’immondices, je me surprends à penser. Mes doigts se surprennent à vouloir écrire plutôt qu’à rafraîchir une page et réagir avec une émotion préfabriquée. Au lieu d’une démonstration publique de mon égotique fierté travestie en succédané de communication, j’ai envie de forger des textes, des histoires, de faire passer une information dans un contexte plus large, de lui donner le temps d’exister dans l’esprit des récipients. Et tant pis si ces derniers sont moins nombreux, moins enclins à m’injecter leurs likes chargés de dopamine.

Devant ma boîte aux lettres, immaculées grâce à une stricte observance des mes règles inbox 0 et de désabonnement, je guetterai la réponse comme un adolescent attend le facteur lui tendant une enveloppe parfumée. Et si elle ne vient pas, ma vie continuera sans que je sois obnubilé par un compteur de vues, de likes ou de partages.

L’outil de communication décentralisé web 5.0, 6.0 et 12000.0 existe déjà. C’est l’email. Nous n’avons tout simplement pas encore vraiment appris à l’utiliser. Nous tentons vainement de le remplacer ou de l’améliorer à grands coups d’interfaces et de fonctionnalités multicolores, car il expose la vacuité de nos interactions. Il met à nu que nous devrions faire un effort, changer notre cerveau et notre volonté. Tant que nous nous évertuerons à produire et consommer le plus de bruit possible en insatiables gloutonneries, tant que nous mesurerons notre succès avec d’autocrates statistiques, aucun système ne nous permettra de communiquer. Parce que ce n’est pas ce que nous cherchons. Parce que nous nous sommes perdus dans l’apparence et la quantité, jetant aux oubliettes l’idée même de qualité. Nous critiquons la faiblesse d’esprit et le court-termisme de nos politiciens sans réaliser que nous moquons notre propre reflet.

Lorsque nous serons assez mûrs pour tout simplement vouloir échanger de l’information de qualité, nous découvrirons que la solution était sous nos yeux. Si simple, si belle, si élégante, si décentralisée.

L’email.

@ploum

Il faut relever que si ce texte met en évidence une autre manière de considérer le mail que comme un moyen d’envoyer de petits messages et relève bien le plaisir qu’il y a prendre le temps d’écrire des textes longs, la stigmatisation de l’écologie réalisée dans un autre texte par son auteur montre que les raisons de son intérêt pour l’email sont exclusivement celles d’un écrivain et que son efficacité en terme de relation entre le contenu et l’énergie dépensée n’est pas comprise.

Dans un autre texte sur le « Minimalisme numérique », dont l’objectif n’est pas une décroissance des besoins, mais une meilleure efficacité de besoins, en admettant que chacun définisse ceux-ci selon son bon vouloir, il adopte certes un point de vue intelligent parce qu’une absence d’efficacité est stupide, mais il néglige les modifications salutaires que des changement de pratiques peuvent avoir sur nous. Ainsi, son point de vue est de retrouver le plaisir d’écrire par l’utilisation d’email long, mais pas de trouver celui-ci dans la recherche d’un minimalisme énergétique. Les outils qu’il décrit ensuite, comme son utilisation d’un mac et d’un téléphone android en spécifiant simplement que les autres portables sont trop lourds et que le fairphone ne le convainc pas, montrent que l’idée de minimalisme qu’il soutient limite considérablement son évolution et que les principes du libre n’ont pas pour lui de conséquences écologiques.

Ce qui limite la porté de ce néanmoins beau texte.