Faites défiler un journal des modifications de TeXstudio jusqu'au bout et vous tombez sur des entrées qui ne sont même pas de TeXstudio : elles appartiennent à Texmaker. TeXstudio a commencé comme un jeu d'extensions à Texmaker sous le nom de « TexMakerX », a été rebaptisé à la version 2.2, et transporte encore l'histoire de son parent. Cette ascendance explique assez bien le caractère de l'éditeur : il ne livre pas un seul exécutable en propre, et pourtant tout ce dont un rédacteur a besoin tient dans une seule fenêtre — éditeur, chaîne de compilation, visionneuse PDF, vérification orthographique et grammaticale, carte du document. Tout sauf LaTeX lui-même. Cette page traite de la configuration de compilation sur laquelle beaucoup butent, de la complétion que rendent possible les fichiers .cwl, de la vue de structure et de SyncTeX.
Un environnement LaTeX qui ne contient pas LaTeX
TeXstudio est un éditeur libre sous GPL v2 qui tourne sur Windows, macOS, Linux et BSD, et il compile en lançant des commandes externes telles que pdflatex ou latexmk. L'ordre d'installation en découle : d'abord une distribution TeX — TeX Live ou MiKTeX —, ensuite TeXstudio. Dans l'autre sens, on obtient l'état déroutant où le programme démarre très bien mais où rien ne se compile. Les fonctions que le projet met lui-même en avant : des palettes de « plus de 1000 symboles mathématiques », un correcteur orthographique et un correcteur grammatical interactifs, le pliage de code, une vue de structure et une visionneuse PDF intégrée à synchronisation « (presque) au niveau du mot » — ce dernier point menant droit à la section SyncTeX plus bas.
L'onglet Build et l'onglet Commands : lire txs:///
Tout se trouve sous Options → Configure TeXstudio, et deux onglets gouvernent la compilation. L'onglet Commands dit ce qu'est réellement chaque commande externe — le chemin de l'exécutable et ses arguments. L'onglet Build définit les « méta-commandes » qui les combinent. Tant que Show Advanced Options n'est pas coché en bas à gauche, l'essentiel du second reste invisible. C'est là que beaucoup s'enlisent : fixer l'onglet Build alors qu'on veut changer un argument de pdflatex, ou l'inverse.
Au quotidien, vous ne touchez qu'à quatre actions. Build & View (F5) compile puis ouvre le PDF ; Compile (F6) se contente de le produire ; View (F7) ouvre celui qui existe déjà ; et Clean balaie les fichiers intermédiaires — .aux, .toc et consorts — sans toucher au PDF final.
Une méta-commande n'est qu'une liste de noms commençant par txs:///, reliés par la barre |. « Build & View » est au fond une expression de deux mots : « le compilateur par défaut, puis la visionneuse par défaut ». Toute commande enregistrée dans l'onglet Commands se référence de la même façon, ce qui permet d'insérer sa propre étape de conversion dans la chaîne.
| Nom | Ce que c'est | Où on le rencontre |
|---|---|---|
txs:///quick | la chaîne compilation puis aperçu | Build & View (F5) |
txs:///compile | le compilateur par défaut (pdfLaTeX d'origine) | Compile (F6) |
txs:///view | la visionneuse par défaut | View (F7) |
txs:///pdflatex | la ligne pdflatex de l'onglet Commands elle-même | peut être désignée comme compilateur par défaut |
txs:///latex | la ligne latex, qui produit un DVI | utilisée par les chaînes passant par le DVI |
txs:///view-pdf | la ligne qui ouvre un PDF, visionneuse interne ou externe | la garder interne pour SyncTeX |
D'origine, le compilateur par défaut est pdfLaTeX, mais le passer à latexmk est le geste habituel. latexmk inspecte les dépendances et relance exactement autant de fois que l'exigent la bibliographie, l'index et les renvois : personne n'a à compter les passages. Dans l'onglet Commands, cela s'écrit ainsi. À noter : % se substitue au chemin absolu du document racine (maître) sans son extension — la racine, et non le fichier en cours d'édition. C'est ce seul détail qui fait fonctionner les projets multi-fichiers.
latexmk -pdf -synctex=1 -interaction=nonstopmode -file-line-error %.texPour changer de moteur document par document, un commentaire magique en première ligne suffit. TeXstudio lit entre autres % !TeX program, % !TeX root, % !TeX encoding et % !TeX spellcheck. Avec la ligne ci-dessous, ce document-là seul compile avec LuaLaTeX, sans toucher à la boîte de dialogue des réglages. La syntaxe exacte de la famille % !TEX est détaillée sur la page TeXShop.
% !TeX program = lualatex
% !TeX root = ../thesis.tex
% !TeX spellcheck = en_GBTrois réglages seulement doivent être figés d'abord
Les réglages sont très nombreux ; l'approche réaliste consiste à n'en trancher que trois d'abord : le compilateur par défaut, la chaîne Build & View et l'activation de SyncTeX. Une fois ces trois-là fixés, F5 emprunte toujours le même chemin, et en cas de problème il n'y a qu'un seul fil à tirer.
- Pour des documents surtout occidentaux, laissez latexmk produire le PDF directement ; pour un modèle japonais hérité, choisissez upLaTeX + dvipdfmx.
- Définissez Build & View comme « ce que fait vraiment le
F5que j'appuie toute la journée », compilation et ouverture dans la visionneuse interne comprises. - Mettez toujours
-synctex=1et-file-line-errordans la commande : le premier pour revenir du PDF à la source, le second pour que les erreurs arrivent avec un nom de fichier et un numéro de ligne. - Éprouvez la configuration sur un
.texde dix lignes avant d'ouvrir le vrai manuscrit, en lisant à la fois le journal et le PDF pour vérifier que le moteur attendu est bien celui qui a tourné.
Configurer la compilation pour le japonais
Deux voies sont largement pratiquées. La première est LuaLaTeX : dans l'onglet Build, réglez Build & View sur « Compile & View » et le compilateur par défaut sur « LuaLaTeX » ; un seul F5 mène au PDF. Pour un démarrage à neuf, c'est le choix direct. La seconde est upLaTeX + dvipdfmx, longtemps le standard japonais ; comme elle intercale un DVI avant le PDF, on règle Build & View sur la « DVI->PDF chain » et le compilateur par défaut sur « LaTeX ».
La disposition la plus lisible consiste à décrire la combinaison de moteurs dans un .latexmkrc et à ne laisser à TeXstudio que l'appel de latexmk. Placez le fichier suivant à côté de votre .tex et latexmk prend en charge l'enchaînement upLaTeX → dvipdfmx, la bibliographie (upbibtex), l'index (upmendex) et le nombre de reprises. Comme $latex porte -synctex=1, SyncTeX continue de fonctionner.
$latex = 'uplatex %O -synctex=1 -interaction=nonstopmode %S';
$bibtex = 'upbibtex %O %B';
$makeindex = 'upmendex %O -o %D %S';
$dvipdf = 'dvipdfmx %O -o %D %S';
$pdf_mode = 3;$pdf_mode = 3 sélectionne le mode « produire un DVI, puis le convertir en PDF avec $dvipdf ». Les jetons %O (options supplémentaires), %S (le fichier source), %B (le nom de base sans extension) et %D (la cible de sortie) sont les espaces réservés de latexmk, et ne sont pas le % de TeXstudio. Ainsi configuré, on obtient le même résultat que la compilation parte de TeXstudio, de la ligne de commande ou d'un tout autre éditeur — parce que la configuration tient en un seul endroit.
Lire le journal à partir de la première erreur
Avant de changer des réglages au hasard, regardez deux choses : quelle commande a été lancée et quelle est la première erreur du journal. Les erreurs LaTeX se propagent : la première ligne rouge a le plus souvent engendré toutes les suivantes. Le panneau de journal de TeXstudio est bâti pour cet ordre de lecture : on bascule entre le journal brut et un tableau qui trie les messages en erreurs (rouge), avertissements (jaune) et boîtes trop pleines (bleu). On se déplace entre les erreurs par Ctrl+Shift+↑ et Ctrl+Shift+↓, entre avertissements et boîtes par Alt+Shift+↑ et Alt+Shift+↓.
- Si
Could not start the commandapparaît, les suspects sont le PATH et l'état de l'installation TeX Live / MiKTeX, pas TeXstudio. Vérifiez le chemin de l'exécutable dans l'onglet Commands. File not foundsignifie l'une de trois choses : le fichier racine, un chemin relatif ou un nom de fichier d'image — et regardez si l'extension est écrite.- Quand un package manque, installez-le avec
tlmgr installsous TeX Live ou via la MiKTeX Console sous MiKTeX. L'éditeur ne peut rien pour celui-là. - Cliquez le numéro de ligne dans le journal, corrigez la première erreur seulement, recompilez, puis poursuivez la lecture. Lire d'abord le bout d'une cascade est du temps perdu.
Pourquoi la complétion connaît vos \label : les fichiers .cwl
TeXstudio n'interprète pas LaTeX. Il lit des fichiers .cwl — des completion word lists. Le format vient à l'origine d'un autre éditeur LaTeX, Kile, et TeXstudio l'a étendu avec de l'information sémantique : cet argument est une étiquette, cet emplacement doit recevoir le curseur. D'où le fait que taper \ref{ propose les étiquettes du document et \cite{ les clés (bibIDs) de la bibliographie. Quand vous faites \usepackage, la cwl correspondante est chargée si elle existe ; sinon TeXstudio en génère une automatiquement à partir du .sty — ce qui donne les noms de commandes mais aucun sens pour les arguments. Pour un package maison, écrire \usepackage{./myPackage} en chemin relatif fait chercher ./myPackage.cwl.
Trois autres économies de frappe méritent d'être apprises. Lorsque les candidats partagent un début commun, Tab complète cette partie commune d'un coup. Commencez un environnement — tapez \begin{itemize} — et le \end{itemize} correspondant est inséré pour vous. Et laisser un instant le curseur sur un nom d'environnement fait apparaître un curseur miroir, qui permet de réécrire simultanément les noms dans \begin et \end — transformer itemize en enumerate en un seul geste. Pour fermer l'environnement ou l'accolade encore ouverts, Alt+Return. L'oubli de fermeture est l'un des accidents LaTeX les plus fréquents : ce raccourci vaut d'être retenu.
La vue de structure et les vérifications orthographique et grammaticale au fil de la frappe
La vue de structure à gauche devient la carte du document. Elle répertorie les titres (\section et sa famille), les étiquettes (\label), les fichiers appelés par \input et \include, les blocs beamer et les TODO — la commande \todo{} comme les commentaires % TODO / %todo sont relevés. Cliquez sur une entrée et vous y êtes. Dans un long manuscrit ou un projet multi-fichiers, c'est cette liste qui empêche de perdre le fil de sa position.
La vérification orthographique tourne pendant la frappe, et un clic droit sur un mot suspect propose des corrections. Les dictionnaires sont au format hunspell — la même mécanique que LibreOffice et Firefox, si bien qu'on peut y emprunter des dictionnaires supplémentaires. Pour fixer la langue à un fichier, écrivez % !TeX spellcheck = de_DE en première ligne : le fichier bascule automatiquement à chaque ouverture. Cela rend service quand on édite un volume multilingue.
La vérification grammaticale, en revanche, n'est pas le jugement propre de TeXstudio. Le moteur de relecture libre LanguageTool tourne en local comme serveur, TeXstudio s'y connecte au démarrage, et chaque paragraphe achevé lui est envoyé avant que les remarques ne reviennent (on indique l'URL du serveur et le chemin du jar sous Options → Configure TeXstudio → Language Checking). Grâce à ce montage, votre prose ne quitte jamais la machine — un réconfort tant que le manuscrit n'est pas publié.
SyncTeX : ctrl-clic, en avant comme en arrière
Il n'y a que deux conditions. Premièrement, passer -synctex=1 à la commande de compilation. SyncTeX est une fonction du moteur TeX et non de l'éditeur ; c'est cet interrupteur qui lui fait écrire le fichier de synchronisation .synctex.gz (la ligne latexmk et le .latexmkrc ci-dessus le portent déjà ; si vous l'oubliez, TeXstudio propose de corriger la commande). Deuxièmement, ouvrir le PDF dans la visionneuse interne. C'est la prise en charge de SyncTeX par cette visionneuse qui rend possibles les sauts dans les deux sens.
Les gestes sont faciles à retenir, car les deux sens sont Ctrl + clic gauche. Dans la source, on atterrit à l'endroit correspondant du PDF (recherche avant) ; dans le PDF, sur la ligne source correspondante (recherche inverse). Le menu contextuel propose la même chose sous « Go To PDF » et « jump to source ». La recherche avant se déclenche aussi automatiquement vers la position du curseur à chaque ouverture de la visionneuse. Activez « scrolling follows cursor » et « cursor follows scrolling » et les deux restent liés en permanence pendant la rédaction : la question de relecture « quelle ligne a produit ce paragraphe ? » disparaît purement et simplement.