如何在MacOS X Automator中从.Rmd文件生成PDF文档?
解决Automator中运行R Markdown转PDF时找不到xelatex的问题
我太懂这种在终端里跑命令好好的,放到Automator就各种工具找不到的憋屈了!本质原因是Automator运行shell脚本时用的是系统默认的受限PATH环境变量,和你平时终端里的PATH完全不一样——哪怕你装了xelatex,它也搜不到对应的路径。
下面给你几个靠谱的解决办法,按从简单到通用的顺序来:
方法1:直接给PATH添加xelatex的路径
首先先在终端里找到xelatex的绝对路径,运行:
which xelatex
你大概率会得到类似 /Library/TeX/texbin/xelatex 的结果(不同TeX发行版可能路径略有差异,比如MacTeX就是这个路径)。
然后在你的Automator shell脚本最开头加上这一行,把xelatex的路径加到PATH里:
export PATH="/Library/TeX/texbin:$PATH"
如果之前你还指定了Rscript和pandoc的路径,也可以一起合并到这行里,比如:
export PATH="/usr/local/bin:/Library/TeX/texbin:$PATH"
(把你找到的Rscript、pandoc的路径也放进去)
这样脚本后续执行时,就能找到所有需要的工具了。
方法2:导入终端的完整PATH环境变量
如果你不想一个个找路径,可以直接把终端里的完整PATH导入到Automator脚本里:
- 打开终端,运行
echo $PATH,复制输出的一长串路径内容 - 在Automator脚本的最开头添加:
export PATH="你复制的完整PATH内容:$PATH"
这样Automator的环境就和你平时用的终端完全一致,所有工具都能正常找到。
方法3:加载你的shell配置文件
如果你平时在终端里靠.zshrc或者.bash_profile配置PATH,那直接在脚本开头加载这个配置文件就行:
- 如果你用zsh(现在Mac默认是zsh):
source ~/.zshrc
- 如果你用bash:
source ~/.bash_profile
这样就能继承所有你在终端里的环境变量设置,一劳永逸解决工具找不到的问题。
额外注意点
- 确保Automator的「运行Shell脚本」动作里,选择的shell和你平时终端用的一致(比如/bin/zsh或者/bin/bash),在动作的下拉菜单里可以选。
- 测试前可以先在脚本里加一行
echo $PATH,运行Automator后看输出的PATH是否包含了xelatex的路径,方便排查问题。
内容的提问来源于stack exchange,提问作者Connor Cotton
相关产品推荐
相关产品推荐

