Copiado de
mi blog para crear otra fuente de información en ruso sobre este tema.
Este artículo es una continuación de los siguientes artículos en un solo ciclo:
artículo 1artículo 2artículo 3LyX: \\. \ Pipe \ lyxpipe
En general, esta función es necesaria para organizar la interacción de LyX con otros programas. En particular, resulta que puede ingresar comandos a través de la línea de comandos en una ventana abierta del programa LyX. En primer lugar, para que esto funcione, en
Herramientas> Configuración> Rutas, en
el cuadro de texto del
canal del servidor LyX , ingrese lo siguiente:
\\.\pipe\lyxpipe
, y ni
.in
ni
.out
se atribuyen al lyxpipe al final. Naturalmente, haga clic en
. Además, la ventana del programa LyX, en la que era necesario ingresar comandos desde la ventana del símbolo del sistema, debe iniciarse antes de esta línea de comando, desde la cual los comandos se ingresarán en esta ventana del programa LyX, de lo contrario, nada funcionará. Aquí hay ejemplos de cómo escribir comandos en la línea de comandos para hacer esto:
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
En mi opinión, el último equipo merece interés. Este comando inserta una foto
zdes kujut hip-hop.png )), ubicada en la carpeta especificada en
Herramientas> Configuración ...> Rutas en el cuadro de texto del
directorio del
Usuario en la ventana del programa LyX abierta (antes de abrir la línea de comando).
LyX: búsqueda directa e inversa
Aquí se describe cómo se configura
esto . Solo te diré cómo lo hice en ruso. Entonces Estamos utilizando una versión no clasificable de SumatraPDF. Entonces lo descargamos, lo instalamos. A continuación, en "Inicio> Programas predeterminados> Asignación de tipos de archivos o protocolos a programas individuales", asegúrese de que los archivos
.pdf
se abran con SumatraPDF. Luego vamos a la carpeta
C:\Users\\AppData\Roaming\SumatraPDF
. Desde allí, siguiendo los consejos del enlace proporcionado, copie el archivo
SumatraPDF-settings.txt en algún lugar.
Luego, fue necesario agregar de alguna manera la ruta a la carpeta que contiene el archivo SumatraPDF que abre el programa (tengo esta carpeta
C:\Program Files\SumatraPDF
) en PATH. Por alguna razón, agregué esto a las
Variables de entorno del
usuario para IVAN . Además, la ruta a la carpeta que contiene el archivo que inicia el programa LyX (para mí es
C:\Program Files\LyX 2.0\bin
) también debe estar contenida en PATH. A continuación, vaya a la carpeta
C:\Program Files\SumatraPDF
, abra el archivo
SumatraPDF.exe . En la ventana que aparece del programa SumatraPDF, haga clic izquierdo en las 3 barras horizontales en la esquina superior izquierda (o, tal vez, la esquina))), luego,
Configuración> Configuración avanzada . Al mismo tiempo, el mismo archivo
SumatraPDF-settings.txt se abrirá en el bloc de notas, una copia de la cual hemos colocado previamente en un lugar apartado, por lo que ahora podemos hacer lo que queramos con este archivo. Y haremos lo siguiente con él. Aquí hay una lista de algunas variables junto con sus valores:
ReuseInstance = true ReloadModifiedDocuments = true InverseSearchCmdLine = lyxeditor.cmd "%f" %l EnableTeXEnhancements = true UseTabs = true
Entonces aquí. En el archivo
SumatraPDF-settings.txt , verificamos la presencia de estas variables (palabras a la izquierda del signo igual), si están allí, verificamos la coincidencia del valor (palabras a la derecha del signo igual) de las variables encontradas en este archivo de la lista anterior con los valores de tales mismas variables de esta lista. Si en la lista anterior el valor de cualquier variable fuera diferente del valor de la variable correspondiente en el archivo, sería necesario rehacer el valor de esta variable al mismo que en la lista anterior. Si alguna variable de la lista junto con su valor no estuviera en el archivo, solo tendríamos que copiar la variable junto con su valor en el archivo. Bueno, personalmente, no cambié nada en este archivo: todas las variables enumeradas en la lista ya existían en el archivo y a todas estas variables en el archivo se les asignaron los valores correspondientes enumerados en la lista directamente al instalar SumatraPDF. Cerrar, guardar los cambios. Eso es todo, se configurará SumatraPDF después de eso. Procedemos a configurar LyX. Entonces, abra el programa LyX si hasta ahora no se ha abierto o por alguna razón se ha cerrado. Vaya a
Herramientas> Configuración ...> Rutas . En
el campo de texto del
canal del servidor LyX, ingrese
\\.\pipe\lyxpipe
A continuación, vaya a
Herramientas> Configuración ...> Procesamiento de archivos> Convertidores . Allí, en el área bajo la frase
Definiciones de convertidores, seleccione
LaTeX (pdflatex) -> PDF (pdflatex) con el botón izquierdo del mouse. A continuación, eliminamos su contenido del campo de texto
Convertidor e insertamos (bueno, o ingresamos a mano) lo siguiente:
pdflatex -interaction=nonstopmode -synctex=1 $$i
Y desde el cuadro de texto,
además, elimine su contenido. Haz clic en el botón
Cambiar . Entonces
guardar . Vuelva a
Herramientas> Configuración ...> Procesamiento de archivos> Convertidores . Compruebe si la configuración está guardada. Para mí, cuando voy allí ahora, cuando busco en ambas direcciones, entro, después de hacer clic con el botón izquierdo en
LaTeX (pdflatex) -> PDF (pdflatex) , luego la ubicación de la configuración se ve así:

