
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 *.tex
documentos, 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.exe
editor nativo e umGit-Bashinstância que hospeda o latexmk
comando, não preciso mais me preocupar com o tedioso processo de compilação.
No entanto, quando emito o mesmo latexmk
comando 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 lmk
comandos 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.exe
para o WSL e ele apenas abriu uma janela independente do Git Bash.
Solução one-line usando zsh + GitBash
Eu uso zsh
como meu shell padrão para WSL, e aqui vai a função que defini para tornar lmk TexFilename.tex
diretamente 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).perl
lmk_kill
latexmk
alias lmk_kill="powershell.exe kill -n perl"
Resumindo: com a nova zsh
função, estou compilando *.tex
arquivos 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 latexmk
atravé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.tex
arquivos 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.exe
passa a linha de comando restante como está. Em seguida, wslpath
converte 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-bash
nada. O requisito essencial na postagem original era compilar *.tex
documentos usando MikTeX nativo em máquinas Windows. Qualquer shell de comando que tenha acesso PATH
e, portanto, ao latexmk
executável pode realizar o trabalho.
O problema com Git-bash
: A git-bash.exe
janela 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 git
partir de seupágina de downloadainda é a primeira coisa a fazer quando personalizo minha máquina Windows. Ele fornece git.exe
o que é necessário gvim.exe
no Windows.
Uma maneira prática de compilar *.tex
arquivos usando Native MikTeX ( latexmk
)
Existem outros shells de comando disponíveis no Windows e todos estão disponíveis para WSL. Por exemplo: powershell.exe
deve abrir o PowerShell dentro do mesmo emulador que hospeda a sessão WSL, possibilitando “hospedar um latexmk
processo 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 latexmk
do 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.tex
está localizado, emita o comando lmk main.tex
para compilar o documento LaTeX em modo contínuo. O conjunto de sinalizadores que seguiu latexmk
o comando também permitiria a pesquisa para frente/para trás.