LaTeX-Workshop ou comment transformer VSCode en un véritable IDE LaTeX

Jérôme Lelong

Grenoble INP, UGA

jerome.lelong@gmail.com
jerome.lelong@univ-grenoble-alpes.fr

https://github.com/James-Yu/LaTeX-Workshop/

J. Lelongcenter Exposés GUTenberg, 2/10/2024

Plan de la présentation

1. Introduction

2. Principes généraux

3. Fonctionnalités principales

4. Quelques fonctionnalités plus avancées

J. Lelongcenter Exposés GUTenberg, 2/10/2024

Introduction : un peu de contexte

  • Visual Studio Code est un éditeur opensource, cross-platform développé par Microsoft.
  • Après de longues années sous Emacs, puis Vim, j'utilise VSCode avec l'extension VSCodeVim.
  • LaTeX-Workshop a été créé en 2017 par James Yu.
  • J'ai rejoint l'aventure en mars 2018 en développant une syntaxe pour DocTeX. Moins actif depuis fin 2022.
  • Documentation : https://github.com/James-Yu/LaTeX-Workshop/wiki. Si vous repérez des erreurs ou souhaitez proposer des améliorations : https://github.com/jlelong/LaTeX-Workshop-wiki.
J. Lelongcenter Exposés GUTenberg, 2/10/2024

La coloration syntaxique

  • Fin 2021, Microsoft nous a sollicités pour intégrer la reconnaissance de la syntaxe LaTeX à VSCode “built-in”.
  • Où rapporter les problèmes ou faire des suggestions : https://github.com/jlelong/vscode-latex-basics.
  • La syntaxe incluse dans VSCode est mise à jour à chaque nouvelle version.
  • Différents langages : TeX, LaTeX, DocTeX, R Weave, Julia Weave, LaTeX et Markdown combinés (via le paquet markdown), BibTeX.
  • injection d'autres grammaires (C/C++, python, CSS, YaML, JSON, julia, asymptote, java, js, html, scala, ruby, lua, ...) supportées dans les environnements minted, listings, pyglist (paquet verbmets), CacheMe (paquet robust-externalize).
J. Lelongcenter Exposés GUTenberg, 2/10/2024

Principes généraux

J. Lelongcenter Exposés GUTenberg, 2/10/2024

Détection du fichier principal

Toujours un répertoire, pas seulement le fichier TeX.

  1. Magic comment % !TEX root = relative/or/absolute/path/to/root/file.tex.
  2. Self check L'éditeur actif contient-il \documentclass[...]{...} ou \begin{document}. cf latex-workshop.latex.rootFile.indicator.
  3. Root directory check LW cherche un fichier .tex dans le workspace contenant \documentclass[...]{...} ou \begin{document} qui inclut l'éditeur actif. Pour éviter de parser tous les .tex voir latex-workshop.latex.search.rootFiles.include ou latex-workshop.latex.search.rootFiles.exclude.
  4. The .fls files La liste complète des dépendances est construite à partir du fichier .fls.
J. Lelongcenter Exposés GUTenberg, 2/10/2024

Détection du fichier principal : subfiles

Le fichier principal est utilisé pour l'auto-complétion (intellisense). Les fonctions autobuild, autoclean et forward synctex dépendent de la variable latex-workshop.latex.rootFile.useSubFile pour agir sur le fichier principal ou le subfile.

J. Lelongcenter Exposés GUTenberg, 2/10/2024

Fichiers temporaires

La compilation LaTeX produit des fichiers temporaires dont certains sont utilisés par LaTeX-Workshop :

  • .fls pour la détection des dépendances
  • .aux pour l'inclusion de la numérotation LaTeX des équations, figures ou tables dans les “hover”.

Fonctionnalités principales

J. Lelongcenter Exposés GUTenberg, 2/10/2024

Compilation

La compilation utilise une système de recettes. Par défaut, latexmk. Voir la variable latex-workshop.latex.recipe.default.

  • compilation manuelle : ctrl+alt+b ou dans la vue Tex

center

  • compilation automatique : onSave ou onFileChange
J. Lelongcenter Exposés GUTenberg, 2/10/2024

Les erreurs de compilation

center

J. Lelongcenter Exposés GUTenberg, 2/10/2024

Visualisation

Plusieurs options : interne (PDF.js), browser, externe (pas de support)

  • visualiser un PDF : ctrl+alt+v ou dans le menu TeX
  • Lien bidirectionnel PDF <-> TeX via synctex.

center

J. Lelongcenter Exposés GUTenberg, 2/10/2024

Intellisense : auto-completion

  • Les noms de commande
  • Les environnements
  • Les packages dans \usepackage.
  • Les références (avec \ref et ses variantes).
  • Les citations
  • Les chemins avec \include, \input, \includegraphics (prise en compte de graphicspath) et de nombreuses variantes.
