
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 latexmk
comando, ya no necesito molestarme con el tedioso proceso de compilación.
Sin embargo, cuando emito el mismo latexmk
comando 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 lmk
comandos 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.exe
a WSL y solo abrió amablemente una ventana independiente de Git Bash.
Solución de una sola línea usando zsh + GitBash
Lo uso zsh
como mi shell predeterminado para WSL, y aquí va la función que definí para que sea lmk TexFilename.tex
directamente 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).perl
lmk_kill
latexmk
alias lmk_kill="powershell.exe kill -n perl"
Para resumir: con la nueva zsh
función, estoy compilando *.tex
archivos 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 latexmk
a 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.tex
archivos 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.exe
pasa la línea de comando restante tal como está. Luego wslpath
convierte 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-bash
nada. El requisito esencial en la publicación original era compilar *.tex
documentos utilizando MikTeX nativo en máquinas con Windows. Cualquier comando shell que tenga acceso al ejecutable PATH
y, por lo tanto, al latexmk
ejecutable puede realizar el trabajo.
El problema con Git-bash
: La git-bash.exe
ventana 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 git
desde supagina de descargasigue siendo lo primero que debo hacer cuando personalizo mi máquina con Windows. Proporciona git.exe
lo necesario para gvim.exe
Windows.
Una forma práctica de compilar *.tex
archivos usando Native MikTeX ( latexmk
)
Hay otros shells de comandos disponibles en Windows y todos están disponibles para WSL. Por ejemplo: powershell.exe
abrirá PowerShell dentro del mismo emulador que aloja la sesión WSL, lo que permitirá "alojar un latexmk
proceso 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 latexmk
desde 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.tex
está ubicado, emita el comando lmk main.tex
para compilar el documento LaTeX en modo continuo. El conjunto de indicadores que seguían latexmk
al comando también permitiría la búsqueda hacia atrás/adelante.