AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / computer / 问题 / 1455483
Accepted
llinfeng
llinfeng
Asked: 2019-07-03 12:47:37 +0800 CST2019-07-03 12:47:37 +0800 CST 2019-07-03 12:47:37 +0800 CST

如何让 WSL 使用 Git-Bash 运行 `latexmk` 命令?

  • 772

问题:我可以调用Git-Bash从WSL发出命令吗?详细的上下文位于两个分隔线之间。(在这个问题的末尾附加了简单的解决方案。)


我使用别名编译我的所有*.tex文档,在 Windows 10 上使用Git-Bash。在我的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 风格路径中详述的源文件中的行。解决这些问题的另一种方法是:选择完全进入 WSL 世界,在那里我使用本机编辑器 + PDF 查看器(这对我来说是全新的),或者,进一步调试编译器,看看我是否可以换掉所有将 WSL 风格的路径转换为 ​​Windows 风格的路径(这同样非常耗时)。

一个简单的解决方案是,以某种方式从 WSL 调用 Git-Bash,从而将lmk命令作为命令行参数传递给 Git-Bash?


除了细节之外,一般来说,Git-Bash是我可以直接从 WSL 调用的一些可执行文件吗?如果是这样,如何告诉WSL 我想运行以下“东西”?在我的机器上,我可以找到Git-Bash为:"C:\Program Files\Git\git-bash.exe". 我试图传递/mnt/c/Program\ Files/Git/git-bash.exe给 WSL,它只是友好地打开了一个独立的 Git Bash 窗口。

在此处输入图像描述


使用 zsh + GitBash 的一行解决方案

我使用zshWSL 的默认 shell,这里是我定义的函数,可以lmk TexFilename.tex直接从 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/.

下面一行使终止隐藏bash/perl进程变得很方便:发布lmk_kill应该相当所有正在运行的编译器(通过latexmkperl 脚本)。

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

总结一下:使用新zsh功能,我*.tex从 WSL 编译文件,就好像我在 Windows 上使用本机 MikTeX 编译器一样。这与我当前的 GVIM + Sumatra 设置配合得很好,向前和向后搜索都可以正常运行。


latexmk更简单的解决方案:通过 PowerShell托管

有关详细信息,请参阅下面的此答案。

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

并且,在任何地方编译main.tex文件,例如,在 WSL 上的 Tmux 会话窗格中,使用简单的命令lmk main.tex。

bash command-line
  • 2 2 个回答
  • 924 Views

2 个回答

  • Voted
  1. Best Answer
    Biswapriyo
    2019-07-05T12:10:09+08:002019-07-05T12:10:09+08:00

    首先,举一些例子。让一个简单的命令成为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按原样传递剩余的命令行。然后wslpath将 Windows 样式(反斜杠)路径转换为 ​​WSL/Unix 样式(正斜杠),即C:\变为/mnt/c(默认)。其余为 的选项git-bash.exe。这是其中的一些。如需进一步阅读,请参阅WSL 与 Windows 的互操作性。

    • 1
  2. llinfeng
    2020-04-08T06:49:06+08:002020-04-08T06:49:06+08:00

    根本不需要执着Git-bash。原始帖子中的基本要求是*.tex在 Windows 机器上使用本机 MikTeX 编译文档。任何有权访问PATH并因此latexmk可执行文件的命令 shell 都可以完成工作。

    问题Git-bash:git-bash.exe窗口总是在新窗口中在其自己的模拟器中启动,因此无法使用 Tmux。我现在认为没有必要使用 Git-Bash 进行生产。再见了,我的老朋友 :)。尽管如此,git从其下载页面运行安装程序仍然是我定制 Windows 机器时要做的第一件事。它提供了在 Windows 上git.exe所需的功能。gvim.exe

    *.tex使用 Native MikTeX编译文件的实用方法( latexmk)

    Windows 上还有其他可用的命令 shell,所有这些都可用于 WSL。例如:powershell.exe应在托管 WSL 会话的同一模拟器中打开 PowerShell,从而可以“latexmk在 WSL 中托管编译过程”。这打开了通过 Tmux 托管多个“后台编译器”的大门。

    latexmk使用本机 Windows 10 安装从 MikTeX调用的一行命令:

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

    用法:将长行命令分配给 WSL 中使用的 shell 的别名,例如:

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

    然后,从main.tex本地化的目录发出命令lmk main.tex以连续模式编译 LaTeX 文档。命令后面的标志集latexmk也将启用向后/向前搜索。

    • 0

相关问题

  • 对于 cp 或 mv,是否有等同于 cd - 的东西?

  • Python 的“pass”参数的批处理等价物是什么?

  • 禁用后无法启用 Microsoft Print to PDF

  • Notify-发送窗口下出现的通知

  • 如何从 WSL 打开 office 文件

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    Windows 照片查看器因为内存不足而无法运行?

    • 5 个回答
  • Marko Smith

    支持结束后如何激活 WindowsXP?

    • 6 个回答
  • Marko Smith

    远程桌面间歇性冻结

    • 7 个回答
  • Marko Smith

    Windows 10 服务称为 AarSvc_70f961。它是什么,我该如何禁用它?

    • 2 个回答
  • Marko Smith

    子网掩码 /32 是什么意思?

    • 6 个回答
  • Marko Smith

    鼠标指针在 Windows 中按下的箭头键上移动?

    • 1 个回答
  • Marko Smith

    VirtualBox 无法以 VERR_NEM_VM_CREATE_FAILED 启动

    • 8 个回答
  • Marko Smith

    应用程序不会出现在 MacBook 的摄像头和麦克风隐私设置中

    • 5 个回答
  • Marko Smith

    ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] 证书验证失败:无法获取本地颁发者证书 (_ssl.c:1056)

    • 4 个回答
  • Marko Smith

    我如何知道 Windows 安装在哪个驱动器上?

    • 6 个回答
  • Martin Hope
    Albin 支持结束后如何激活 WindowsXP? 2019-11-18 03:50:17 +0800 CST
  • Martin Hope
    fixer1234 “HTTPS Everywhere”仍然相关吗? 2019-10-27 18:06:25 +0800 CST
  • Martin Hope
    Kagaratsch Windows 10 删除大量小文件的速度非常慢。有什么办法可以加快速度吗? 2019-09-23 06:05:43 +0800 CST
  • Martin Hope
    andre_ss6 远程桌面间歇性冻结 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney 为什么在 URL 后面加一个点会删除登录信息? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension 鼠标指针在 Windows 中按下的箭头键上移动? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    Inter Sys Ctrl+C 和 Ctrl+V 是如何工作的? 2019-05-15 02:51:21 +0800 CST
  • Martin Hope
    jonsca 我所有的 Firefox 附加组件突然被禁用了,我该如何重新启用它们? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK 是否可以使用文本创建二维码? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 更改 git init 默认分支名称 2019-04-01 06:16:56 +0800 CST

热门标签

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve