Le mystérieux programme LyX. Partie 4

Copié de mon blog afin de créer une autre source d'information en russe sur ce sujet.

Cet article est la continuation des articles suivants en un seul cycle:

article 1
article 2
article 3

LyX: \\. \ Pipe \ lyxpipe


En général, cette fonction est nécessaire pour organiser l'interaction de LyX avec d'autres programmes. En particulier, il s'avère que vous pouvez entrer des commandes via la ligne de commande dans une fenêtre de programme LyX ouverte! Tout d'abord, pour que cela fonctionne, dans Outils> Paramètres> Chemins, dans la zone de texte du canal du serveur LyX , entrez ce qui suit:

\\.\pipe\lyxpipe 

, et ni .in ni .out sont attribués au lyxpipe à la fin. Naturellement, cliquez sur . De plus, la fenêtre du programme LyX, dans laquelle il était nécessaire d'entrer des commandes à partir de la fenêtre d'invite de commandes, doit être lancée plus tôt que cette ligne de commande, à partir de laquelle les commandes seront entrées dans cette fenêtre du programme LyX, sinon rien ne fonctionnera. Voici des exemples d'écriture de commandes sur la ligne de commande pour y parvenir:

 echo LYXCMD:sohranenie:buffer-write> \\.\pipe\lyxpipe.in echo LYXCMD:formula:math-mode:\alpha> \\.\pipe\lyxpipe.in echo LYXCMD:vstgrafiki:inset-apply:graphics filename zdes kujut hip-hop.png> \\.\pipe\lyxpipe.in 