J. Lelongcenter Exposés GUTenberg, 2/10/2024

Auto-complétion pour les commandes

J. Lelongcenter Exposés GUTenberg, 2/10/2024

Auto-completion pour les environnements

center

J. Lelongcenter Exposés GUTenberg, 2/10/2024

Auto-completion pour les environnements

center

J. Lelongcenter Exposés GUTenberg, 2/10/2024

Auto-completion pour les environnements

\envname insère \begin{envname}....\end{envname}.

center

J. Lelongcenter Exposés GUTenberg, 2/10/2024

Les snippets @

J. Lelongcenter Exposés GUTenberg, 2/10/2024

Les snippets B

  • B + XY pour insérer un environnement dont les 2 premières lettres sont XY. BSXY insère la version “étoile” de l'environnement.

    center

J. Lelongcenter Exposés GUTenberg, 2/10/2024

Quelques fonctionnalités plus avancées

J. Lelongcenter Exposés GUTenberg, 2/10/2024

Encapsuler du texte dans une commande

  • ctrl+l, ctrl+w ou appeler Surround selection with LaTeX depuis la Palette

    center

J. Lelongcenter Exposés GUTenberg, 2/10/2024

Encapsuler du texte dans une commande

  • Utiliser directement l'auto-completion

    center

J. Lelongcenter Exposés GUTenberg, 2/10/2024

Encapsuler du texte dans un environnement

Utiliser la commande LaTeX Workshop: Surround/wrap selection with \begin{}...\end{} depuis la Palette

center

J. Lelongcenter Exposés GUTenberg, 2/10/2024

Encapsuler du texte dans un environnement

Utiliser \begin

center

J. Lelongcenter Exposés GUTenberg, 2/10/2024

Naviguer, sélectionner, renommer un environnement

  • Naviguer entre \begin et end : LaTeX Workshop: Navigate to matching begin/end
  • Sélectionner le contenu d'un environnement : LaTeX Workshop: Select the current environment content
  • Sélectionner un environnement : LaTeX Workshop: Select the current environment
  • Sélectionner le nom de l'environnement : LaTeX Workshop: Select the current environment name
  • Fermer un environnement : LaTeX Workshop: Close current environment
  • Convertir \[...\] en équation : LaTeX Workshop: Toggle between [...] and \begin{}...\end{}
J. Lelongcenter Exposés GUTenberg, 2/10/2024

Encapsuler du texte dans un environnement

Utiliser \envname

center

J. Lelongcenter Exposés GUTenberg, 2/10/2024

Hover : sur une citation

center

J. Lelongcenter Exposés GUTenberg, 2/10/2024

Hover : sur un package

center

J. Lelongcenter Exposés GUTenberg, 2/10/2024

Hover : sur une référence

center

J. Lelongcenter Exposés GUTenberg, 2/10/2024

Hover : sur une équation

center

J. Lelongcenter Exposés GUTenberg, 2/10/2024

La structure du document

  • Dans la vue Explorer en bas (Outline) : seul le contenu du fichier est utilisé (les \include/\input sont ignorés)
  • Dans la vue TeX (Structure) : l'ensemble des dépendances sont utilisées.
  • La structure comprend
  • Des commandes peuvent être listées dans la structure, par défaut \label.
J. Lelongcenter Exposés GUTenberg, 2/10/2024

Les listes

Insérer \item automatiquement, cf latex-workshop.bind.enter.key.

center

J. Lelongcenter Exposés GUTenberg, 2/10/2024

Promouvoir ou dégrader une section

  • LaTeX Workshop: Select the current section
  • LaTeX Workshop: Promote all the section levels used in the selection
  • LaTeX Workshop: Demote all the section levels used in the selection
J. Lelongcenter Exposés GUTenberg, 2/10/2024

Plier le fichier source

Tous les environnements et sections peuvent être pliés

center

J. Lelongcenter Exposés GUTenberg, 2/10/2024

Formatter

  • Fichier LaTeX en utilisant latexindent, tex-fmt, cf wiki
  • Fichier BibTeX, cf wiki : possibilité de trier la entrées et d'aligner les =.
J. Lelongcenter Exposés GUTenberg, 2/10/2024

Auto-completion dans les fichiers BibTeX

Préfixe d'autocompletion : @. Lien wiki

center

J. Lelongcenter Exposés GUTenberg, 2/10/2024

Quelques éléments de réponses aux questions

  • Supprimer une colonne d'un tableau : aligner les & (latexindent le fait par défaut) et utiliser la sélection rectangulaire de VSCode
  • Afficher le pop-up “hover” au clavier : ctrl+k, ctrl+i.
J. Lelongcenter Exposés GUTenberg, 2/10/2024

[![w:400px center](./media/promote-demote-screen.png)](./media/premote-demote.mp4)