A continuación, vaya a
Herramientas> Configuración ..> Salida> General . Allí, en el cuadro de texto
Comando PDF , ingrese el siguiente comando:
SumatraPDF -forward-search "$$t" $$n "$$o"
, haga clic en
Aplicar . Por lo tanto, este lugar se verá así:

Vaya a
Herramientas> Configuración ..> Manejo de archivos> Formatos de archivo . Allí estableceremos la lista desplegable
Formato eligiendo el valor
PDF (pdflatex) con el botón izquierdo del mouse, el valor
definido por el
usuario en la lista desplegable del
Visor , e ingrese en el cuadro de texto a la derecha de esta lista
SumatraPDF
Actualmente hay:

Y finalmente, en la
C:\Program Files\LyX 2.0\bin
cree un archivo con el nombre
lyxeditor y la extensión
.cmd
(de hecho, es el mismo archivo por lotes) con el siguiente contenido:
@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
Tomé el código para este archivo por lotes
de aquí cuando hice clic en el enlace de la página en inglés, cuyo contenido estoy volviendo a contar aquí (el enlace a esta página lo proporcioné aquí, solo arriba). Honestamente, sobre la creación de un archivo por lotes en una página en inglés, se dijo mucho antes que esto, pero ¿cuál es la diferencia? Por cierto, el código de este archivo por lotes me llevó a pensar en cómo ingresar comandos en la línea de comandos para que se ingresen desde esta línea en la ventana abierta del programa LyX, que sirvió de base para escribir el párrafo
LyX: \\. \ Pipe \ lyxpipe de este artículo. Antes de eso, traté de insertar comandos desde la línea de comandos en la ventana del programa LyX, tomando estos comandos del manual, por ejemplo, intenté ejecutar el siguiente comando desde la línea de comandos:
echo "LYXCMD:test:get-xy:" >~/.lyxpipe.in
Pero nada me funcionó. Bueno, y ahora, volviendo a la búsqueda relacionada con LyX. ¿Cómo usarlo? Pero muy simple. Ahora, si hicimos una vista previa del archivo
.lyx
abierto, cuando hace clic en
Navegación> Búsqueda hacia adelante por un corto tiempo en la ventana correspondiente de SumatraPDF, varias líneas que contienen la misma palabra se resaltan en púrpura (al menos para mí), junto a la palabra correspondiente en la ventana LyX en cursor parpadeante actualmente Cuando hace doble clic en la ventana SumatraPDF, el foco se transfiere a la ventana LyX y el cursor comienza a parpadear allí, mientras que cuando hace clic en diferentes lugares de la ventana SumatraPDF, el cursor comienza a parpadear en diferentes lugares de la ventana LyX. No puedo decir nada más específico sobre la relación de la posición del cursor en LyX con las líneas resaltadas en SumatraPDF, así como la relación de la posición de doble clic en SumatraPDF con el lugar en la ventana de LyX donde el cursor comienza a parpadear. Entonces, la tarea es bastante complicada, así que déjame darte una traducción de esa página, cuyo contenido estoy contando aquí, hecha por el navegador de Google: de repente me perdí algo. Entonces
De MyNotes
Actualizado para la última versión 2.3.32019
Se recomienda a los usuarios de MiKTeX actualizar a la última versión antes de instalar LyX 2.3.3+ para Windows. Si tiene una instalación permanente de
SumatraPDF , solo necesita instalar
-inverse-search UNA VEZ , al igual que con las pestañas, no tenemos que perder tiempo para decidir qué sesión abordar. Tenga en cuenta que SumatraPDF puede tener múltiples ventanas y sesiones, pero esto está más allá del alcance de esta respuesta. InverseSearchCmdLine = almacenado permanentemente en SumatraPDF-settings.txt. El editor no debe personalizarlo a menos que necesite reinstalar o reemplazar SumatraPDF-settings.txt (¡haga una copia de seguridad!)
Configuraciones en SumatraPDF
La diferencia notable es que volvemos al archivo cmd de
Okular más estable (
Okular usa exactamente el mismo sistema de llamadas que
SumatraPDF ), lo que evita llamadas innecesarias.
SumatraPDF debe instalarse de tal manera que funcione desde cualquier llamada al sistema, como
SumatraPDF , lo que significa que debe estar "en camino" (si se utiliza la versión portátil,
SumatraPDF.exe debe agregarse temporalmente a la ruta del usuario hasta la primera llamada de Lyx) Inicie
SumatraPDF y vaya a
Configuración> Opciones avanzadas . Esto abrirá el archivo
SumatraPDF-settings.txt en
NotePad , ahora después de verificar las entradas, verifique o cambie lo siguiente.
ReuseInstance = true ReloadModifiedDocuments = true InverseSearchCmdLine = lyxeditor.cmd "%f" %l EnableTeXEnhancements = true UseTabs = true
Recuerde que
%l
es una letra minúscula L, y asegúrese de presionar
CTRL +
S (Guardar archivo). Si necesita agregar
c: ... LyX \ bin \
a esta
InverseSearchCmdLine , entonces instaló LyX incorrectamente. El archivo
.cmd
se encuentra en la carpeta bin, que DEBE estar en la ruta del sistema.
Configuraciones en LyX
Siga las instrucciones de
SyncTex en
wiki.lyx.org/LyX/SyncTex .
"(Nota: la búsqueda inversa de archivos .lyx con espacios u otros caracteres especiales en el nombre del archivo no siempre funciona con este enfoque en algunos sistemas Windows)"
Mis notas debido a este método único de llamar al canal [1] utilizado por LyX en Windows, a veces se requiere que el archivo de trabajo y su ruta NO DEBEN TENER UN ESPACIO, por lo que si esto no funciona, deberá plantear cualquier problema con el soporte de LyX . Si proporcionan una forma más fácil de llamar a una sesión activa de
LyXserver con la ruta remota entre comillas, deje un comentario a continuación. El problema es que
LyXserver espera dos valores consecutivos:
1)
SyncTeX proporcionó el nombre del archivo
.tex
2) seguido de un número de línea, por lo que cuando el nombre del archivo contiene espacios, la primera parte puede ser inválida como el nombre del archivo y la segunda parte claramente no es un número, esto puede funcionar si se analizan los nombres de archivo como el formato 8.3 anterior, pero la mayoría de los archivos modernos de Windows usan el formato LFN. El archivo
lyxeditor.cmd intenta solucionar estos problemas. Diferencias notables en comparación con cualquier otro enfoque No agregue opciones / directivas innecesarias y obsoletas
-reuse-instance o
-inverse-search (no son necesarias y ralentizan la
solicitud correcta
de búsqueda directa ).
Herramientas → Configuración → Ruta
- Agregue el directorio donde se encuentra SumatraPDF.exe a la línea de prefijo PATH. (Esto no es necesario para una instalación permanente, pero puede ayudar para un uso portátil).
- Establezca la línea LyXServer pipe \\. \ Pipe \ lyxpipe (NO use el botón de exploración).
Herramientas → Configuración → Procesamiento de archivos → Convertidores
- Elija el formato LaTeX (pdflatex) -> PDF (pdflatex)
- Establezca el convertidor de entrada en pdflatex -interaction = nonstopmode -synctex = 1 $$ i

