遵循 .Rnw 在 RStudio 中运行良好,但在 LyX 中会引发错误

遵循 .Rnw 在 RStudio 中运行良好,但在 LyX 中会引发错误

.Rnw可以很好地编译RStudio Version 0.99.862

\documentclass{book}
\usepackage{Rd} % Rstudio will be able to find this .sty file

\begin{document}

<<label=Test, echo=FALSE, results='asis'>>=
library(noamtools)
help_console(topic="mean", format = "latex")
@ 

\end{document}

但是,将其导入.RnwLyX Version 2.1.4引发以下错误Ubuntu 14.0.2

LaTeX Error: File `Rd.sty' not found.

在此处输入图片描述 任何帮助都将不胜感激。谢谢

Rnoamtools可以通过以下方式安装devtools::install_github('noamross/noamtools')

答案1

这里的问题是 RStudio 知道在哪里寻找Rd.sty,这不是加拿大运输安全局因此不是 TeX Live 的一部分。(Rd.sty它是随基础 R 包和二进制文件一起分发的,但据我所知不包含在任何 TeX 分发版中。)

TeX Live 默认配置为仅查看某些地方用于 TeX 内容。该链接提供了有关这些预定义 texmf 树的更多信息。LyX 建立在 TeX 发行版之上,因此它只知道在 TeX 发行版告诉它查找文件的位置进行查找。

可以更改 TeX 发行版将搜索的位置,这实际上是本文要讨论的内容问题,几乎重复。

但是,我建议对该问题采取一种与链接问题及其答案中讨论的解决方案不同的解决方案。

TeX Live 实际上提供了两个现成的 texmf 树,用于本地文件。这些 texmf 树由 TeX Live 变量 TEXMFLOCAL 和 TEXMFHOME 指定,这些变量将在下文中详细讨论这里。在这种情况下,我建议使用 TEXMFHOME 树,因为安装新版本的 TeX Live 时会覆盖 TEXMFLOCAL 文件夹。(请注意,使用 TEXMFLOCAL 实际上有优势,如果您点击链接,将会讨论这些优势。鉴于它自Rd.sty诞生以来一直未进入 CTAN 和 TeX Live,我认为它不太可能进入 CTAN 和 TeX Live。在这种情况下,安装到 TEXMFLOCAL 的优势(如果您点击链接,将会讨论这些优势)被提出;安装到 TEXMFHOME 更有意义Rd.sty。)

要“安装”Rd.sty到 TEXMFHOME,只需创建一个符号链接(symlink)Rd.sty您计算机上的任何位置到您的 TEXMFHOME 文件夹。

如果你还没有创建 TEXMFHOME 文件夹(另请参阅我应该将自己的 .sty 或 .cls 文件放在哪里,以使它们可供我的所有 .tex 文件使用?),您可以执行以下操作,这将设置一个基本的 texmf 树,该树应该涵盖大多数用例和需求(当然,在最大程度上符合 TDS 的目录中还有更多目录)。

mkdir -p $(kpsewhich -var-value=TEXMFHOME)/{doc,generic,scripts,source} && \
mkdir -p $(kpsewhich -var-value=TEXMFHOME)/bibtex/{bib,bst} && \
mkdir -p $(kpsewhich -var-value=TEXMFHOME)/fonts/{afm,map,misc,pk,source,tfm,type1} && \
mkdir -p $(kpsewhich -var-value=TEXMFHOME)/tex/{context,generic,latex,plain,xelatex,xetex} && \
mkdir -p $(kpsewhich -var-value=TEXMFHOME)/tex/latex/biblatex/{bbx,cbx}

现在您已经设置了 TEXMFHOME 文件夹,您可以符号链接Rd.sty到适当的位置。

如果你使用的是 Mac OS X,Rd.sty则应该位于:

/Library/Frameworks/R.framework/Resources/share/texmf/tex/latex/Rd.sty

在我的 Ubuntu 14.04 机器上,Rd.sty位于:

/usr/share/texmf/tex/latex/R/tex/latex/Rd.sty 

您可能希望在尝试将其符号链接到 TEXMFHOME 之前检查该文件确实存在,您可以通过运行来执行此操作:

[ -f /usr/share/texmf/tex/latex/R/tex/latex/Rd.sty ] && ln -s /usr/share/texmf/tex/latex/R/tex/latex/Rd.sty $(kpsewhich -var-value=TEXMFHOME)/tex/latex/ || echo 'File does not exist'

相关内容