如何教 latex 找到 Sweave.sty?

如何教 latex 找到 Sweave.sty?

我在 XUbuntu 12.04 上工作,并且安装了R 2.15。由于包管理器只提供 TeX Live 2009,因此我使用以下命令在 XUbuntu 上安装 TeX Live 2011:

  1. 下载install-tl-unx.tar.gz通过互联网安装 TeX Live
  2. tar -xzf install-tl-unx.tar.gz
  3. sudo ./install-tl# 看TeX Live - 快速安装(点击“I”)
  4. 将新安装的版本添加到PATH(在.profile):

    PATH=/usr/local/texlive/2011/bin/x86_64-linux:$PATH
    

每当我编写.tex包含以下内容的文档时\usepackage{Sweave},我都会获得

ERROR: LaTeX Error: File 'Sweave.sty' not found.

通常,人们使用符号链接来教导(pdf)latex(实际上,latexmk就我而言)在哪里可以找到Sweave.sty。我做了以下事情:

cd /usr/local/texlive/2011/texmf/tex/latex # that's the tex tree obtained by kpsewhich -var-value TEXMFMAIN
sudo ln -s /usr/share/R/share/texmf Sweave

Sweave我还创建了一个名为in /usr/share/texmf/tex/latex(via )的链接sudo ln -s /usr/share/R/share/texmf Sweave。在这两种情况下,我仍然发现Sweave.sty未找到该链接(即使在reboot/texhash... 之后)。

我怎么知道pdflatex在哪里可以找到Sweave.sty

如果您需要有关我的设置R等的更多信息,请告诉我。

最终解决方案

Sweave.sty艾伦的以下回答完全正确。找不到的原因/usr/local/texlive/texmf-local/tex/latex是我通过安装了 TeXLive 2011 sudo,所以我还必须执行mktexlsrvia sudo。 问题是(参见sudo which mktexlsrvs which mktexlsrsudo mktexlsr只更新了老的(2009)TeXLive tex 树。我找到了两篇专门讨论这个问题的帖子(http://compgroups.net/comp.text.tex/texlive-not-searching-texmflocal/266185 和http://ubuntuforums.org/showthread.php?t=1843563)。最终的解决方案是sudo chown -R myuser:myuser /usr/local/texlive。然后,只需使用mktexlsr(不带sudo)即可更新新的(2011)TeXLive tex 树。然后,Sweave.sty正如 Alan 所述,发现 。

答案1

找不到您的链接的原因是,对主 texmf 树的添加需要使用 来更新 ls-R 数据库mktexlsr。但是,Linux 系统上本地添加的通常位置是~/texmf。如果您将符号链接放在 中~/texmf/tex/latex,则无需执行任何其他操作即可找到它。

您不应该将文件放置在任何.../texlive/<year>目录中,因为它们是实际的分发文件,并且可能会被更新覆盖。

如果您确实需要系统范围的本地添加(针对多个用户),您可以将它们放入/usr/local/texlive/texmf-local。如果您将东西放在这里,您必须运行sudo mktexlsr以重建 ls-R 数据库。

答案2

我没有资格发表评论,但想为后人补充一点:

如果在上面您想要mktexlsr使用 sudo 运行 2011,那么您可以做的是(也可以使用 tlmgr 进行更新,如果您有旧的安装,则会出现同样的问题)是 cd 进入文件../2012/bin/x86_64-linux夹并直接从那里执行二进制文件。

因此你会看到类似这样的内容:

/usr/local/texlive/2012/bin/x86_64-linux $ sudo ./mktexlsr

或者

/usr/local/texlive/2012/bin/x86_64-linux $ sudo ./tlmgr

(就我而言,我安装了 2011 和 2011,因此有上面的文件夹名称)。

相关内容