
Frage: Kann ich anrufenGit-Basheinen Befehl erteilen vonWSL? Detaillierte Kontexte stehen zwischen den beiden Trennlinien. (Einfache Lösung am Ende dieser Frage angehängt.)
Ich verwende ein Pseudonym für die Zusammenstellung aller meiner *.tex
Dokumente.Git-Bashunter Windows 10. In meinem c:/users/UserName/.bashrc
habe ich Folgendes zugeordnet:
alias lmk='latexmk -pvc -pdf --synctex=1 -src-specials -silent -time -interaction=nonstopmode'
Mit einem nativen Gvim.exe
Editor und einemGit-BashInstanz, die den latexmk
Befehl hostet, muss ich mich nicht mehr mit dem langwierigen Kompilierungsprozess herumschlagen.
Wenn ich jedoch denselben latexmk
Befehl über WSL ausgebe, kann ich keine Vorwärts- und Rückwärtssuche mehr durchführen. Einige Optionen für den Compiler schreiben in das PDF (oder seine Syntaxdatei) und ordnen alle Zeilen im PDF den Zeilen aus der Quelldatei zu, die in WSL-Pfaden aufgeführt sind. Eine andere Möglichkeit, diese Probleme zu beheben, besteht darin, entweder vollständig in die WSL-Welt zu wechseln, wo ich den nativen Editor + PDF-Viewer verwende (was für mich völlig neu ist), oder weiter im Compiler zu debuggen und zu prüfen, ob ich alle WSL-Pfade in Windows-Pfade umwandeln kann (was wiederum zeitaufwändig ist).
Eine einfache Lösung wäre, Git-Bash irgendwie von WSL aus aufzurufen und dabei die lmk
Befehle als Befehlszeilenargumente an Git-Bash zu übergeben?
Abgesehen von den Details ist im AllgemeinenGit-Basheine ausführbare Datei, die ich direkt von WSL aus aufrufen kann? Wenn ja, wieerzählenWSL, dass ich das folgende "Ding" ausführen möchte? Auf meiner Maschine finde ichGit-Bashals: "C:\Program Files\Git\git-bash.exe"
. Ich habe versucht, an WSL weiterzuleiten /mnt/c/Program\ Files/Git/git-bash.exe
, und es hat freundlicherweise nur ein eigenständiges Git Bash-Fenster geöffnet.
Einzeiler-Lösung mit zsh + GitBash
Ich verwende es zsh
als meine Standard-Shell für WSL und hier ist die Funktion, die ich definiert habe, um sie lmk TexFilename.tex
direkt von der WSL-Befehlszeile aus aufrufbar zu machen:
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/.
Die folgende Zeile erleichtert das Beenden des versteckten bash
/ perl
-Prozesses: allowing lmk_kill
shall exit all running compilers (via latexmk
, einem Perl-Skript).
alias lmk_kill="powershell.exe kill -n perl"
Zusammenfassend: Mit der neuen zsh
Funktion kompiliere ich *.tex
Dateien aus WSL, als würde ich die nativen MikTeX-Compiler unter Windows verwenden. Dies funktioniert gut mit meinen aktuellen Einstellungen von GVIM + Sumatra, bei denen sowohl die Vorwärts- als auch die Rückwärtssuche voll funktionsfähig sind.
Noch einfachere Lösung: Hosten latexmk
über PowerShell
Weitere Einzelheiten finden Sie unterdiese Antwortunten.
alias lmk='powershell.exe -c latexmk -pvc -pdf --synctex=-1 -src-specials -silent -time -interaction=nonstopmode'
Und kompilieren Sie main.tex
Dateien überall, beispielsweise in einem Bereich einer Tmux-Sitzung auf WSL, mit einem einfachen Befehl lmk main.tex
.
Antwort1
Zunächst ein paar Beispiele. Ein einfacher Befehl wäre touch test.txt
.
- Im Windows-Stil:
"C:\Program Files\Git\git-bash.exe" --hide -c "touch test.txt"
- Im WSL-Stil:
wsl.exe -- "$(wslpath "C:\Program Files\Git\git-bash.exe")" --hide -c "touch test.txt"
Wie funktioniert das also? Die --
Option danach wsl.exe
übergibt die verbleibende Befehlszeile so wie sie ist. Dann wslpath
wird der Pfad im Windows-Stil (umgekehrter Schrägstrich) in den WSL/Unix-Stil (Schrägstrich) konvertiert, d. h. C:\
wird /mnt/c
(standardmäßig). Der Rest sind die Optionen für git-bash.exe
.Hiersind einige davon. Weitere Informationen finden Sie unterWSL-Interoperabilität mit Windows.
Antwort2
Es besteht Git-bash
überhaupt kein Grund, sich daran zu halten. Die wesentliche Anforderung im ursprünglichen Beitrag war, *.tex
Dokumente mit nativem MikTeX auf Windows-Rechnern zu kompilieren. Jede Befehlsshell, die Zugriff auf PATH
und damit auf die latexmk
ausführbare Datei hat, kann die Aufgabe erledigen.
Das Problem mit Git-bash
: Das git-bash.exe
Fenster startet immer in einem eigenen Emulator in einem neuen Fenster, was die Arbeit mit Tmux unmöglich macht. Ich sehe jetzt keine Notwendigkeit mehr, Git-Bash für die Produktion zu verwenden. Leb wohl, alter Freund von mir :). Trotzdem ist es nicht nötig, das Installationsprogramm von git
seinemDownload-Seiteist immer noch das Erste, was ich mache, wenn ich meinen Windows-Rechner anpasse. Es stellt alles bereit, was für Windows git.exe
benötigt wird .gvim.exe
Eine praktische Möglichkeit zum Kompilieren *.tex
von Dateien mit Native MikTeX ( latexmk
)
Unter Windows sind weitere Befehlsshells verfügbar, und alle sind für WSL verfügbar. Beispiel: powershell.exe
soll die PowerShell innerhalb desselben Emulators öffnen, der die WSL-Sitzung hostet, wodurch es möglich wird, „einen latexmk
Kompiliervorgang innerhalb von WSL zu hosten“. Dies öffnet die Möglichkeit, mehrere „Hintergrundcompiler“ über Tmux zu hosten.
Einzeiliger Befehl zum Aufrufen latexmk
von MikTeX unter Verwendung der nativen Windows 10-Installation:
powershell.exe -c latexmk -pvc -pdf --synctex=-1 -src-specials -silent -time -interaction=nonstopmode
Verwendung: Weisen Sie der langen Befehlszeile einen Alias für die in WSL verwendete Shell zu, etwa:
alias lmk='powershell.exe -c latexmk -pvc -pdf --synctex=-1 -src-specials -silent -time -interaction=nonstopmode'
Geben Sie dann aus dem Verzeichnis, in dem sich das Dokument main.tex
befindet, den Befehl ein, lmk main.tex
um das LaTeX-Dokument im kontinuierlichen Modus zu kompilieren. Die auf den Befehl folgenden Flags latexmk
ermöglichen auch die Rückwärts-/Vorwärtssuche.