【问题标题】:Trying to render R4DS to pdf尝试将 R4DS 渲染为 pdf
【发布时间】:2021-09-06 09:14:09
【问题描述】:

当我尝试渲染最新版本的 R for Data Science (R4DS) 一书时,我得到了 LaTeX 编译,然后被以下错误消息阻止。

! Text line contains an invalid character.
l.406 #> -- ^^[
               [1mAttaching packages^^[[22m --------------------------------...

Error: LaTeX failed to compile _main.tex. See https://yihui.org/tinytex/r/#debugging for debugging tips. See _main.log for more info.
>

这对应于 R4DS 书中向我们展示如何加载 tidyverse 的部分,查看 _main.tex 文件,我看到许多行从这一行开始看起来像 ANSI 转义序列。它们的形式为 ^[[1m、^[[22m,等等。我使用 lualatex 手动编译了 LaTeX 输出,发现整本书中有几十个甚至数百个这样的例子。我怀疑这是因为我在 R 中使用了 colorout 包,但似乎该包是必需的,所以其他成功渲染的人也必须使用它。我相信我已经成功更新了所有相关的包。

【问题讨论】:

  • 您为什么认为colorout 是必需的?我在 R4DS 源代码中没有看到任何对它的引用。这些转义似乎确实是一个问题,不应该与乳胶输出一起使用。
  • 为了回答您的问题,我认为colorout 是必需的,因为当我从.Rprofile 文件中删除它时,我在输出中看到一条消息,上面写着“正在加载所需的包颜色输出”。但是,在您发表评论后,我再次删除了colorout 并没有看到这样的消息。但是,我仍然得到 ANSI 转义码。在 RStudio 中,我选择了 Preferences > Console > Remove ANSI codes,但 ANSI 代码仍在输出中。如果我能阻止插入ANSI代码,我相信问题会得到解决。

标签: r latex r-markdown tidyverse knitr


【解决方案1】:

看起来我通过将_common.R 文件中的选项从crayon.enabled=TRUE 更改为crayon.enabled=FALSE 来“解决”了这个问题。这从书中删除了 ANSI 转义序列。以前我曾尝试在我的 R 会话中设置 options(crayon.enabled=FALSE),但这显然被 _common.R 中的设置覆盖。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-02-16
    • 1970-01-01
    • 2014-09-02
    • 2018-02-20
    • 1970-01-01
    • 1970-01-01
    • 2015-02-26
    • 2016-10-18
    相关资源
    最近更新 更多