À mon avis, la dernière équipe mérite de l'intérêt. Cette commande insère une photo zdes kujut hip-hop.png )), située dans le dossier spécifié dans Outils> Paramètres ...> Chemins d' accès dans la zone de texte Répertoire utilisateur de la fenêtre du programme LyX ouverte (avant d'ouvrir la ligne de commande).

LyX: recherche avant et arrière


La façon dont cela est configuré est décrite ici . Je vais juste vous dire comment je l'ai fait en russe. Alors. Nous utilisons une version non triable de SumatraPDF. Nous l'avons donc téléchargé, installé. Ensuite, dans «Démarrer> Programmes par défaut> Mappage de types de fichiers ou de protocoles à des programmes individuels», assurez-vous que les fichiers .pdf sont ouverts à l'aide de SumatraPDF. Ensuite, nous allons dans le dossier C:\Users\\AppData\Roaming\SumatraPDF . De là, en suivant les conseils sur le lien fourni, copiez le fichier SumatraPDF-settings.txt à un endroit.

Ensuite, il était nécessaire d'ajouter en quelque sorte le chemin d'accès au dossier contenant le fichier SumatraPDF qui ouvre le programme (j'ai ce dossier C:\Program Files\SumatraPDF ) dans PATH. Pour une raison quelconque, j'ai ajouté cela aux variables d'environnement utilisateur pour IVAN . De plus, le chemin d'accès au dossier contenant le fichier qui lance le programme LyX (pour moi, c'est C:\Program Files\LyX 2.0\bin ) doit également être contenu dans PATH. Ensuite, allez dans le dossier C:\Program Files\SumatraPDF , ouvrez le fichier SumatraPDF.exe . Dans la fenêtre apparue du programme SumatraPDF, cliquez avec le bouton gauche sur les 3 barres horizontales dans le coin supérieur gauche (ou, peut-être, le coin))), puis, Paramètres> Paramètres avancés . Dans le même temps, le même fichier SumatraPDF-settings.txt s'ouvrira dans le bloc-notes, dont nous avons précédemment placé une copie dans un endroit isolé, alors maintenant nous pouvons faire ce que nous voulons avec ce fichier. Et nous ferons ce qui suit avec lui. Voici une liste de quelques variables avec leurs valeurs:

 ReuseInstance = true ReloadModifiedDocuments = true InverseSearchCmdLine = lyxeditor.cmd "%f" %l EnableTeXEnhancements = true UseTabs = true 

Alors voilà. Dans le fichier SumatraPDF-settings.txt , nous vérifions la présence de ces variables (mots à gauche du signe égal), si elles sont là, nous vérifions la coïncidence de la valeur (mots à droite du signe égal) des variables trouvées dans ce fichier de la liste ci-dessus avec les valeurs de telles mêmes variables de cette liste. Si dans la liste ci-dessus la valeur d'une variable était différente de la valeur de la variable correspondante dans le fichier, il serait nécessaire de refaire la valeur de cette variable de la même manière que dans la liste ci-dessus. Si une variable de la liste avec sa valeur n'était pas dans le fichier, nous aurions juste besoin de copier la variable avec sa valeur dans le fichier. Eh bien, personnellement, je n'ai rien changé dans ce fichier: toutes les variables répertoriées dans la liste existaient déjà dans le fichier et toutes ces variables dans le fichier ont reçu les valeurs correspondantes répertoriées dans la liste directement lors de l'installation de SumatraPDF. Fermez, enregistrez les modifications. Ça y est, SumatraPDF sera ensuite configuré. Nous procédons à la configuration de LyX. Donc, ouvrez le programme LyX s'il n'a pas été ouvert jusqu'à présent ou pour une raison quelconque a été fermé. Accédez à Outils> Paramètres ...> Chemins . Dans le champ de texte du canal du serveur LyX, entrez

 \\.\pipe\lyxpipe 

Ensuite, allez dans Outils> Paramètres ...> Traitement de fichiers> Convertisseurs . Là, dans la zone sous la phrase Définitions des convertisseurs, sélectionnez LaTeX (pdflatex) -> PDF (pdflatex) avec le bouton gauche de la souris. Ensuite, nous supprimons son contenu du champ de texte du convertisseur et insérons (enfin, ou entrez à la main) ce qui suit:

 pdflatex -interaction=nonstopmode -synctex=1 $$i 

Et de la zone de texte en plus, supprimez son contenu. Cliquez sur le bouton Changer . Enregistrez ensuite. Revenez à Outils> Paramètres ...> Traitement de fichiers> Convertisseurs . Vérifiez si les paramètres sont enregistrés. Pour moi, lorsque j'y vais en ce moment, lors d'une recherche dans les deux sens, j'entre, après avoir cliqué avec le bouton gauche sur LaTeX (pdflatex) -> PDF (pdflatex) , alors l'emplacement des paramètres ressemble à ceci:



Ensuite, accédez à Outils> Paramètres ..> Sortie> Général . Là, dans la zone de texte Commande PDF , entrez la commande suivante:

 SumatraPDF -forward-search "$$t" $$n "$$o" 

, cliquez sur Appliquer . Ainsi, cet endroit ressemblera à ceci:



Accédez à Outils> Paramètres ..> Gestion des fichiers> Formats de fichiers . Là, nous allons définir la liste déroulante Format en sélectionnant la valeur PDF (pdflatex) avec le bouton gauche de la souris, la valeur définie par l' utilisateur dans la liste déroulante Visionneuse , et entrez dans la zone de texte à droite de cette liste

 SumatraPDF 

Il existe actuellement:



Et enfin, dans le C:\Program Files\LyX 2.0\bin créez un fichier avec le nom lyxeditor et l'extension .cmd (en fait, il s'agit du même fichier batch) avec le contenu suivant:

  @echo off SETLOCAL enabledelayedexpansion set file=%1 set row=%2 REM remove quotes from variables set file=!file:"=! set row=!row:"=! %comspec% /q /c (@echo LYXCMD:revdvi:server-goto-file-row:%file% %row%)> \\.\pipe\lyxpipe.in&&type \\.\pipe\lyxpipe.out endlocal 

J'ai pris le code de ce fichier batch d'ici lorsque j'ai cliqué sur le lien de la page en anglais, dont je raconte le contenu ici (le lien vers cette page a été donné par moi ici, uniquement ci-dessus). Honnêtement, à propos de la création d'un fichier batch sur une page en anglais, cela a été dit beaucoup plus tôt que cela n'a été fait pour moi, mais quelle est la différence? Soit dit en passant, le code de ce fichier de commandes m'a incité à réfléchir à la manière de saisir des commandes sur la ligne de commande afin qu'elles soient saisies à partir de cette ligne dans la fenêtre ouverte du programme LyX, qui a servi de base à la rédaction du paragraphe LyX: \\. \ Pipe \ lyxpipe de cet article. Avant cela, j'ai essayé d'insérer des commandes de la ligne de commande dans la fenêtre du programme LyX, en prenant ces commandes du manuel, par exemple, j'ai essayé d'exécuter la commande suivante à partir de la ligne de commande:

 echo "LYXCMD:test:get-xy:" >~/.lyxpipe.in 

mais rien n'a fonctionné pour moi. Eh bien, et maintenant, revenons à la recherche liée à LyX. Comment l'utiliser? Mais très simple. Maintenant, si nous avons fait un aperçu du fichier .lyx ouvert, puis lorsque vous cliquez sur Navigation> Recherche avancée pendant une courte période dans la fenêtre SumatraPDF correspondante, plusieurs lignes contenant le même mot sont mises en évidence en violet (au moins pour moi), à côté du mot correspondant dans la fenêtre LyX dans curseur clignotant actuellement. Lorsque vous double-cliquez dans la fenêtre SumatraPDF, le focus est transféré dans la fenêtre LyX et le curseur commence à clignoter à cet endroit, tandis que lorsque vous cliquez à différents endroits de la fenêtre SumatraPDF, le curseur commence à clignoter à différents endroits de la fenêtre LyX. Je ne peux rien dire de plus précis sur la relation entre la position du curseur dans LyX et les lignes mises en surbrillance dans SumatraPDF, ainsi que la relation entre la position du double-clic dans SumatraPDF et la place dans la fenêtre LyX où le curseur commence à clignoter. Donc, la tâche est assez compliquée, alors laissez-moi vous donner une traduction de cette page, dont je raconte le contenu ici, faite par le navigateur Google: soudain, j'ai raté quelque chose. Alors.



De MyNotes
Mis à jour pour la dernière version 2.3.32019
Les utilisateurs de MiKTeX sont invités à mettre à niveau vers la dernière version avant d'installer LyX 2.3.3+ pour Windows. Si vous avez une installation permanente de SumatraPDF , il vous suffit d’installer -inverse-search ONCE , tout comme l’utilisation d’onglets, nous n’avons pas à perdre de temps à décider à quelle session s’adresser. Notez que SumatraPDF peut avoir plusieurs fenêtres et sessions, mais cela dépasse le cadre de cette réponse. InverseSearchCmdLine = stocké en permanence dans SumatraPDF-settings.txt. Il ne doit pas être personnalisé par l'éditeur, sauf si vous devez réinstaller ou remplacer SumatraPDF-settings.txt (faites une sauvegarde!)

Paramètres dans SumatraPDF


La différence notable est que nous revenons au fichier cmd Okdale plus stable ( Okular utilise exactement le même système d'appel que SumatraPDF ), ce qui évite les appels inutiles. SumatraPDF doit être installé de telle sorte qu'il fonctionne à partir de n'importe quel appel système, comme SumatraPDF , ce qui signifie qu'il doit être "en route" (si la version portable est utilisée, SumatraPDF.exe doit être temporairement ajouté au chemin de l'utilisateur jusqu'au premier appel Lyx) Lancez SumatraPDF et accédez à Paramètres> Options avancées . Cela ouvrira le fichier SumatraPDF-settings.txt dans le bloc - notes , maintenant après avoir vérifié les entrées, vérifiez ou modifiez les éléments suivants.

 ReuseInstance = true ReloadModifiedDocuments = true InverseSearchCmdLine = lyxeditor.cmd "%f" %l EnableTeXEnhancements = true UseTabs = true 

N'oubliez pas que %l est une lettre minuscule L et assurez-vous d'appuyer sur CTRL + S (Enregistrer le fichier). Si vous devez ajouter c: ... LyX \ bin \ à cette InverseSearchCmdLine , vous avez mal installé LyX. Le fichier .cmd se trouve dans le dossier bin, qui DOIT être dans le chemin système.

Paramètres dans LyX


Suivez les instructions de SyncTex sur wiki.lyx.org/LyX/SyncTex .

"(Remarque: la recherche inversée de fichiers .lyx avec des espaces ou d'autres caractères spéciaux dans le nom de fichier ne fonctionne pas toujours avec cette approche sur certains systèmes Windows)"

Mes notes en raison de cette méthode unique d'appeler le canal [1] utilisé par LyX sur Windows, il est parfois nécessaire que le fichier de travail et son chemin NE DOIVENT PAS AVOIR D'ESPACE, donc si cela ne fonctionne pas, vous devrez soulever des problèmes avec le support LyX . S'ils fournissent un moyen plus simple d'appeler une session LyXserver active avec le chemin d'accès distant entre guillemets, laissez un commentaire ci-dessous. Le problème est que LyXserver attend deux valeurs consécutives:

1) SyncTeX a fourni le nom de fichier .tex 2) suivi d'un numéro de ligne, donc lorsque le nom de fichier contient des espaces, la première partie peut être invalide en tant que nom de fichier et la deuxième partie n'est clairement pas un nombre, cela peut fonctionner si les noms de fichier sont analysés comme l'ancien format 8.3, mais la plupart des fichiers Windows modernes utilisent le format LFN. Le fichier lyxeditor.cmd essaie de contourner ces problèmes. Différences notables par rapport à toute autre approche N'ajoutez pas d' options / directives inutiles et obsolètes -reuse-instance ou -inverse-search (elles ne sont pas nécessaires et ralentissent la demande correcte -forward-search .)

Outils → Paramètres → Chemin

  • Ajoutez le répertoire où se trouve SumatraPDF.exe à la ligne de préfixe PATH. (Ce n'est pas nécessaire pour une installation permanente, mais peut aider pour une utilisation portable).
  • Définissez la ligne LyXServer pipe \\. \ Pipe \ lyxpipe (N'utilisez PAS le bouton Parcourir).

Outils → Paramètres → Traitement de fichiers → Convertisseurs

  • Choisissez le format LaTeX (pdflatex) -> PDF (pdflatex)
  • Définissez le convertisseur d'entrée sur pdflatex -interaction = nonstopmode -synctex = 1 $$ i



  • Cliquez sur «Modifier» (sinon, la modification sera annulée).
  • Cette modification nécessite MikTeX ou TeX Live pour créer le fichier FILE.synctex.gz.

Sortez et revenez pour vérifier qu'il a bien été modifié, il m'a fallu quelques modifications pour le réinitialiser et l'épingler d'une session à l'autre.

Outils → Paramètres → Sortie → Général.
Dans la section Recherche directe, définissez la commande d'entrée PDF sur SumatraPDF -forward-search "$$ t" $$ n "$$ o"

Outils → Paramètres → Traitement de fichiers → Formats de fichiers

  • Choisissez le format PDF (pdflatex)
  • Définissez le champ Affichage sur Personnalisé à l'aide de la commande SumatraPDF
  • Vous devrez peut-être fermer toutes les fenêtres SumatraPDF et utiliser Document → Afficher.
  • Vous pouvez définir la commande de recherche inversée directement dans SumatraPDF en allant dans «Paramètres → Options avancées» comme décrit ci-dessus et définir la recherche inversée. Dans ce cas, vous réduisez la commande Afficher à

 SumatraPDF 



TOUT problème avec cet appel de recherche inverse devrait venir avec le support Lyx, car c'est leur méthode recommandée, pas la mienne!

[1] En principe, l'utilisation de canaux nommés en mémoire accélère et réduit la nécessité d'appeler une application via des options de shell, cependant, comme les méthodes DDE ou D-bus, elle n'est pas familière à la plupart des utilisateurs et peut être problématique pour résoudre les problèmes.

Remarque Assurez-vous que lyx a le fichier ouvert, le bouton Enable Forward / Reverse est activé puis compilez et affichez enfin un clic droit et sélectionnez environ 6 options vers le bas

Les lieux ne sont pas 1 sur 1 (les pages peuvent sembler «éteintes»). Cela peut aider à voir une recherche directe en définissant SumatraPDF-settings.txt

HighlightPermanent = true

Pour revenir à la page correspondante, double-cliquez simplement n'importe où dans SumatraPDF pour appeler lyxeditor.cmd.


Comme vous pouvez le voir, il y a encore quelques nuances qui ne sont pas mentionnées par moi. Cependant, quand j'ai tout mis en place, je n'avais tout simplement pas besoin de ces nuances.

LyX; utilisation des fichiers .bat


Malgré le manque à première vue apparemment de la capacité d'ajouter de nouveaux formats d'exportation à LyX (pour autant que je sache, par exemple, dans TeXworks, un analogue d'une telle possibilité d'ajout est la possibilité de créer un nouvel outil de mise en page), ce programme a une telle opportunité. Pour commencer, essayons de créer le format d'exportation suivant, qui à première vue semble indulgent. Les variables PATH suivantes sont définies dans le programme LyX:

 $$s The LyX system directory (eg /usr/share/lyx). $$i The input file $$o The output file $$b The base name (without filename extension) in the LyX temporary directory $$p The full directory path of the LyX temporary directory $$r The full pathname to the original LyX file being processed $$f The filename (without any directory path) of the LyX file. $$l The `LaTeX name' 

il s'agit d'un extrait d'une partie du manuel du programme LyX. Nous n'allons pas traduire les explications des significations, les significations de ces variables, mais plutôt essayer de créer un nouveau format d'exportation (avec l'apparition d'un nouveau bouton dans Fichier> Exporter vers , y compris en cliquant sur lequel nous pouvons exporter ce fichier .lyx vers ce format , à partir de la fenêtre dont ce clic a été effectué), lors de l'exportation vers laquelle dans le répertoire temporaire (dans lequel, par exemple, lors de l'exportation au format PDF {pdflatex} , des fichiers sont générés, en plus du .pdf créé), le fichier puti.txt sera créé dans lequel ( tous) les valeurs de ces variables . Pour ce faire, dans le dossier qui a été ajouté à PATH, créez un fichier puti.bat avec le contenu suivant:

 chcp 1251 cd /d %0\.. echo %1 >puti.txt echo %2 >>puti.txt echo %3 >>puti.txt echo %4 >>puti.txt echo %5 >>puti.txt echo %6 >>puti.txt echo %7 >>puti.txt echo %8 >>puti.txt echo %1/%~2 >>puti.txt 

Ensuite, dans le fichier C:\Users\\AppData\Roaming\LyX2.0\lyxrc.defaults nous sommes là où les lignes

 .................................... \Format pdf4 pdf "PDF (XeTeX)" X "pdfview" "" "document,vector,menu=export" \Format pdf5 pdf "PDF (LuaTeX)" u "pdfview" "" "document,vector,menu=export" 

ajouter une telle ligne

 \Format pdf6 txt "puti" F "pdfview" "" "document,vector,menu=export" 

Ici, le mot puti ne spécifie pas le fichier avec le code, qui est le moteur du format d'exportation créé, mais sous quel nom le bouton pour appeler ce format d'exportation vers Fichier> Exporter vers sera affiché, et où

 .................................... \converter pdflatex pdf2 "pdflatex $$i" "latex=pdflatex" \converter xetex pdf4 "xelatex $$i" "latex=xelatex" \converter luatex pdf5 "lualatex" "latex=lualatex" 

après la ligne définissant le format pdf5, nous ajoutons la ligne suivante:

 \converter pdflatex pdf6 "puti.bat $$b $$f $$i $$l $$o $$p $$r $$s" "" 

Et ici, le mot puti définit un fichier avec du code, qui est le moteur du format d'exportation créé. Et à cet endroit du fichier lyxrc.defaults , vous devez déjà spécifier l'extension de ce fichier avec le code (dans ce cas .bat ), sinon ça ne marchera pas! .. Et puis, comme vous pouvez le deviner, les paramètres sont indiqués, d'une part, avec lesquels ce fichier avec le code est lancé lors du démarrage de l'exportation vers le format créé, et, d'autre part, ces paramètres sont appelés sous la forme connue du programme LyX, et donc lorsque vous appelez ce fichier avec le code du fichier ouvert dans LyX, LyX avant l'ouverture fichier avec le code du programme correspondant avec les paramètres, certains et à partir de laquelle ils sont formés à partir de parties du chemin d'accès complet au fichier exporté, et d'autres à partir de chemins d'accès complets à certains dossiers importants du système, il remplace ces paramètres, nommés sous cette forme par des valeurs presque réelles, pour ainsi dire, qui sont presque adaptées à une utilisation dans la commande ligne. Pourquoi "presque" deviendra clair plus tard. C'est tout, vous n'avez rien d'autre à faire dans le fichier lyxrc.defaults : ni ajouter, ni là, de nouveaux \ editor_alternatives ou \ viewer_alternatives , ou quoi que ce soit d'autre ... Ensuite, après avoir enregistré le fichier lyxrc.defaults modifié de cette manière et redémarré Programmes LyX dans Fichier> Exporter vers , un nouveau bouton apparaît:



Avant de cliquer dessus, cliquez sur Afficher> Afficher les messages (lorsque j'utilisais LyX installé à partir d'un fichier exécutable téléchargé à partir d'une autre source, ce bouton s'appelait Afficher les messages , car cette copie du programme utilisait un fichier de localisation différent .mo ), tandis que généralement au bas de la fenêtre du programme LyX apparaît une zone appelée Progress / Debug Messages . Vous pouvez maintenant cliquer sur le bouton que nous avons créé. Dans le même temps, dans la zone Messages de progression / débogage , les informations sur le processus d'exportation commencent à clignoter, défilant vers le bas. Après la fin d'un tel scintillement, nous recherchons le chemin d'accès au dossier temporaire dans lequel sont placés les fichiers qui apparaissent en cours de route, en plus du fichier du type que vous souhaitez recevoir dans le même dossier avec le fichier .lyx exporté. Tous ces chemins sont plus ou moins similaires les uns aux autres, il ne peut donc y avoir d'erreur. Par exemple, voici l'une de ces façons:

 D:\1-kat-LyX\lyx_tmpdir.gq2748\lyx_tmpbuf2 

Accédez à ce dossier. Il y aura, entre autres, le fichier puti.txt , que nous avons défini comme sortie pour ce format d'exportation. En l'ouvrant, nous verrons quelque chose comme ceci:

 D:/1-kat-LyX/lyx_tmpdir.gq2748/lyx_tmpbuf2/newfile2 newfile2.lyx newfile2.tex $$l newfile2.txt D:/1-kat-LyX/lyx_tmpdir.gq2748/lyx_tmpbuf2/ C:/DocLyX/ $$s D:/1-kat-LyX/lyx_tmpdir.gq2748/lyx_tmpbuf2/newfile2/newfile2.lyx 

Un fichier d'un tel contenu a été formé lors de l'exportation vers le format d'exportation de fichier que j'ai créé C:\DocLyX\newfile2.lyx . Comme vous pouvez le voir, même tous les paramètres n'ont pas été développés dans leurs valeurs, ce qui, cependant, n'interfère pas avec la création de certains autres formats d'exportation que j'ai conçus. Cependant, un tel problème est découvert ici, consistant en une compatibilité "presque" avec la ligne de commande, que j'ai mentionnée ci-dessus. A savoir: le séparateur dans les chemins ainsi obtenus dans le fichier de sortie .txt est le signe / au lieu du traditionnel, au moins pour Windows, \ , donc afin de pouvoir utiliser le chemin obtenu de cette manière, vous avez très probablement besoin de déposer avec le code qui est censé être utilisé comme moteur pour le format d'exportation créé, incluez la section pour remplacer / par \ . Nous garderons cela à l'esprit à l'avenir. En comparant l'ordre dans lequel les paramètres sont répertoriés dans le fichier lyxrc.defaults avec lequel je le force à démarrer (et il peut être lancé))) le fichier puti.bat, le fichier puti.bat lui-même avec le contenu du fichier puti.txt , je conclus que pour créer d'autres , , , , , LyX.Il s'agit de $$ i - une variable qui, après substitution, affiche dans le fichier puti.txt le nom du fichier .tex que j'ai besoin d'obtenir du fichier .lyx en cours d' édition , de sorte qu'immédiatement après cette réception, il y a quelque chose que le traitement le fichier de l'arsenal du programme MiKTeX installé et configuré, que j'ai décrit pour le format d'exportation que je crée - en totale conformité avec le processus d'exportation vers les formats initialement disponibles auprès des auteurs du programme. En tant que tel fichier de traitement, vous pouvez utiliser le fichier que j'ai créé avec le code d'une extension. Et $$ r est le chemin d'accès au dossier avec ce fichier .lyx légèrement modifié dans sa spécificité du programme LyX, en exportant vers mon format, au début de cette exportation j'obtiendrai le fichier .tex dont je viens de parler. Comme vous pouvez le voir sur la photo du menu Export que j'ai modifié , je ne me suis pas limité à créer un nouveau format d'exportation puti sur mon ordinateur . Arrêtons-nous plus en détail sur ces formats d'exportation que j'ai créés. Habituellement, lors de l'exportation vers un format «natif» du programme LyX, tous les fichiers avec celui-ci sont placés par le programme LyX dans le répertoire temporaire correspondant. Essayons de créer un format d'exportation dans lequel ces fichiers seront placés dans le même dossier que le fichier .lyx exporté . Eh bien, les actions avec le fichier lyxrc.defaultssera essentiellement identique aux actions avec ce fichier lors de la création du format d' exportation puti . J'ajoute également les lignes aux endroits appropriés dans ce fichier:

 \Format pdf7 pdf "pdflatex v papke" F "pdfview" "" "document,vector,menu=export" 

et

 \converter pdflatex pdf7 "pdflatex-v-papke.bat $$r $$i" "" 

, tout est clair ici. La vraie différence entre le format d'exportation puti que j'ai créé précédemment et le format d'exportation en cours de création est due à la différence entre les moteurs (dans ce cas, entre les fichiers .bat), que j'ai mis sur le format d'exportation et que j'ai mis sur ce format. À savoir, en tant que moteur de ce format, j'utilise le fichier pdflatex-v-papke.bat avec le contenu suivant:

 cd /d %0\.. chcp 1251 echo LYXCMD:sohranenie:buffer-write> \\.\pipe\lyxpipe.in if exist perehod.bat (goto :vyhod3) else (goto :vhod) :vhod echo %1 > put0.txt echo cd /d %%0\..>> pereim.bat echo SetLocal EnableExtensions EnableDelayedExpansion>> pereim.bat echo Set infile=put0.txt>> pereim.bat echo Set outFile=put.txt>> pereim.bat echo Set find=/>>pereim.bat echo Set replace=\>>pereim.bat echo for /F "UseBackQ delims=" %%%%n in ("%%infile%%") do (>> pereim.bat echo set "LINE=%%%%n">> pereim.bat echo set "LINE=!LINE:%%find%%=%%replace%%!">> pereim.bat echo echo.!LINE!^>^>%%outFile%%>> pereim.bat echo )>> pereim.bat echo exit>> pereim.bat start /b pereim.bat :vhod1 if exist put.txt (goto :vyhod1) else (goto :vhod1) :vyhod1 echo chcp 1251 > perehod.bat echo cd /D^^>>perehod.bat more < put.txt >> perehod.bat echo del %~n2.tex>> perehod.bat echo :vhod2 >> perehod.bat echo lyx -e latex %~n2.lyx>> perehod.bat echo if exist %~n2.tex (goto :vyhod2) else (goto :vhod2) >> perehod.bat echo :vyhod2 >> perehod.bat echo pdflatex %2 >> perehod.bat echo taskkill /f /im pdflatex.exe >> perehod.bat echo exit >> perehod.bat echo :vhod3 if exist perehod.bat (goto :vyhod3) else (goto :vhod3) :vyhod3 start perehod.bat pdflatex %1 rem            exit.bat exit 

Comment fonctionne ce fichier batch? Tout d'abord, en regardant les paramètres avec lesquels j'ai fait de ce fichier batch le programme appelant LyX, en l'écrivant dans le fichier lyxrc.defaults , nous voyons que cela se produit avec les paramètres "chemin du dossier contenant le fichier exporté sous forme spécifique à LyX" et " le nom du fichier exporté, mais avec l'extension .tex ", et l'ordre des paramètres est important. Ainsi, ce fichier de commandes effectue d'abord une transition vers un dossier temporaire dans lequel les fichiers d'accompagnement sont formés lors de l'exportation vers un «format natif». Ensuite, en raison de la possibilité des lettres cyrilliques dans les paramètres de démarrage du fichier de commandes pdflatex-v-papke.bat , nous modifions l'encodage sur Windows 1251 dans la fenêtre d'invite de commandes dans laquelle ce fichier de commandes sera exécuté. Puis, profitant de la capacité du programme LyX à répondre aux commandes de la ligne de commande, dont (possibilité) dont j'ai parlé ici, nous, étant donné la possibilité de changements dans le fichier exporté, avant les actions principales avec ce fichier, enregistrons d'abord le fichier exporté avec la .lyxcommande

 echo LYXCMD:sohranenie:buffer-write> \\.\pipe\lyxpipe.in 

afin que vous ne le fassiez pas manuellement à chaque fois. L'équipe

 if exist perehod.bat (goto :vyhod3) else (goto :vhod) 

avec les étiquettes utilisées :vyhod3et :vhoddebout avant et après cette commande, il ne crée rien par lui-même, mais il le fait. Les fichiers suivants qui apparaissent dans le dossier temporaire correspondant à la suite du fichier de commandes pdflatex-v-papke.bat sont (dans l'ordre d'apparition) les fichiers put0.txt , pereim.bat , put.txt , perehod.bat , à créer avec chaque aperçu, exportation, en tout cas, avec d'éventuelles modifications du fichier .lyxqui est actuellement ouvert , ce n'est pas nécessaire, c'est seulement nécessaire pour la première fois. Dans ce cas, pour la première fois, le dernier fichier perehod.bat sera créé dans le répertoire temporaire, 3 autres de ces fichiers dans le dossier temporaire n'existeront pas si ce fichier n'existe pas dans ce dossier. Par conséquent, dans la condition, ifnous écrivons l'existence de ce fichier. Si, lorsque le fichier de commandes pdflatex -v-papke.bat commence à fonctionner, ce fichier n'existe pas dans le dossier temporaire correspondant, le fichier de commandes pdflatex-v-papke.bat longe la branche en créant 4 fichiers dans le dossier temporaire correspondant - put0.txt , pereim.bat , put.txt , perehod.batet passe à ses équipes suivantes. Si ces 4 fichiers dans le répertoire temporaire existent déjà, il y a une transition directe vers les commandes suivantes, dont j'ai parlé dans la phrase précédente. Arrêtons-nous sur ces quatre dossiers. Étant donné que le premier paramètre avec lequel le programme LyX lance le fichier pdflatex-v-papke.bat est «le chemin d'accès au dossier contenant le fichier exporté sous une forme spécifique à LyX», ce chemin sera affiché dans le fichier put0.txt , présenté dans ce formulaire. Cependant, le chemin sous cette forme ne convient pas pour une utilisation sur la ligne de commande (là, le séparateur, pour ainsi dire, des différents niveaux d'imbrication des dossiers est le caractère /au lieu du caractère attendu par la ligne de commande \). Pour cette raison, l'étape suivante du fonctionnement du fichier pdflatex-v-papke.bat pereim.bat , , put0.txt , / \ put1.txt . pdflatex-v-papke.bat pereim.bat . , , , /b . ( , ) pereim.bat . - , put1.txt , pdflatex-v-papke.bat passe aux étapes suivantes, dans lesquelles le fichier put1.txt est déjà supposé exister dans le répertoire temporaire correspondant . Pour cette raison, une erreur peut se produire lors du fonctionnement du fichier principal pdflatex-v-papke.bat . Pour éviter cela, l' étape suivante après le démarrage du fichier de commandes pereim.bat consiste à boucler le fichier de commandes principal avec une telle section de son code:

 :vhod1 if exist put.txt (goto :vyhod1) else (goto :vhod1) :vyhod1 

Cette section du code vérifie la présence du fichier put.txt dans le répertoire temporaire correspondant au fichier exporté. Si ce fichier n'est pas dans ce dossier, le fichier de commandes retourne à l'étiquette :vhod1et vérifie à nouveau le fichier put.txt dans le répertoire temporaire correspondant au fichier exporté et ainsi de suite jusqu'à ce que ce fichier apparaisse dans ce dossier. Dès que l'analyse trouve ce fichier, elle quitte la boucle et exécute les commandes suivantes du fichier de commandes pdflatex-v-papke.bat . Et les étapes suivantes du travail de ce fichier de commandes consistent à créer un fichier de commandes perehod.bat dans le répertoire temporaire approprié , en attendant l'apparition de ce fichier de commandes (la section de code est responsable de cela

 :vhod3 if exist perehod.bat (goto :vyhod3) else (goto :vhod3) :vyhod3 

fichier batch pdflatex-v-papke.bat ) et lancement du fichier batch perehod.bat . Je crée le fichier batch perehod.bat dans un fichier séparé car au cours de son travail, il doit suivre le chemin contenu dans le fichier put.txt créé précédemment et ce chemin doit encore être extrait de ce fichier, ce qui est fait par la commande

 more < put.txt 

En général, par exemple, le contenu du fichier perehod.bat est le suivant (avec le fichier exporté C:\DocLyX\newfile2.lyx):

 chcp 1251 cd /D^ C:\DocLyX\ del newfile2.tex :vhod2 lyx -e latex newfile2.lyx if exist newfile2.tex (goto :vyhod2) else (goto :vhod2) :vyhod2 pdflatex newfile2.tex taskkill /f /im pdflatex.exe exit 

Que fait ce fichier batch? Dans un premier temps, en raison de la possibilité d'avoir les lettres cyrilliques dans le chemin d'accès complet au fichier exporté, le codage de la fenêtre de commande, dans laquelle le fichier batch perehod.bat commence à s'exécuter , passe à Windows 1251 . Ensuite, les 2 lignes suivantes sont exécutées, qui sont en fait une commande. La concaténation de ces lignes en une seule commande est effectuée par le signe ^à la fin de la première ligne. La signification de cette commande composite est que le travail du fichier de commandes perehod.bat est transféré dans le dossier contenant le fichier exporté .lyx. La clé a été /Dajoutée car j'ai LyX dans Outils> Paramètres ...> Chemins d'accès dans la zone de texte Répertoire temporaireil est défini de sorte que lorsque vous ouvrez LyX, ce répertoire temporaire est créé sur un disque autre que celui dans lequel une ligne de commande est généralement lancée dans un certain dossier. Ensuite, le fichier du même nom avec le fichier exporté est supprimé .lyx, mais avec l'extension .tex, qui, peut-être, a été obtenue dans le même dossier avec le fichier exporté .lyxlors de l'exportation du fichier exporté .lyxproduit précédemment. De plus, en théorie, le fichier .lyxque nous traitons actuellement devrait être exporté dans un format .texsuivi d'une boucle du fichier batch pdflatex-v-papke.bat jusqu'à ce qu'un fichier du même nom avec le fichier exporté apparaisse dans le répertoire temporaire correspondant .lyx, mais avec l'extension.tex. Cependant, dans cet ordre de commandes, le fichier batch pdflatex-v-papke.bat est parfois mis en boucle (sans fin) , car le fichier portant le même nom avec le fichier exporté .lyx, mais avec l'extension, .texn'apparaissait pas. Par conséquent, .texil est préférable de placer la commande d'exportation après l'étiquette à laquelle le fichier de commandes renvoie s'il n'y a pas de .lyxfichier du même nom avec ce fichier dans le dossier avec le fichier exporté .lyx, mais avec l'extension .tex. Eh bien, alors tout est simple. Le fichier pdflatex est traité avec le fichier du même nom avec le fichier exporté .lyx, mais avec l'extension .tex, puis la commande est donnée pour tuer les processus pdflatex qui peuvent être restés fermés après ce traitement (cela se produit) et fermer le fichier de commandesperehod.bat . Retour au fichier pdflatex-v-papke.bat . Avec ce fichier batch, après avoir démarré le fichier batch perehod.bat , une commande est exécutée, dont la signification est indiquée dans le commentaire de cette commande. Et voici le lancement d'un fichier batch complètement inutile exit.bat (situé dans un dossier ajouté au PATH) avec un contenu encore plus étrange

 date /t exit 

Pourquoi ce fichier batch? Le fait est que lorsque je faisais encore des essais avec le fichier batch puti.bat , entre autres comme ça, je n'ai pas essayé le moteur de l'un de mes formats de fichier puti1.bat , donc quand je suis dans ce fichier et dans d'autres fichiers utilisés pour objectifs, n’indiquait pas le lancement de ce fichier de commandes, lorsque j’exportais vers LyX dans le format approprié que j’ai créé, l’erreur suivante a obstinément exploré:



et je n’étais pas en mesure de m'en débarrasser. Ensuite, purement par accident, j'ai puti1.bat dans mon fichier batchl'avant-dernière équipe était celle qui lançait un fichier de commandes. Cette erreur a cessé d'apparaître. Pour autant que je me souvienne, ce fichier batch aléatoire a généré des fichiers avec son travail. Je n'en avais pas besoin. J'ai alors décidé d'essayer de mettre une commande qui ne produit aucun fichier dans ce fichier batch. J'ai essayé la date. Il s'est avéré: l'erreur montrée sur la photo a cessé de flotter. Et je l'ai laissé. Bien que, au moins, tuez-moi, je ne comprends pas pourquoi cela aide, mais il serait intéressant de savoir pourquoi cela fonctionne. Eh bien, vient ensuite la sortie du fichier de commandes pdflatex-v-papke.bat . C’est tout. Et ainsi de suite.TeXworks dispose de l'outil de mise en page suivant:



Créez un format d'exportation dans LyX, qui exporte d'abord le fichier exporté .lyxvers .tex, puis xelatex.exe avec l'option .texest défini par rapport au fichier résultant . En même temps, tous les fichiers créés accidentellement lors de l'exportation d'un fichier vers ce format seront placés dans le même dossier que le fichier exporté. Actions complètement similaires à celles décrites ci-dessus. Nous faisons apparaître ce format dans Fichier> Exporter vers ... sous le nom xelatex v papke , placez le moteur xelatex-v-papke.bat sur ce format d'exportation comme suit:-undump=xelatex.lyx

 cd /d %0\.. chcp 1251 echo LYXCMD:sohranenie:buffer-write> \\.\pipe\lyxpipe.in if exist perehod.bat (goto :vyhod3) else (goto :vhod) :vhod echo %1 > put0.txt echo cd /d %%0\..>> pereim.bat echo SetLocal EnableExtensions EnableDelayedExpansion>> pereim.bat echo Set infile=put0.txt>> pereim.bat echo Set outFile=put.txt>> pereim.bat echo Set find=/>>pereim.bat echo Set replace=\>>pereim.bat echo for /F "UseBackQ delims=" %%%%n in ("%%infile%%") do (>> pereim.bat echo set "LINE=%%%%n">> pereim.bat echo set "LINE=!LINE:%%find%%=%%replace%%!">> pereim.bat echo echo.!LINE!^>^>%%outFile%%>> pereim.bat echo )>> pereim.bat echo exit>> pereim.bat start /b pereim.bat :vhod1 if exist put.tex (goto :vyhod1) else (goto :vhod1) :vyhod1 echo chcp 1251 > perehod.bat echo cd /D^^>>perehod.bat more < put.txt >> perehod.bat echo del %~n2.tex>> perehod.bat echo :vhod2 >> perehod.bat echo lyx -e latex %~n2.lyx>> perehod.bat echo if exist %~n2.tex (goto :vyhod2) else (goto :vhod2) >> perehod.bat echo :vyhod2 >> perehod.bat echo miktex-xetex.exe -undump=xelatex %2 >> perehod.bat echo taskkill /f /im pdflatex.exe >> perehod.bat echo exit >> perehod.bat :vhod3 if exist perehod.bat (goto :vyhod3) else (goto :vhod3) :vyhod3 start perehod.bat pdflatex %1 rem            exit.bat exit 

, , pdflatex-v-papke.bat . - miktex-xetex.exe -undump=xelatex %2 , .tex , . lyxrc.defaults , xelatex-v-papke.bat $$r $$i , lyxrc.defaults . , , .lyx , , .tex utf8 \usepackage[utf8]{inputenc}ou la dernière commande est totalement absente. Ce dernier (au fait, une chose très utile: de cette façon, dans la partie inaccessible du préambule, vous pouvez le supprimer inputencet via Document> Préférences> Préambule LaTeX l' écrire selon vos besoins) en définissant Document> Paramètres> Langue pour basculer la valeur d' encodage de la liste déroulante Autre (nom de cette la liste dépend du fichier de localisation utilisé .mo) dans (XeTeX) (utf8). Comme dernier exemple, envisagez de créer un format d'exportation, lors de l'exportation vers celui-ci, en fonction de la présence / absence de code graphique Asymptote dans le fichier exporté, une ou une autre séquence de commandes est exécutée (pdflatex + asymptote + pdflatex ou simplement pdflatex). Dans le même temps, qu'il y ait ou non du code graphique Asymptote dans ce fichier, tous les fichiers se produisent accidentellement pendant le fonctionnementTEX.lyx.lyx.pdf.lyx(Ctrl + L), dans ce bloc de code, nous insérons un mot abracadabra qui ne se trouvera nulle part ailleurs dans ce fichier .lyx - nous accepterons d'utiliser un mot russe pour cela, écrit pour plus de confusion dans l'ordre inverse . Que ce mot abracadabra soit des ovols. Nous écrivons ce mot abracadabra dans le bloc de code TeX inséré, puis dans ce bloc TeX nous insérons une ligne vide, une nouvelle ligne et dans cette nouvelle ligne nous tapons à nouveau le mot ovols . Nous mettons une ligne vide entre ces ovols \begin{asy}, 2 nouvelles lignes et dans la deuxième nouvelle ligne nous entrons \end{asy}. Si vous le souhaitez, la séquence de toutes ces actions peut être automatisée à l'aide d'un fichier.jscontenu pertinent. J'écrirai peut-être à ce sujet plus en détail. Et enfin, entre ces balises asy, nous écrivons le code du motif souhaité. Pour ressembler à ceci, par exemple, cela pourrait ressembler à ceci:



le mot abracadabra est nécessaire parce que lorsque je n'ai pas utilisé cette technique, lors de la visualisation du fichier créé lors de l'exportation au format pdflatex .texdans le répertoire temporaire correspondant, les lignes vides insérées avant et après la disparition de l'environnement asy, ce qui a conduit à l'apparition du fini .pdf, différent de celui qui a été conçu. De plus, bien sûr, n'oubliez pas de connecter le package asymptote à Document> Paramètres ...> Préambule LaTeX . Dans le fichier lyxrc.defaults, spécifiez le moteur de ce format avec tous les mêmes paramètres$$r $$i. Il est temps de donner le code du moteur de ce format. Ce sera, comme toujours, un fichier .bat. Appelons-le pdflatex + asymptote + pdflatex-v-lyx.bat . Comme toujours, ce fichier doit se trouver dans le dossier ajouté à PATH. Voici le code de ce fichier batch:

 cd /d %0\.. if exist perehod.bat (goto :vyhod6) else (goto :vhod) :vhod echo %1 > put0.txt echo cd /d %%0\..> pereim.bat echo SetLocal EnableExtensions EnableDelayedExpansion>> pereim.bat echo Set infile=put0.txt>> pereim.bat echo Set outFile=put.txt>> pereim.bat echo Set find=/>>pereim.bat echo Set replace=\>>pereim.bat echo for /F "UseBackQ delims=" %%%%n in ("%%infile%%") do (>> pereim.bat echo set "LINE=%%%%n">> pereim.bat echo set "LINE=!LINE:%%find%%=%%replace%%!">> pereim.bat echo echo.!LINE!^>^>%%outFile%%>> pereim.bat echo )>> pereim.bat echo exit>> pereim.bat start /b pereim.bat :vhod1 if exist put.txt (goto :vyhod1) else (goto :vhod1) :vyhod1 echo echo LYXCMD:sohranenie:buffer-write^> \\.\pipe\lyxpipe.in >perehod.bat echo cd /D ^^>>perehod.bat more < put.txt >> perehod.bat echo :vhod1>>perehod.bat echo lyx -e latex %~n2.lyx>> perehod.bat echo if exist %~n2.tex (goto :vyhod1) else (goto :vhod1)>>perehod.bat echo :vyhod1>>perehod.bat echo echo cd /d %%%%0\..^> zamena.bat>>perehod.bat echo echo chcp 65001^>^> zamena.bat>>perehod.bat echo echo SetLocal EnableExtensions EnableDelayedExpansion^>^> zamena.bat>>perehod.bat echo echo Set infile=%~n2.tex^>^> zamena.bat>>perehod.bat echo echo Set outFile=zameneno.tex^>^> zamena.bat>>perehod.bat echo echo Set find=ovols^>^>zamena.bat>>perehod.bat echo echo Set replace=^>^>zamena.bat>>perehod.bat echo echo for /F "UseBackQ delims=" %%%%%%%%n in ("%%%%infile%%%%") do (^>^> zamena.bat>>perehod.bat echo echo set "LINE=%%%%%%%%n"^>^> zamena.bat>>perehod.bat echo echo set "LINE=!LINE:%%%%find%%%%=%%%%replace%%%%!"^>^> zamena.bat>>perehod.bat echo echo echo.!LINE!^^^>^^^>%%%%outFile%%%%^>^> zamena.bat>>perehod.bat echo echo )^>^> zamena.bat>>perehod.bat echo echo exit^>^> zamena.bat>>perehod.bat echo :vhod2>>perehod.bat echo if exist zamena.bat (goto :vyhod2) else (goto :vhod2)>>perehod.bat echo :vyhod2>>perehod.bat echo start zamena.bat>>perehod.bat echo :vhod3>>perehod.bat echo if exist zameneno.tex (goto :vyhod3) else (goto :vhod3)>>perehod.bat echo :vyhod3>>perehod.bat echo del %~n2.tex>>perehod.bat echo rename zameneno.tex %~n2.tex>>perehod.bat echo del %~n2.aux>>perehod.bat echo if exist %~n2-*.asy (goto :vhod4) else (goto :vhod5)>>perehod.bat echo :vhod4>>perehod.bat echo del %~n2-*.*>>perehod.bat echo :vhod5>>perehod.bat echo pdflatex %2 >> perehod.bat echo for %%%%f in (%~n2-*.asy) do asy %%%%f >> perehod.bat echo pdflatex %2 >> perehod.bat echo exit >> perehod.bat :vhod6 if exist perehod.bat (goto :vyhod6) else (goto :vhod6) :vyhod6 start perehod.bat 

En principe, tout est pareil ici. Seul le fichier zamena.bat est nécessaire pour remplacer les ovols par rien, c'est-à-dire pour supprimer ce mot abracadabra. Comme d'habitude, des sections du code d'affichage

 :vhod « - » If exist «- »... :vyhod «   - » 

servir, pour ainsi dire, à suspendre d'autres actions du fichier de commandes correspondant jusqu'à l'apparition de "tel ou tel fichier" dans le dossier de travail de ce fichier de commandes, bien qu'en fait le fichier de commandes continue de fonctionner.

Source: https://habr.com/ru/post/fr485298/


All Articles