¿Cómo hacer que WSL use Git-Bash para ejecutar un comando `latexmk`?

¿Cómo hacer que WSL use Git-Bash para ejecutar un comando `latexmk`?

Pregunta: Puedo llamarGit Bashpara emitir una orden deWSL? Los contextos detallados van entre los dos divisores. (Solución simple adjunta al final de esta pregunta..)


Utilizo un alias para compilar todos mis*.tex documentos, usandoGit Bashen Windows 10. En mi c:/users/UserName/.bashrc, he mapeado:

alias lmk='latexmk -pvc -pdf --synctex=1 -src-specials -silent -time -interaction=nonstopmode'

con un nativoGvim.exe editor nativo y unGit Bashinstancia que aloja el latexmkcomando, ya no necesito molestarme con el tedioso proceso de compilación.

Sin embargo, cuando emito el mismo latexmkcomando a través de WSL, ya no puedo realizar búsquedas hacia adelante ni hacia atrás. Algunas opciones para el compilador escribirán en el PDF (o su archivo de síntesis), asignando todas las líneas del PDF a las líneas del archivo fuente detallado en rutas con sabor WSL. Otra forma de solucionar estos problemas es: optar completamente por el mundo WSL, donde uso el editor nativo + visor de PDF (que es completamente nuevo para mí), o depurar más en el compilador y ver si puedo intercambiar todos las rutas con estilo WSL en rutas con estilo Windows (lo cual nuevamente requiere mucho tiempo).

Una solución simple sería llamar de alguna manera a Git-Bash desde WSL, pasando los lmkcomandos a Git-Bash como argumentos de línea de comando.


Aparte de los detalles, en general, esGit Bash¿Algún ejecutable al que pueda llamar directamente desde WSL? Si es así, ¿cómodecirWSL que me gustaría ejecutar la siguiente "cosa"? En mi máquina puedo encontrarGit Bashcomo: "C:\Program Files\Git\git-bash.exe". Intenté pasar /mnt/c/Program\ Files/Git/git-bash.exea WSL y solo abrió amablemente una ventana independiente de Git Bash.

ingrese la descripción de la imagen aquí


Solución de una sola línea usando zsh + GitBash

Lo uso zshcomo mi shell predeterminado para WSL, y aquí va la función que definí para que sea lmk TexFilename.texdirectamente invocable desde la línea de comando de WSL:

function lmk(){
    "$(wslpath "C:\Program Files\Git\git-bash.exe")" --hide -c "lmk $1"
}
# Note, the `lmk` here is actually alias from Git-Bash, as defined in: c:/users/UserName/.

La siguiente línea hace que sea útil terminar el proceso oculto bash/ : la emisión eliminará todos los compiladores en ejecución (a través de un script perl).perllmk_killlatexmk

alias lmk_kill="powershell.exe kill -n perl"

Para resumir: con la nueva zshfunción, estoy compilando *.texarchivos de WSL como si estuviera usando los compiladores nativos MikTeX en Windows. Esto funciona bien con mi configuración actual de GVIM + Sumatra, donde tanto la búsqueda hacia adelante como hacia atrás son completamente funcionales.


Solución aún más sencilla: alojar latexmka través de PowerShell

Para más detalles, consulteesta respuestaabajo.

alias lmk='powershell.exe -c latexmk -pvc -pdf --synctex=-1 -src-specials -silent -time -interaction=nonstopmode'

Y compile main.texarchivos en cualquier lugar, por ejemplo, en un panel de una sesión de Tmux en WSL, usando un comando simple lmk main.tex.

Respuesta1

Primero, con algún ejemplo. Sea un comando simple touch test.txt.

  • En estilo Windows:
"C:\Program Files\Git\git-bash.exe" --hide -c "touch test.txt"
  • En estilo WSL:
wsl.exe -- "$(wslpath "C:\Program Files\Git\git-bash.exe")" --hide -c "touch test.txt"

¿Entonces, cómo funciona esto? La --opción posterior wsl.exepasa la línea de comando restante tal como está. Luego wslpathconvierte la ruta del estilo de Windows (barra invertida) al estilo WSL/Unix (barra diagonal), es decir, C:\se convierte en /mnt/c(de forma predeterminada). El resto son opciones para git-bash.exe.Aquíson algunos de ellos. Para más lecturas, verInteroperabilidad WSL con Windows.

Respuesta2

No hay necesidad de permanecer apegado a Git-bashnada. El requisito esencial en la publicación original era compilar *.texdocumentos utilizando MikTeX nativo en máquinas con Windows. Cualquier comando shell que tenga acceso al ejecutable PATHy, por lo tanto, al latexmkejecutable puede realizar el trabajo.

El problema con Git-bash: La git-bash.exeventana siempre se inicia en su propio emulador en una ventana nueva, lo que hace imposible trabajar con Tmux. Ahora no veo la necesidad de usar Git-Bash para producción. Adiós, un viejo amigo mío :). Sin embargo, ejecutar el instalador gitdesde supagina de descargasigue siendo lo primero que debo hacer cuando personalizo mi máquina con Windows. Proporciona git.exelo necesario para gvim.exeWindows.

Una forma práctica de compilar *.texarchivos usando Native MikTeX ( latexmk)

Hay otros shells de comandos disponibles en Windows y todos están disponibles para WSL. Por ejemplo: powershell.exeabrirá PowerShell dentro del mismo emulador que aloja la sesión WSL, lo que permitirá "alojar un latexmkproceso de compilación dentro de WSL". Esto abre la puerta a alojar múltiples "compiladores en segundo plano" a través de Tmux.

Comando de una sola línea para llamar latexmkdesde MikTeX, usando la instalación nativa de Windows 10:

powershell.exe -c latexmk -pvc -pdf --synctex=-1 -src-specials -silent -time -interaction=nonstopmode 

Uso: asigne la línea larga de comando a un alias para el shell usado en WSL, como:

alias lmk='powershell.exe -c latexmk -pvc -pdf --synctex=-1 -src-specials -silent -time -interaction=nonstopmode'

Luego, desde el directorio en el que main.texestá ubicado, emita el comando lmk main.texpara compilar el documento LaTeX en modo continuo. El conjunto de indicadores que seguían latexmkal comando también permitiría la búsqueda hacia atrás/adelante.

información relacionada