【问题标题】:Use R/exams exams2pdf() to produce a PDF document使用 R/examsexams2pdf() 生成 PDF 文档
【发布时间】:2023-03-18 05:46:02
【问题描述】:

我是 R/exams 包的新手,我尝试从开发人员提供的模板之一生成 pdf 文档。 (http://www.R-exams.org/templates/confint3/)

我可以使用命令将 Rnw 文件编译成 HTML 文档

library("exams")
exams2html("confint3.Rnw")

调用函数时 exams2pdf("confint3.Rnw") 它给出了错误信息

! LaTeX Error: File `Sweave.sty' not found.

我已经安装了 Latex 并且一般使用它没有问题。我不明白:

  1. 我需要告诉exams2pdf()乳胶安装的位置吗?
  2. 我需要先定义一个模板(如plain.tex)吗?它应该是什么样子?
  3. 什么是我不明白的?

我查看了考试包的文档,安装并调用library("tinytex")后我也尝试了exams2pdf()

非常感谢您在哪里查看或做什么的任何帮助。谢谢!

小例子:

install.packages("exams")
install.packages("tth")
library("exams")

set.seed(1090)
exams2html("confint3.Rnw")
set.seed(1090)
exams2pdf("confint3.Rnw")

【问题讨论】:

  • 我在一个 Ubuntu 机器上,无法重现。我得到了一份不错的 pdf 文件。与 Mac 或 Windoze 机器相比,Linux 机器更可能从一开始就配备了 Latex 操作。感谢尝试创建一个运行示例,但 exams 包的安装过程也无法安装 tth 包。显然,包作者在他们的依赖项中错过了这个要求。
  • @AchimZeileis:由于包维护者有时是 SO 的贡献者,如果“SO-pin”没有引起他的注意,那么您可以使用包说明中的维护者信息:Achim.Zeileis在 R-project.org
  • 感谢@IRTFM 纠正我的问题和最小示例。我应该更准确地了解包依赖关系,对吧。据我了解,这不是错误消息的来源,我安装了第 tth 包。
  • 再次感谢@IRTFM,我想联系 Achim Zeileis 但我想先在这里发布我的问题。
  • 事实证明,'tth'-pkg 只需要第一个函数调用:exams2html 并且 Achim 意识到了这一点,因此在 Suggests 而不是 Imports 中只有 'tth',所以真的是我的错误,而不是他的。

标签: r r-exams


【解决方案1】:

很难根据所提供的信息来诊断究竟出了什么问题。在任何情况下,通过utils::texi2dvi()(未安装R包tinytex时的默认值)或tinytex::latexmk()(安装R包tinytex时的默认值)运行pdfLaTeX时都找不到@987654326 @R 基础系统提供的文件。我不清楚哪个 LaTeX 引擎在后台运行:MikTeX on Windows?

有几种策略可以解决这个问题:

  • 将 R 基础系统提供的 texmf 目录告诉您的 LaTeX 安装,以便无论您在系统的哪个位置调用 pdfLaTeX 都能找到它。
  • 使用不同的 LaTeX 安装,例如,通过 tinytex(R 包)安装 TinyTeX(LaTeX 发行版):tinytex::install_tinytex()。如果您实际上不是 LaTeX 用户并且只需要它来编译 PDF 考试,这可能会特别有吸引力。
  • 避免在自定义模板文件中使用Sweave.sty 文件,例如myplain.tex。本文末尾包含对此类文件的建议。

更多细节在此线程中讨论:https://tex.stackexchange.com/questions/153193/latex-error-sweave-sty-not-found

关于你的三个问题:

  1. 如上所述:exams2pdf() 利用 utils::texi2dvi()tinytex::latexmk()。所以这些需要了解 LaTeX 的安装——但这似乎是事实。他们只是找不到 base R 提供的texmf
  2. 您不应该必须这样做,但它肯定是您可以使用的选项。作为起点,运行exams_skeleton(markup = "latex", writer = "exams2pdf")。除此之外,这会创建一个templates 文件夹,您可以在其中放置myplain.tex 模板。
  3. 正如我上面所说,很难用所提供的信息来回答这个问题。希望这里提供的线索之一能让您向前迈出几步。

myplain.tex的内容:

\documentclass[a4paper]{article}

\usepackage[utf8]{inputenc}
\usepackage{a4wide,graphicx,color,verbatim,url,fancyvrb,ae,amsmath,amssymb,booktabs,longtable,eurosym}
\newenvironment{question}{\item \textbf{Problem}\newline}{}
\newenvironment{solution}{\textbf{Solution}\newline}{}
\newenvironment{answerlist}{\renewcommand{\labelenumi}{(\alph{enumi})}\begin{enumerate}}{\end{enumerate}}
\providecommand{\tightlist}{\setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}}

\setkeys{Gin}{keepaspectratio}

\DefineVerbatimEnvironment{Sinput}{Verbatim}{fontshape=sl}
\DefineVerbatimEnvironment{Soutput}{Verbatim}{}
\DefineVerbatimEnvironment{Scode}{Verbatim}{fontshape=sl}
\newenvironment{Schunk}{}{}

\begin{document}
\begin{enumerate}
%% \exinput{exercises}
\end{enumerate}
\end{document}

【讨论】:

  • 亲爱的@Achim Zeileis!感谢您立即回复并格式化我的问题。我忘了提到我在 Mac OS 上使用 MacTeX。多年来,我在研究和教学中广泛使用 R 和 Latex,并且我已经查看了您提供给我的链接,谢谢。我不确定它是否能解决我的问题,但我会查看您的所有其他建议。
  • @IRTFM 感谢您对此的支持。关于tth 安装的问题:我需要更多细节来说明这一点。请随时通过电子邮件报告此情况或在其他地方发布详细信息。
  • @n.small 在这种情况下,我建议安装 TinyTeX 发行版。相反,作为一种短期解决方法,您可以使用自己的 LaTeX 模板(例如我发布的 myplain.tex)。此外,我建议解决无法找到Sweave.sty 的问题。可能上面链接的讨论中用户 chan1142 的建议可能对您有用...
  • 谢谢@Achim Zeileis。您提供的 tex-Template 将其放入我的 R 工作目录后解决了我的问题。我仍然知道这是一种解决方法,我还没有掌握我的问题的复杂性,但现在我能够为您的一个模板生成一系列随机版本。
  • 好的,很好!关于 RStudio 中的 Weave 选项设置。这些会影响 RStudio 中的编织/编织按钮,但不会影响其他包的行为。在 R/exams 中,默认情况下对 .Rnw 文件使用 Sweave() 以保持依赖关系简单,因为大多数考试通常不需要 knitr 的扩展功能。但是,您可以在exams2pdf() 中设置engine = "knitr"。尽管如此,这仍然会调用knitr::render_sweave() 兼容性选项。
猜你喜欢
  • 2011-02-14
  • 1970-01-01
  • 2011-03-14
  • 2018-10-04
  • 1970-01-01
  • 1970-01-01
  • 2011-06-29
  • 2013-06-05
  • 2020-08-09
相关资源
最近更新 更多