- Haga clic en "Cambiar" (de lo contrario, el cambio se cancelará).
- Este cambio requiere MikTeX o TeX Live para crear el archivo FILE.synctex.gz.
Salga y regrese para verificar que se haya modificado, me tomó algunos cambios restablecerlo y anclarlo de una sesión a otra.
Herramientas → Configuración → Salida → General.
En la sección Búsqueda directa, configure el comando de entrada de PDF en SumatraPDF -forward-search "$$ t" $$ n "$$ o"
Herramientas → Configuración → Procesamiento de archivos → Formatos de archivo
- Elija el formato PDF (pdflatex)
- Establezca el campo Ver en Personalizado utilizando el comando SumatraPDF
- Es posible que deba cerrar todas las ventanas de SumatraPDF y usar Documento → Ver.
- Puede configurar el comando de búsqueda inversa directamente en SumatraPDF yendo a "Configuración → Opciones avanzadas" como se describe anteriormente y configurar la búsqueda inversa. En este caso, reduce el comando Ver a
SumatraPDF

¡CUALQUIER problema con esta llamada de búsqueda inversa debería tener soporte de Lyx, ya que este es su método recomendado, no el mío!
[1] En principio, el uso de canalizaciones con nombre en la memoria acelera y reduce la necesidad de invocar una aplicación a través de opciones de shell, sin embargo, como los métodos DDE o D-bus, no es familiar para la mayoría de los usuarios y puede ser problemático solucionar problemas.
Nota Asegúrese de que lyx tenga el archivo abierto, el botón Habilitar avance / retroceso está activo, luego compile y vea, finalmente, haga clic derecho y seleccione aproximadamente 6 opciones hacia abajo
Los lugares no son 1 en 1 (las páginas pueden parecer "apagadas"). Esto puede ayudar a ver una búsqueda directa configurando SumatraPDF-settings.txt
HighlightPermanent = true
Para regresar a la página correspondiente, simplemente haga doble clic en cualquier lugar de SumatraPDF para llamar a lyxeditor.cmd.
Como puede ver, todavía hay algunos matices que no he mencionado. Sin embargo, cuando lo configuré todo, simplemente no necesitaba estos matices.
LyX; uso de archivos .bat
A pesar de la aparente falta a primera vista de la capacidad de agregar nuevos formatos de exportación a LyX (por lo que entiendo, por ejemplo, en TeXworks, un análogo de tal posibilidad de agregar es la capacidad de crear una nueva herramienta de diseño), este programa tiene esa oportunidad. Para empezar, intentemos crear el siguiente formato de exportación, que a primera vista parece indulgente. Las siguientes variables de RUTA se definen en el programa 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'
Este es un extracto de una parte del manual del programa LyX. No vamos a traducir las explicaciones de los significados, los significados de estas variables, sino que intentaremos crear un nuevo formato de exportación (con la aparición de un nuevo botón en
Archivo> Exportar a , incluso haciendo clic en el que podemos exportar a ese formato de ese archivo
.lyx
, desde la ventana en la que se realizó este clic), durante la exportación a la cual en el directorio temporal (en el que, por ejemplo, al exportar a
PDF {pdflatex} , se generan archivos, además del
.pdf
creado), se
creará el archivo
puti.txt en el que ( todos) los valores de estas variables . Para hacer esto, en la carpeta que se ha agregado a PATH, cree un archivo
puti.bat con el siguiente contenido:
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
A continuación, en el archivo
C:\Users\\AppData\Roaming\LyX2.0\lyxrc.defaults
estamos donde están las líneas
.................................... \Format pdf4 pdf "PDF (XeTeX)" X "pdfview" "" "document,vector,menu=export" \Format pdf5 pdf "PDF (LuaTeX)" u "pdfview" "" "document,vector,menu=export"
agregar tal línea
\Format pdf6 txt "puti" F "pdfview" "" "document,vector,menu=export"
Aquí, la palabra
puti no
especifica el archivo con el código, que es el motor del formato de exportación creado, pero con qué nombre se mostrará el botón para llamar a este formato de exportación a
Archivo> Exportar , y dónde
.................................... \converter pdflatex pdf2 "pdflatex $$i" "latex=pdflatex" \converter xetex pdf4 "xelatex $$i" "latex=xelatex" \converter luatex pdf5 "lualatex" "latex=lualatex"
después de la línea que define el formato pdf5, agregamos la siguiente línea:
\converter pdflatex pdf6 "puti.bat $$b $$f $$i $$l $$o $$p $$r $$s" ""
Y aquí la palabra
puti define un archivo con código, que es el motor del formato de exportación creado. Y en este lugar del archivo
lyxrc.defaults , ya debe especificar la extensión de este archivo con el código (en este caso
.bat
), ¡de lo contrario no funcionará! ... Y luego, como puede suponer, los parámetros están indicados, por un lado, con los cuales este archivo con el código se inicia cuando se inicia la exportación al formato creado y, por otro lado, estos parámetros se invocan en la forma que conoce el programa LyX y, por lo tanto, cuando llama a este archivo con el código del archivo abierto en LyX, LyX antes de abrir archivo con el código del programa correspondiente con parámetros, algunos y a partir del cual se forman a partir de partes de la ruta completa al archivo exportado, y otras desde rutas completas a algunas carpetas importantes del sistema, reemplaza estos parámetros, nombrados en esta forma con valores casi reales, por así decirlo, que son casi adecuados para usar en el comando línea Por qué "casi" se aclarará más tarde. Eso es todo, no necesita hacer nada más en el archivo
lyxrc.defaults : ni agregar, allí, ningún nuevo
\ editor_alternatives o
\ viewer_alternatives , ni nada por el estilo ... A continuación, después de guardar el archivo
lyxrc.defaults cambiado de esta manera y reiniciar Programas LyX en
Archivo> Exportar a , aparece un nuevo botón:

