rmarkdown: pandoc: 找不到 pdflatex

79

当我在我的 Mac 上使用 render{rmarkdown} 从 .Rmd 文件生成 pdf 文件时,出现错误信息:

pandoc: pdflatex not found. pdflatex is needed for pdf output. Error: pandoc document conversion failed

然而,当我检查时:

pdflatex -v

我得到了

pdfTeX 3.1415926-2.4-1.40.13 (TeX Live 2012)
kpathsea version 6.1.0
Copyright 2012 Peter Breitenlohner (eTeX)/Han The Thanh (pdfTeX).
There is NO warranty.  Redistribution of this software is
covered by the terms of both the pdfTeX copyright and
the Lesser GNU General Public License.
For more information about these matters, see the file
named COPYING and the pdfTeX source.
Primary author of pdfTeX: Peter Breitenlohner (eTeX)/Han The Thanh (pdfTeX).
Compiled with libpng 1.5.10; using libpng 1.5.10
Compiled with zlib 1.2.7; using zlib 1.2.7
Compiled with xpdf version 3.03

我已经在我的计算机上安装了pdflatex。

请问有谁能告诉我如何告诉R在哪里找到pdflatex呢?

非常感谢!


你在安装 pdflatex 后是否重新启动了 R? - daroczig
是的,我试过了。还是不行。 - askming
8个回答

67

对于使用 Ubuntu 的用户,如果在这里遇到困难,更好的选择是使用以下方法(因为它只有原文件大小的1/5):

sudo apt-get install texlive-latex-base

我是通过https://tex.stackexchange.com/a/128309找到的。


我也需要texlive-latex-extra软件包。 - Amith

36

这个TexExchange上的回答可能会有所帮助

我发现在升级到OS X Mavericks后,我使用pdflatex时会出现问题(例如,在RStudio中检查软件包构建时,我收到了error tools::texi2pdf pdflatex missing的消息)。

  1. 检查/usr/texbin是否存在。
    在终端输入:

  2. cd /usr/texbin
    
    如果出现“找不到文件或目录”的错误,那么你需要创建一个符号链接到你的安装程序的 texbin 目录。我的在 /Library/TeX/Distributions/.DefaultTeX/Contents/Programs/texbin
    在终端中执行:
    ln -s /Library/TeX/Distributions/.DefaultTeX/Contents/Programs/texbin /usr/texbin
    
  3. 在终端中,检查echo $PATH的结果。确保/usr/texbin存在。如果不存在,则需要将/usr/texbin添加到您的PATH变量中。

如果你发现自己不得不玩弄PATH变量,安装最新版本的MacTex可能是一个更好的解决方案。

更新:OS X 10.11 El Capitan不再允许对/usr进行写入,因此在该系统上,MacTeX的最新版本(2015)现在会将链接写入/Library/TeX/texbin而不是/usr/texbin


这个非常方便的链接中的第8节 - 您无需安装更新版本的mactex。 - James Owers
3
需要说明的是,在进行符号链接后需要重新启动R-Studio。 - Anders Larsen

25
对于那些使用Dunk的答案(对于使用UBUNTU的人)而遇到 Font <font> at <size> not loadable: Metric (TFM) file not found.错误的用户,你还需要:
sudo apt-get install texlive-fonts-recommended texlive-latex-recommended

不幸的是,这会显着增加texlive安装包的大小,但它仍然只有安装texlive-latex-extra的一半大小。


你应该建议修改那个答案,而不是将你的评论写成一个新的“答案”。 - Martin Tournoij
2
@Carpetsmoker 我不会感到惊讶,如果这样的编辑实际上被拒绝了。无论如何,它确实扩展了解决面临的问题之一的解决方案。 - Zizouz212
4
通过在apt-get install命令中添加--no-install-recommends参数,可以显著缩小软件包的安装规模。例如,为了让rmarkdown支持PDF渲染,我安装了下面这些软件包,其大小约为300MB:apt-get -y --no-install-recommends install texlive-latex-base texlive-fonts-recommended texlive-latex-extra lmodern - Leo

16
这可能会有点帮助,以防你还没有安装任何LaTeX相关的东西。
env: macOS Sierra
1. 从https://tex.stackexchange.com/questions/307483/setting-up-basictex-homebrew中获取
`brew cask install basictex`
2. 现在你需要找出pdflatex藏在哪里...
(env) jluc@texbin$ pwd
/Library/TeX/texbin
(env) jluc@texbin$ ls | grep pdfla
lrwxr-xr-x   1 user  wheel         6 13 Mar 10:36 pdflatex -> pdftex
(env) jluc@texbin$ ls /Library/TeX/texbin/pdflatex
lrwxr-xr-x  1 user  wheel  6 13 Mar 10:36 /Library/TeX/texbin/pdflatex -> pdftex
/Library/TeX/texbin/pdflatex 是我们需要的,你不能引用 pdftex 的符号链接和/或使用 realpath,因为 pandoc 特别希望看到 pdflatex
  1. 更新你的命令行以指向适当的文件。

pandoc myfile.md --to=pdf -t latex -o myfile.pdf --latex-engine=/Library/TeX/texbin/pdflatex


15

对于因为在他们的Linux发行版中出现相同错误而被困在这里的人。例如,在Ubuntu中安装pdflatex。

sudo apt-get install texlive-latex-extra

这太多的软件了,但是比如 knitr(rmarkdown-pdf-compilation)需要。


6
截至2020年(MacOS Catalina),JL Peyret的回答是最适用的。应稍作更新,因为pandoc中的--latex-engine选项已被弃用,推荐使用新的--pdf-engine选项:
$ brew install --cask basictex
$ pandoc myfile.md --to=pdf -t latex -o myfile.pdf --pdf-engine=/Library/TeX/texbin/pdflatex

4
不得不执行brew install --cask basictex,因为"Calling brew cask install is disabled! Use brew install [--cask] instead." - Kenzo

0

对于其他寻找不需要添加或安装更多软件包的可能解决方案的人,您可以尝试以下方法:

在您的控制台上:

set PDFLATEX=C:\Users\your_username\AppData\Local\Programs\MiKTeX\miktex\bin\x64\pdflatex

set MAKEINDEX=C:\Users\your_username\AppData\Local\Programs\MiKTeX\miktex\bin\x64\makeindex

这些环境变量的定义明确地提供了生成文档PDF所需的两个可执行文件的访问权限。


0

我曾经遇到过类似的问题,无法编织PDF文件,但通过在控制台中安装和运行tinitex软件包,解决了这个问题,而不是在终端中执行命令。

enter code here

install.packages("tinytex")

tinytex::install_tinytex()


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接