【问题标题】:Displaying <<..>>= in output在输出中显示 <<..>>=
【发布时间】:2012-11-12 13:48:15
【问题描述】:

我想在 LaTeX 文档中演示带有 knitr >= 序言的 R 代码示例。这是我想要的输出示例:

它必须很简单 - 但我错过了一些东西。我检查了文档并扫描了堆栈溢出 - 但没有运气。这是一个 MWE:

    \documentclass{article}
    \begin{document}
    <<mychunk, cache=TRUE, eval=FALSE, dpi=100>>=
    "hello world" 
    @
    \end{document}

建议?我尝试在 LaTex 中缩进代码并包装在 verbatim 块中,但只出现错误。

【问题讨论】:

  • 逐字环境有帮助吗?
  • @Lustrik - 我试过 \begin{verbatim} ... \end{verbatim} 并得到了乳胶编译错误。
  • 那是因为它仍在编译内联 knitr 代码,因此尝试在逐字环境中启动逐字环境

标签: r knitr


【解决方案1】:

我刚刚查看了 knitr 的手册。包作者是这样解决问题的:

<<use-ext-chunk, echo=FALSE, comment=NA>>=
cat('<<Q1, echo=TRUE, tidy=TRUE>>=','@',sep='\n')
@

产生如 knitr manual 第 9 页所示的输出

这是一个最小的例子:

\documentclass[a4paper]{article}
\begin{document}


<<use-ext-chunk, echo=FALSE, comment=NA>>=
  cat('<<Q1, echo=TRUE, tidy=TRUE>>=','@',sep='\n')
@

\end{document}

产生附加输出。

【讨论】:

  • 谢谢!我不知道在哪里可以看到 Knitr 作者是如何做到的。我相信我会提出一个新的块选项,比如display.wrapper=TRUE,这样原来的块选项也会嵌入到输出中。
  • 这是一个很好的建议,易慧真的很有帮助,并且乐于接受新的想法。所以只要让他知道他的想法。
  • @JohnLeonard 我非常喜欢这个提议,我自己也觉得在教程中写&lt;&lt;&gt;&gt;= 很痛苦!
  • @Yihui - 我将问题作为提案添加到 Github knitr 存储库。
【解决方案2】:

一年前我在 tex.stackexchange.com 上遇到过同样的问题,并得到了一些不错的回复:https://tex.stackexchange.com/q/35485/3419。这适用于Sweave,但我认为它在knitr 中也可以使用。

我想我最终只是在逐字环境中使用\Sexpr{"&lt;&lt;&gt;&gt;="}\Sexpr{"@"}。例如:

\documentclass{article}
\begin{document}
\begin{verbatim}
\Sexpr{"<<mychunk, cache=TRUE, eval=FALSE, dpi=100>>="}
"hello world" 
\Sexpr{"@"}
\end{verbatim}
\end{document}

【讨论】:

  • 这是一个可行的解决方案 - 但对于 Sweave 而不是 Knitr。 Knitr 没有实例化 \Sexpr 环境。谢谢!
  • @SachaEpskamp 我刚刚发明了一种邪恶的方法,只需包含一个几乎是白色的大页面,就可以将其他答案进一步向下移动。不是故意在这里完成的,所以我希望你能原谅我;-) 顺便说一句:我将为该解决方案申请专利,所以请不要复制......
  • @JohnLeonard 我刚刚尝试了上面的示例,它也适用于 knitr。
【解决方案3】:

快速跟进:此功能已在knitr (devel version >= 0.8.15) 中实现;查看RnwRmd 的示例。另一个解决方案是knitr FAQ

【讨论】:

    猜你喜欢
    • 2019-10-06
    • 2021-02-26
    • 2018-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-04
    相关资源
    最近更新 更多