WSL で Git-Bash を使用して `latexmk` コマンドを実行するにはどうすればよいですか?

WSL で Git-Bash を使用して `latexmk` コマンドを実行するにはどうすればよいですか?

質問: 電話してもいいですかGit-Bash命令を出すワールドワイド? 詳細なコンテキストは 2 つの区切りの間に入力します。(この質問の最後に簡単な解決策を追加しました


*.tex私はすべての文書をコンパイルするためにエイリアスを使用しています。Git-BashWindows 10 でc:/users/UserName/.bashrc、私は次のようにマッピングしました:

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

ネイティブGvim.exeエディターとGit-Bashコマンドをホストするインスタンスを作成すればlatexmk、面倒なコンパイル プロセスに煩わされる必要がなくなります。

ただし、WSL 経由で同じlatexmkコマンドを発行すると、前方検索と後方検索を実行できなくなります。コンパイラの一部のオプションは、PDF (またはその構文ファイル) に書き込み、PDF のすべての行を WSL 風味のパスに詳述されているソース ファイルの行にマッピングします。これを修正する別の方法は、ネイティブ エディター + PDF ビューアー (私にとってはまったく新しい) を使用する WSL の世界に完全に移行するか、コンパイラをさらにデバッグして、すべての WSL 風味のパスを Windows 風味のパスに交換できるかどうかを確認することです (これも時間がかかります)。

簡単な解決策としては、何らかの方法で WSL から Git-Bash を呼び出し、lmkコマンドをコマンドライン引数として Git-Bash に渡すことでしょうか?


詳細はさておき、一般的にはGit-BashWSLから直接呼び出せる実行ファイルはありますか?もしあるなら、どうすればいいですか?教えてWSLで次の「もの」を実行したいのですが、私のマシンでは、Git-Bashとして: "C:\Program Files\Git\git-bash.exe"。WSL に渡そうとしました/mnt/c/Program\ Files/Git/git-bash.exeが、スタンドアロンの Git Bash ウィンドウが開かれただけでした。

ここに画像の説明を入力してください


zsh + GitBash を使用したワンライナーソリューション

私は WSL のデフォルト シェルとして使用しており、 WSL のコマンド ラインから直接呼び出せるzshように定義した関数を次に示します。lmk TexFilename.tex

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/.

次の行により、隠しbash/perlプロセスを簡単に終了できます。 を発行すると、lmk_kill実行中のすべてのコンパイラが終了します ( latexmkPerl スクリプト経由)。

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

要約すると、新しいzsh機能を使用すると、Windows でネイティブの MikTeX コンパイラーを使用しているかのように、WSL からファイルをコンパイルできます*.tex。これは、前方検索と後方検索の両方が完全に機能する GVIM + Sumatra の現在の設定でうまく機能します。


さらに簡単な解決策: latexmkPowerShell 経由でホストする

詳細については、この答え下に。

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

また、main.tex簡単なコマンドを使用して、WSL 上の Tmux セッションのペインなど、どこでもファイルをコンパイルできますlmk main.tex

答え1

まず、いくつか例を挙げます。簡単なコマンドを としますtouch test.txt

  • Windows スタイルの場合:
"C:\Program Files\Git\git-bash.exe" --hide -c "touch test.txt"
  • WSL スタイル:
wsl.exe -- "$(wslpath "C:\Program Files\Git\git-bash.exe")" --hide -c "touch test.txt"

では、これはどのように動作するのでしょうか。--の後のオプションは、wsl.exe残りのコマンド ラインをそのまま渡します。次に、wslpathWindows スタイル (バックスラッシュ) のパスを WSL/Unix スタイル (スラッシュ) に変換します。つまり、C:\になります/mnt/c(既定)。残りは のオプションですgit-bash.exeこここれらはその一部です。詳しくはWSL と Windows の相互運用性

答え2

Git-bashまったく執着する必要はありません。元の投稿で必須だったのは*.tex、Windows マシンでネイティブの MikTeX を使用してドキュメントをコンパイルすることでした。実行ファイルにアクセスできるコマンド シェルであれPATHばどれでも、latexmkこの作業を実行できます。

問題Git-bash:git-bash.exeウィンドウは常に新しいウィンドウの独自のエミュレータで起動するため、Tmux で作業することはできません。Git-Bash を本番環境で使用する必要性がなくなったと思います。さようなら、古い友人 :)。それでもgitダウンロードページは、Windows マシンをカスタマイズするときに最初に行うことです。Windowsでgit.exe必要なものを提供しますgvim.exe

*.texネイティブ MikTeX を使用してファイルをコンパイルする実用的な方法( latexmk)

Windows では他のコマンド シェルも使用可能で、それらはすべて WSL で使用できます。たとえば、powershell.exeWSL セッションをホストする同じエミュレータ内で PowerShell を開き、「WSL 内でコンパイル プロセスをホスト」できるようにしますlatexmk。これにより、Tmux を介して複数の「バックグラウンド コンパイラ」をホストできるようになります。

latexmkネイティブ Windows 10 インストールを使用して MikTeX から呼び出すワンライナー コマンド:

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

使用方法: 次のように、長いコマンド行を WSL で使用されるシェルのエイリアスに割り当てます。

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

次に、ローカライズされたディレクトリからmain.tex、コマンドを発行して、lmk main.texLaTeX ドキュメントを連続モードでコンパイルします。コマンドに続くフラグのセットによりlatexmk、後方/前方検索も有効になります。

関連情報