OsbertWang/install-latex-guide-zh-cn

有关 WSL 尚未解决问题的可能解决思路

kexplorning opened this issue · 6 comments

有关 texdoc 打开相应手册的问题,貌似可以借鉴这个项目 Github - wslu 的工作。

其中有一个工具wslview,它可以将 WSL 的默认浏览器绑定到 Windows 上。

一种选择是,用类似的方法,把 WSL 中的 PDF 浏览器绑定到 Windows 上的。

当然,由于一般现代浏览器都支持浏览 PDF 文档,所以可以直接使用 wslview

可以搞一个 bash 脚本(以下代码是我自行YY的。。)

alias texdoc [pkg-name] = "texdoc -l [pkg-name] || <截取其中 PDF 地址> || wslview "

(好吧,我不知道 bash 里面函数怎么写。。)

就这样,希望有些帮助。

这个注意不错。等下个月更新时,我先实验一下。如果可以,就在文档里做链接,引过来。根本上我还是希望微软公司自己解决这个问题。

嗯。。我找到了一个更好的项目 GitHub - wsl-open

不光可以打开,它还可以默认绑定一种文件(绑定到 xdg-open 上)用 Windows 打开。

这个解决方法应该比较完美。。

然后,估计 Microsoft 不会解决这个问题。。。因为在 WSL 中其实可以安装图形界面,并且正常使用(就是比较卡),如果要解决这个问题,解决方式和这个项目的方式应该没有什么差别。。

另,Cygwin 也是外部引入一个命令来解决这个问题。

我已将这个 issue 引入到手册中,下次更新前,保留此 issue

其实不需要安装额外的工具,配置一下 texdoc 的浏览器就可以了:

echo "viewer_pdf = (powershell.exe -Command Start-Process \$(wslpath -w %s)) &" > "$(kpsewhich -var-value=TEXMFHOME)/
texdoc/texdoc.cnf"

WSL 默认没有图形界面,可能会有环境变量 DISPLAY 缺失的警告,自行设置 export DISPLAY=:0 就好了。

其实不需要安装额外的工具,配置一下 texdoc 的浏览器就可以了:

echo "viewer_pdf = (powershell.exe -Command Start-Process \$(wslpath -w %s)) &" > "$(kpsewhich -var-value=TEXMFHOME)/
texdoc/texdoc.cnf"

WSL 默认没有图形界面,可能会有环境变量 DISPLAY 缺失的警告,自行设置 export DISPLAY=:0 就好了。

感谢,我对 powershell 不熟悉,学习了。

echo "viewer_pdf = (powershell.exe -Command Start-Process \$(wslpath -w %s)) &" > "$(kpsewhich -var-value=TEXMFHOME)/texdoc/texdoc.cnf"

我觉得这基本上是最简单的方法。事实上 wsluwslview 也是调用 powershell.exe ,所以照这个逻辑只要创建别名就可以实现打开任意路径的功能:

op() {
  powershell.exe -Command Start-Process $(wslpath -w "$1") &
}

另:其实直接调用 explorer.exe 延迟要低很多,wsluwsl-open选择 powershell.exe 是实现上最讨巧的方法。

如果不想创建或修改 texmf 的话,按照 issue 作者的说法:

# `op` 为所使用的路径打开工具
td() {
  echo "" | texdoc -l "$1" | head -n 1 | cut -c4- | op &
}

这种方法于少数宏包会抛出错误(多个路径等情况)。