Antes de hacer clic en él, haga clic en
Ver> Ver mensajes (cuando usé LyX instalado desde un archivo ejecutable descargado de otra fuente, ese botón se llamó
Ver mensajes , porque esa copia del programa usaba un archivo de localización diferente
.mo
), mientras generalmente en la parte inferior de la ventana del programa LyX aparece un área llamada
Progress / Debug Messages . Ahora puede hacer clic en el botón que creamos. Al mismo tiempo, en el área
Mensajes de progreso / depuración , la información sobre el proceso de exportación comienza a parpadear, desplazándose hacia abajo. Después del final de dicho parpadeo, buscamos la ruta a la carpeta temporal en la que se ubican los archivos de incidentes, además del archivo del tipo que desea recibir en la misma carpeta con el archivo
.lyx
exportado. Todos estos caminos son más o menos similares entre sí, por lo que no puede haber ningún error. Por ejemplo, aquí hay una de estas formas:
D:\1-kat-LyX\lyx_tmpdir.gq2748\lyx_tmpbuf2
Ve a esta carpeta. Habrá, entre otros, el archivo
puti.txt , que configuramos como salida para este formato de exportación. Al abrirlo, veremos algo como lo siguiente:
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
Se formó un archivo de dicho contenido durante la exportación al formato de exportación de archivo.
C:\DocLyX\newfile2.lyx
. Como puede ver, ni siquiera todos los parámetros se han expandido a sus valores, lo que, sin embargo, no impide la creación de algunos otros formatos de exportación que he concebido. Sin embargo, tal problema se descubre aquí, que consiste en una compatibilidad "casi" con la línea de comando, que mencioné anteriormente. A saber: el separador en las rutas así obtenidas en el archivo de salida
.txt
es el carácter
/
lugar del tradicional, al menos para Windows,
\
, por lo que para poder utilizar la ruta obtenida de esta manera, lo más probable es que necesite archivar con el código que se supone debe usarse como motor para el formato de exportación creado, incluya la sección para reemplazar
/
con
\
. Tendremos esto en mente en el futuro. Comparando el orden en que se enumeran los parámetros en el archivo
lyxrc.defaults con el que lo
obligo a iniciar (y se puede iniciar))) el archivo
puti.bat , el archivo
puti.bat en sí con el contenido del archivo
puti.txt , concluyo que para crear otro , , , , , LyX.
Esto es $$ i , una variable que, después de la sustitución, envía al archivo puti.txt el nombre del archivo .tex que necesito obtener del archivo .lyx que se está editando actualmente , de modo que inmediatamente después de este recibo hay algo que comparar con ese procesamiento el archivo del arsenal del programa MiKTeX instalado y configurado, que describí para el formato de exportación que estoy creando, completamente de acuerdo con el proceso de exportación a los formatos originalmente disponibles de los autores del programa. Como tal archivo de procesamiento, puede usar el archivo que creé con el código de alguna extensión. Y $$ r es la ruta a la carpeta con ese archivo .lyx ligeramente modificado en su especificidad del programa LyX, al exportar a mi formato, al comienzo de esta exportación obtendré el archivo .tex del que acabo de hablar. Como puede ver en la foto del menú Exportar que modifiqué , no me limité a crear un nuevo formato de exportación puti en mi computadora . Detengámonos con más detalle en estos formatos de exportación que creé. Por lo general, al exportar a algún formato "nativo" del programa LyX, el programa LyX coloca todos los archivos incidentales con esto en el directorio temporal correspondiente. Intentemos crear un formato de exportación en el que estos archivos se colocarán en la misma carpeta que el archivo .lyx exportado . Bueno, acciones con el archivo lyxrc.defaultsserá esencialmente lo mismo que las acciones con este archivo al crear el formato de exportación puti . También agrego las líneas a los lugares apropiados en este archivo: \Format pdf7 pdf "pdflatex v papke" F "pdfview" "" "document,vector,menu=export"
y
\converter pdflatex pdf7 "pdflatex-v-papke.bat $$r $$i" ""
Todo está claro aquí. La diferencia real entre el formato de exportación puti que creé anteriormente y el formato de exportación que se está creando ahora se debe a la diferencia entre los motores (en este caso, entre archivos .bat
), que puse en el formato de exportación y que puse en este formato. A saber, como motor para este formato, uso el archivo pdflatex-v-papke.bat con el siguiente contenido: 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
¿Cómo funciona este archivo por lotes? En primer lugar, observando los parámetros con los que hice de este archivo por lotes el programa de llamadas LyX, escribiéndolo en el archivo lyxrc.defaults , vemos que esto sucede con los parámetros "ruta de la carpeta que contiene el archivo exportado en forma específica de LyX" y " el nombre del archivo exportado, pero con la extensión .tex ", y el orden de los parámetros es importante. Por lo tanto, este archivo por lotes primero realiza una transición a una carpeta temporal en la que se forman los archivos que se acompañan al exportar a algún "formato nativo". Luego, debido a la posible presencia de letras cirílicas en los parámetros de inicio del archivo por lotes pdflatex-v-papke.bat , cambiamos la codificación en Windows 1251 en la ventana del símbolo del sistema en la que se ejecutará este archivo por lotes. Luego, aprovechando la capacidad del programa LyX para responder a los comandos desde la línea de comandos, sobre cuál (oportunidad) de la que hablé aquí, nosotros, en vista de la posibilidad de cambios en el archivo exportado, antes de las acciones principales con este archivo, primero guarde el archivo exportado con el .lyx
comando echo LYXCMD:sohranenie:buffer-write> \\.\pipe\lyxpipe.in
para que no lo hagas manualmente cada vez. El equipo if exist perehod.bat (goto :vyhod3) else (goto :vhod)
con las etiquetas utilizadas en él :vyhod3
y de :vhod
pie antes y después de este comando, no crea nada por sí mismo, pero lo hace. Los siguientes archivos que aparecen en la carpeta temporal correspondiente como resultado del archivo por lotes pdflatex-v-papke.bat son (en orden de aparición) los archivos put0.txt , pereim.bat , put.txt , perehod.bat , que se crearán con cada vista previa, exportación, en cualquier caso, con posibles ediciones del archivo .lyx
que está abierto actualmente , no es necesario, solo es necesario por primera vez. En este caso, por primera vez, se creará el último archivo perehod.bat en el directorio temporal, Otros 3 de estos archivos en la carpeta temporal no existirán si este archivo no existe en esta carpeta. Por lo tanto, en la condición, if
escribimos la existencia de este archivo. Si, cuando el archivo por lotes pdflatex -v-papke.bat comienza a funcionar, este archivo no existe en la carpeta temporal correspondiente, el archivo por lotes pdflatex-v-papke.bat va a lo largo de la rama creando 4 archivos en la carpeta temporal correspondiente - put0.txt , pereim.bat , put.txt , perehod.baty pasa a sus equipos posteriores. Si estos 4 archivos en el directorio temporal ya existen, hay una transición directa a los comandos posteriores, de los que hablé en la oración anterior. Detengámonos en estos cuatro archivos. Dado que el primer parámetro con el que el programa LyX lanza el archivo pdflatex-v-papke.bat es "la ruta a la carpeta que contiene el archivo exportado en forma específica de LyX", esta ruta se mostrará en put0.txt en este formulario Sin embargo, la ruta en este formulario no es adecuada para su uso en la línea de comando (allí, el separador, por así decirlo, de los diferentes niveles de anidamiento de carpetas es el carácter en /
lugar del carácter esperado por la línea de comando \
). Por esta razón, el siguiente paso en la operación del archivo pdflatex-v-papke.batEs crear el mismo archivo por lotes directorio temporal pereim.bat , cuyo trabajo es tomar el contenido del archivo put0.txt , reemplazar el contenido /
en \
y grabar el archivo resultante put1.txt . La siguiente acción de pdflatex-v-papke.bat es iniciar el archivo por lotes pereim.bat . Para que no aparezca la ventana negra para ejecutar la línea de comando para este archivo por lotes, agregué una clave al comando que inició este archivo por lotes /b
. Hice (no sé por qué) el archivo pereim.bat comenzando en una ventana de comando separada. Debido a esto, mientras genera un archivo put1.txt , la operación del archivo principalpdflatex-v-papke.bat continúa con los siguientes pasos, en los que ya se supone que el archivo put1.txt existe en el directorio temporal correspondiente . Por este motivo, puede producirse un error en el funcionamiento del archivo pdflatex-v-papke.bat principal . Para evitar esto, el siguiente paso después de iniciar el archivo por lotes pereim.bat es recorrer el archivo por lotes principal con dicha sección de su código: :vhod1 if exist put.txt (goto :vyhod1) else (goto :vhod1) :vyhod1
Esta sección del código verifica la presencia del archivo put.txt en el directorio temporal correspondiente al archivo exportado. Si este archivo no está en esta carpeta, el archivo por lotes vuelve a la etiqueta :vhod1
y nuevamente verifica la presencia del archivo put.txt en el directorio temporal correspondiente al archivo exportado y así sucesivamente hasta que este archivo aparezca en esta carpeta. Tan pronto como el escaneo encuentre este archivo, sale del bucle y ejecuta los siguientes comandos del archivo por lotes pdflatex-v-papke.bat . Y los siguientes pasos en el trabajo de este archivo por lotes son crear perehod.bat en el directorio temporal correspondiente del archivo por lotes , esperando la aparición de este archivo por lotes (la sección del código es responsable de esto :vhod3 if exist perehod.bat (goto :vyhod3) else (goto :vhod3) :vyhod3
archivo por lotes pdflatex-v-papke.bat ) y el lanzamiento del archivo por lotes perehod.bat . Creo el archivo por lotes perehod.bat en un archivo separado porque en el curso de su trabajo debe seguir la ruta contenida en el archivo put.txt creado anteriormente y esta ruta aún debe extraerse de este archivo, que se realiza mediante el comando more < put.txt
En general, por ejemplo, el contenido del archivo perehod.bat es el siguiente (con el archivo exportado 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
¿Qué hace este archivo por lotes? Al principio, debido a la posibilidad de la ruta completa al archivo exportado de letras cirílicas, la codificación de la ventana de comandos en la que el archivo por lotes perehod.bat comienza a ejecutarse cambia a Windows 1251 . Luego se ejecutan las siguientes 2 líneas, que en realidad son un comando. La concatenación de estas líneas en un solo comando se realiza mediante el signo ^
al final de la primera línea. El significado de este comando compuesto es que el trabajo del archivo por lotes perehod.bat se transfiere a la carpeta con el archivo exportado .lyx
. La clave se /D
agregó porque tengo LyX en Herramientas> Configuración ...> Rutas en el cuadro de texto del directorio temporalestá configurado para que cuando abra LyX, este directorio temporal se cree en un disco diferente al que generalmente se inicia una línea de comando en una carpeta determinada. A continuación, se elimina el archivo del mismo nombre con el archivo exportado .lyx
, pero con la extensión .tex
, que, tal vez, se obtuvo en la misma carpeta con el archivo exportado .lyx
al exportar el archivo exportado .lyx
producido anteriormente. Además, en teoría, el archivo .lyx
que estamos tratando actualmente debe exportarse a un formato .tex
seguido de un bucle del archivo por lotes pdflatex-v-papke.bat hasta que aparezca un archivo con el mismo nombre con el archivo exportado en el directorio temporal correspondiente .lyx
, pero con la extensión.tex
. Sin embargo, con este orden de comandos, el archivo por lotes pdflatex-v-papke.bat a veces se repite , porque el archivo del mismo nombre con el archivo exportado .lyx
, pero con la extensión, .tex
no apareció. Por .tex
lo tanto, es mejor colocar el comando de exportación después de la etiqueta a la que regresa el archivo por lotes si no hay un .lyx
archivo del mismo nombre con este archivo en la carpeta con el archivo exportado .lyx
, pero con la extensión .tex
. Bueno, entonces todo es simple. Se procesa un archivo pdflatex con el archivo del mismo nombre con el archivo exportado .lyx
, pero con la extensión .tex
, se emite un comando para eliminar los procesos pdflatex que pueden haber quedado sin cerrar después de este procesamiento (esto sucede) y cerrar el archivo por lotesperehod.bat . Volver al archivo pdflatex-v-papke.bat . Con este archivo por lotes, después de iniciar el archivo por lotes perehod.bat , se ejecuta un comando, cuyo significado se indica en el comentario de este comando. Y aquí sigue el lanzamiento de un archivo por lotes absolutamente innecesario exit.bat (ubicado en alguna carpeta agregada a la RUTA) con contenidos aún más extraños date /t exit
¿Por qué este archivo por lotes? El hecho es que cuando todavía estaba experimentando con el archivo por lotes puti.bat , entre otros como ese, no probé el motor de uno de mis formatos de archivo puti1.bat , así que cuando estoy en este y otros archivos utilizados para tal objetivos, no indicaron el lanzamiento de este archivo por lotes, cuando estaba exportando a LyX en el formato apropiado que creé, el siguiente error se arrastró obstinadamente:
Y no pude descubrir cómo deshacerme de él. Luego, por pura casualidad, tengo puti1.bat en mi archivo por lotesel penúltimo equipo fue el equipo que lanzó un archivo por lotes. Este error ha dejado de aparecer. Por lo que recuerdo, ese archivo por lotes aleatorio generó algunos archivos con su trabajo. No lo necesitaba. Luego decidí intentar poner un comando que no produce ningún archivo en este archivo por lotes. Probé la cita. Resultó: el error que se muestra en la foto dejó de flotar. Y lo dejé. Aunque, al menos me mata, no entiendo por qué esto ayuda, pero sería interesante descubrir por qué funciona. Bueno, entonces viene la salida del archivo por lotes pdflatex-v-papke.bat . Eso es todo Etc.
En texworks tener la siguiente herramienta de diseño:
Crea en formato de exportación LyX, que inicialmente produce la exportación de archivos exportado .lyx
en .tex
, y luego el archivo resultante .tex
jugará fuera xelatex.exe con la opción -undump=xelatex
. Al mismo tiempo, todos los archivos creados accidentalmente al exportar algún archivo a este formato .lyx
se colocarán en la misma carpeta que el archivo exportado. Acciones completamente similares a las descritas anteriormente. Hacemos que este formato aparezca en Archivo> Exportar a ... bajo el nombre xelatex v papke , coloque el motor xelatex-v-papke.bat en este formato de exportación de la siguiente manera: 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
Como puede ver, este archivo por lotes tiene exactamente la misma estructura que el archivo pdflatex-v-papke.bat . La diferencia está solo en un solo comando miktex-xetex.exe -undump=xelatex %2
, que procesa el mismo nombre con el archivo exportado al formato de archivo creado actualmente .tex
, que ya recibimos al comienzo de esta exportación. Y de la misma manera, en el archivo lyxrc.defaults, nos aseguramos de que el archivo por lotes xelatex-v-papke.bat
comience con los parámetros $$r $$i
especificados en el archivo lyxrc.defaults sin fallar en este orden. Observo que para que este formato de exportación funcione con archivos .lyx
que contienen letras cirílicas, la .tex
opción utf8
en\usepackage[utf8]{inputenc}
o el último comando está ausente por completo. El último (por cierto, algo muy útil: de esta manera, en la parte inaccesible del preámbulo, puede eliminarlo inputenc
y, a través de Documento> Preferencias> LaTeX Preámbulo, escriba según lo necesite) configurando Documento> Configuración> Idioma para alternar el valor de codificación de la lista desplegable Otro (nombre de este la lista depende del archivo de localización utilizado .mo
) en (XeTeX) (utf8)
. Como último ejemplo, considere crear un formato de exportación, al exportar a él, dependiendo de la presencia / ausencia de código gráfico Asymptote en el archivo exportado, se ejecuta una u otra secuencia de comandos (pdflatex + asíntota + pdflatex o simplemente pdflatex). Al mismo tiempo, independientemente de si hay o no un código gráfico Asymptote en este archivo, todos los archivos funcionan de manera incidental.lyx
.lyx
.pdf
.lyx
(Ctrl + L), en este bloque de código insertamos alguna palabra abracadabra que no aparecerá exactamente en ningún lugar de este archivo .lyx; aceptaremos usar alguna palabra rusa para esto, escrita para mayor confusión en el orden inverso . Que esta palabra abracadabra sea ovols. Escribimos esta palabra abracadabra en el bloque de código TeX insertado, luego en este bloque TeX insertamos una línea vacía, una nueva línea y en esta nueva línea escribimos nuevamente la palabra ovols . Ponemos una línea vacía entre estos ovols \begin{asy}
, 2 líneas nuevas y en la segunda línea nueva ingresamos \end{asy}
. Si lo desea, la secuencia de todas estas acciones puede automatizarse mediante un archivo.js
contenido relevante Quizás entonces escriba sobre esto con más detalle. Y finalmente, entre estas etiquetas asy, escribimos el código para el patrón deseado. Para que se vea así, por ejemplo, podría verse así:
la palabra abracadabra es necesaria porque cuando no utilicé esta técnica, al ver el archivo creado durante la exportación al formato pdflatex .tex
en el directorio temporal correspondiente, las líneas vacías insertadas antes y después de que desapareciera el entorno vacío, lo que condujo a la aparición de lo finito .pdf
, diferente de lo que fue concebido. Además, por supuesto, no olvide conectar el paquete de asíntota a Documento> Configuración ...> Preámbulo de LaTeX . En el archivo lyxrc.defaults, especifique el motor para este formato, todos con los mismos parámetros$$r $$i
. Es hora de dar el código para el motor de este formato. Esto será, como siempre, un archivo .bat
. Llamémoslo pdflatex + asíntota + pdflatex-v-lyx.bat . Como siempre, este archivo debe estar en la carpeta agregada a PATH. Aquí está el código para este archivo por lotes: 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 principio, todo es igual aquí. Solo se necesita el archivo zamena.bat para reemplazar ovols con nada, es decir, para eliminar esta palabra abracadabra. Como de costumbre, secciones del código de vista :vhod « - » If exist «- »... :vyhod « - »
servir para, por así decirlo, suspender otras acciones del archivo por lotes correspondiente hasta que aparezca "tal y tal archivo" en la carpeta de trabajo de este archivo por lotes, aunque de hecho el archivo por lotes continúa funcionando.