WSL을 사용하여 Git-Bash를 사용하여 `latexmk` 명령을 실행하는 방법은 무엇입니까?

WSL을 사용하여 Git-Bash를 사용하여 `latexmk` 명령을 실행하는 방법은 무엇입니까?

질문: 전화해도 될까요?Git-Bash에서 명령을 내리다WSL? 자세한 컨텍스트는 두 구분선 사이를 이동합니다. (이 질문 끝에 간단한 솔루션이 추가되었습니다..)


나는 별칭을 사용하여 모든 *.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"

요약하자면, 새로운 기능을 사용하면 마치 Windows에서 기본 MikTeX 컴파일러를 사용하는 것처럼 WSL에서 파일을 zsh컴파일할 수 있습니다 . *.tex이는 정방향 및 역방향 검색이 모두 완벽하게 작동하는 현재 GVIM + Sumatra 설정과 잘 작동합니다.


훨씬 더 간단한 솔루션: latexmkPowerShell을 통한 호스트

자세한 내용은 다음을 참조하세요.이 답변아래에.

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

그리고 main.texWSL의 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.여기그들 중 일부입니다. 자세한 내용은 다음을 참조하세요.Windows와의 WSL 상호 운용성.

답변2

계속 집착할 필요가 전혀 없습니다 Git-bash. 원래 게시물의 필수 요구 사항은 *.texWindows 시스템에서 기본 MikTeX를 사용하여 문서를 컴파일하는 것이었습니다. 실행 PATH파일 에 액세스할 수 있는 모든 명령 셸이 latexmk작업을 완료할 수 있습니다.

문제 Git-bash: git-bash.exe창은 항상 새 창의 자체 에뮬레이터에서 시작되므로 Tmux로 작업할 수 없습니다. 이제 프로덕션에 Git-Bash를 사용할 필요가 없습니다. 나의 오랜 친구여, 안녕히 계세요 :). 그럼에도 불구하고 git해당 위치에서 설치 프로그램을 실행합니다 .다운로드 페이지Windows 컴퓨터를 사용자 정의할 때 가장 먼저 해야 할 일은 여전히 ​​입니다. Windows에서 git.exe필요한 기능을 제공합니다 .gvim.exe

*.texNative MikTeX를 사용하여 파일을 컴파일하는 실용적인 방법 ( latexmk)

Windows에서 사용할 수 있는 다른 명령 셸이 있으며 모두 WSL에서 사용할 수 있습니다. 예를 들어 powershell.exeWSL 세션을 호스팅하는 동일한 에뮬레이터 내에서 PowerShell을 열어 " latexmkWSL 내에서 컴파일 프로세스를 호스팅"할 수 있도록 해야 합니다. 이는 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뒤로/앞으로 검색도 활성화합니다.

관련 정보