Como fazer com que o WSL use o Git-Bash para executar um comando `latexmk`?

Como fazer com que o WSL use o Git-Bash para executar um comando `latexmk`?

Pergunta: Posso ligarGit-Bashpara emitir um comando deWSL? Contextos detalhados ficam entre os dois divisores. (Solução simples anexada no final desta questão.)


Eu uso um alias para compilar todos os meus *.texdocumentos, usandoGit-Bashno Windows 10. No meu c:/users/UserName/.bashrc, mapeei:

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

Com um Gvim.exeeditor nativo e umGit-Bashinstância que hospeda o latexmkcomando, não preciso mais me preocupar com o tedioso processo de compilação.

No entanto, quando emito o mesmo latexmkcomando por meio do WSL, não consigo mais realizar pesquisas para frente e para trás. Algumas opções para o compilador gravarão no PDF (ou em seu arquivo de sintaxe), mapeando todas as linhas do PDF para as linhas do arquivo de origem detalhadas nos caminhos do tipo WSL. Outra maneira de corrigir isso é: optar completamente pelo mundo WSL, onde uso o editor nativo + visualizador de PDF (que é completamente novo para mim), ou depurar ainda mais no compilador e ver se consigo trocar tudo os caminhos do tipo WSL em caminhos do tipo Windows (o que, novamente, é demorado).

Uma solução simples seria chamar de alguma forma o Git-Bash do WSL, passando os lmkcomandos para o Git-Bash como argumentos de linha de comando?


Além dos detalhes, em geral, éGit-Bashalgum executável que eu possa chamar diretamente do WSL? Se sim, comodizerWSL que eu gostaria de rodar a seguinte "coisa"? Na minha máquina, posso encontrarGit-Bashcomo: "C:\Program Files\Git\git-bash.exe". Tentei passar /mnt/c/Program\ Files/Git/git-bash.exepara o WSL e ele apenas abriu uma janela independente do Git Bash.

insira a descrição da imagem aqui


Solução one-line usando zsh + GitBash

Eu uso zshcomo meu shell padrão para WSL, e aqui vai a função que defini para tornar lmk TexFilename.texdiretamente chamável a partir da linha de comando do 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/.

A linha a seguir torna útil o encerramento do processo oculto bash/ : a emissão deve executar todos os compiladores em execução (via , um script perl).perllmk_killlatexmk

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

Resumindo: com a nova zshfunção, estou compilando *.texarquivos do WSL como se estivesse usando os compiladores MikTeX nativos no Windows. Isso funciona bem com minhas configurações atuais do GVIM + Sumatra, onde a pesquisa para frente e para trás são totalmente funcionais.


Solução ainda mais simples: hospedar latexmkatravés do PowerShell

Para obter detalhes, consulteesta respostaabaixo.

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

E compile main.texarquivos em qualquer lugar, digamos, em um painel da sessão Tmux no WSL, usando um comando simples lmk main.tex.

Responder1

Primeiro, com algum exemplo. Deixe um comando simples ser touch test.txt.

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

Então, como isso funciona? A --opção depois wsl.exepassa a linha de comando restante como está. Em seguida, wslpathconverte o caminho do estilo Windows (barra invertida) para o estilo WSL/Unix (barra), ou seja, C:\torna-se /mnt/c(por padrão). O resto são as opções para git-bash.exe.Aquisão alguns deles. Para leituras adicionais, consulteInteroperabilidade WSL com Windows.

Responder2

Não há necessidade de permanecer apegado a Git-bashnada. O requisito essencial na postagem original era compilar *.texdocumentos usando MikTeX nativo em máquinas Windows. Qualquer shell de comando que tenha acesso PATHe, portanto, ao latexmkexecutável pode realizar o trabalho.

O problema com Git-bash: A git-bash.exejanela sempre inicia em seu próprio emulador em uma nova janela, impossibilitando trabalhar com o Tmux. Agora não vejo necessidade de usar o Git-Bash para produção. Adeus, um velho amigo meu :). No entanto, executar o instalador a gitpartir de seupágina de downloadainda é a primeira coisa a fazer quando personalizo minha máquina Windows. Ele fornece git.exeo que é necessário gvim.exeno Windows.

Uma maneira prática de compilar *.texarquivos usando Native MikTeX ( latexmk)

Existem outros shells de comando disponíveis no Windows e todos estão disponíveis para WSL. Por exemplo: powershell.exedeve abrir o PowerShell dentro do mesmo emulador que hospeda a sessão WSL, possibilitando “hospedar um latexmkprocesso de compilação dentro do WSL”. Isso abre a porta para hospedar vários "compiladores em segundo plano" por meio do Tmux.

Comando de uma linha para chamar latexmkdo MikTeX, usando a instalação nativa do Windows 10:

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

Uso: atribua a longa linha de comando a um alias para o shell usado no WSL, como:

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

Então, a partir do diretório onde main.texestá localizado, emita o comando lmk main.texpara compilar o documento LaTeX em modo contínuo. O conjunto de sinalizadores que seguiu latexmko comando também permitiria a pesquisa para frente/para trás.

informação relacionada