我下载了最新版本的 Miktex Basic Installer (2.9.5105)。按照Miktex 的说明我开始研究Nicola Satori 的 Sweave 教程。
示例 1 的 R 部分运行良好,但是,当我编译 .tex 文件时,收到以下错误。
!Latex Error: 'Sweave.sty' not found
在花了数小时浏览众多论坛之后,我找到了我收到此错误的原因以及您收到此错误的可能原因。
以下回答是我最初想要的答案。欢迎添加评论和解释,但请记住,这些说明只是为了修复此错误并允许 Miktex 在调用 Sweave 包时正常运行。
答案1
触发此错误的原因可能是texmf
文件夹未正确映射到 Miktex 的根目录。由于Sweave.sty
位于的子目录中texmf
,因此 Miktex 永远找不到它。
Sweave.sty 是当前 R 下载的标准配置。
要正确将texmf
目录映射到 Miktex 的根目录,请仔细遵循这些说明。
- 在 R 中找到文件夹
texmf
内的目录share
。对我来说,路径是 C:\Program Files\R\R-3.0.2\share\texmf,但这可能会因用户而异 - 通过开始菜单或找到此可执行文件启动 Miktex 的选项
C:\Program Files (x86)\MiKTeX 2.9\miktex\bin\mo_admin.exe
。您也可以按照以下操作指示 - 点击“根”选项卡,然后单击“添加”
- 将文件夹路径映射到
texmf
您之前找到的路径。 - 如果您收到有关文件正在使用中的错误,请确保关闭所有打开的 TeXworks 会话。
- 单击“确定”即可。
正如我上面所说的,这是让您走出论坛并探索 Miktek 和 Sweave 的直接答案。
享受!
答案2
我有 Mac (OSx),但公认的解决方案对我来说不起作用。
对我来说,这是安装 mactex 的解决方案:https://tug.org/mactex/mactex-download.html
答案3
对于 Tex Live 用户,问题是类似的:Sweave.sty
通常不在使用的搜索路径上kpsewhich
,因此会产生相同的错误:!Latex Error: 'Sweave.sty' not found
。
根据“LaTeX/安装额外软件包”维基百科,这些额外材料的最佳存放位置是你的主目录,即~/texmf
。这是为了防止在更新 TeX 发行版(例如从 2019 更新到 2020)时丢失它们。
以下 bash 脚本应将典型 R 安装中的相关目录复制到此文件夹,然后更新 Tex 搜索树:
cp --recursive $(locate Sweave.sty | grep --only-matching .*texmf/) ~/
texhash
这里不需要,sudo texhash
因为我们正在更新搜索树的本地部分。我们可以通过检查 的输出来确认这已经起作用了kpsewhich
。(我已将我的主文件夹缩写为~
以下内容)。
~$ kpsewhich Sweave.sty
~/texmf/tex/latex/Sweave.sty
答案4
在 Mac 上,根据这建议。
- 打开一个包含您需要复制的 .sty 文件的文件夹(从 R 框架内):
cd /Library/Frameworks/R.framework/Resources/share/texmf/tex
open -a Finder latex
- 找到该文件夹后,抓取“Rd.sty”和“Sweave.sty”文件,使用 command-c 复制它们,然后打开粘贴所需的 LaTeX 文件夹。使用 command-v 进行粘贴。注意版本/年份文件夹(2011basic、2022、2023 等)。
cd /usr/local/texlive/2023/texmf-dist/tex/latex/
open -a Finder base
- 将这些 .sty 文件添加到 tex/latex/base/ 目录后,请确保运行命令
texhash
以更新 tex,以便它知道您刚刚添加的新 .sty 文件。
sudo texhash