LaTeX knitr 文档中动态文本的条件输出
Conditional output of dynamic text in a LaTeX knitr document
我想在 knitr LaTeX 文档 (.Rnw) 中打印几句话,但前提是存在一些数据。这些句子大部分是文本,但有一些 R。
示例:
A chi-squared test of your observed sizes has a p-value of
\Sexpr{format(calculated_chisq$p.value,digits=3,scientific=F)}.
A p-value below 0.05 means you should be concerned that your
groups are broken. The lower the p-value, the more worried you
should be.
我用 results='asis'
尝试了一个块,但我认为该块被解释为 R.
我用 R 尝试了 print()
和 paste()
。它很丑,但它有效。但是,它在其中添加了额外的文本,似乎与 R 提示相对应。
有什么好的方法吗?
This is related, but different. This 相同,但没有答案。
这个问题与 密切相关,但我认为不重复:那里接受的答案转化为一个丑陋的 \Sexp
怪物,里面有一个条件。代码既不好读也不好写。
也不适用,因为 1) asis
引擎不允许在文本中使用动态元素,以及 2) 因为 asis
的输出得到灰色背景RNW 文档中的颜色。
我建议采用以下解决方案:
\documentclass{article}
\begin{document}
<<>>=
x <- rnorm(1)
@
The value of $x$ is \Sexpr{x}.
<<echo=FALSE, results = "asis">>=
pattern <- "This will only be displayed if $x$ is positive. The value of $x$ is %.2f."
if (x > 0) cat(sprintf(pattern, x))
@
\end{document}
条件输出易于读写(pattern
),动态元素通过sprintf
插入。
我想在 knitr LaTeX 文档 (.Rnw) 中打印几句话,但前提是存在一些数据。这些句子大部分是文本,但有一些 R。
示例:
A chi-squared test of your observed sizes has a p-value of
\Sexpr{format(calculated_chisq$p.value,digits=3,scientific=F)}.
A p-value below 0.05 means you should be concerned that your
groups are broken. The lower the p-value, the more worried you
should be.
我用 results='asis'
尝试了一个块,但我认为该块被解释为 R.
我用 R 尝试了 print()
和 paste()
。它很丑,但它有效。但是,它在其中添加了额外的文本,似乎与 R 提示相对应。
有什么好的方法吗?
This is related, but different. This 相同,但没有答案。
这个问题与 \Sexp
怪物,里面有一个条件。代码既不好读也不好写。
asis
引擎不允许在文本中使用动态元素,以及 2) 因为 asis
的输出得到灰色背景RNW 文档中的颜色。
我建议采用以下解决方案:
\documentclass{article}
\begin{document}
<<>>=
x <- rnorm(1)
@
The value of $x$ is \Sexpr{x}.
<<echo=FALSE, results = "asis">>=
pattern <- "This will only be displayed if $x$ is positive. The value of $x$ is %.2f."
if (x > 0) cat(sprintf(pattern, x))
@
\end{document}
条件输出易于读写(pattern
),动态元素通过sprintf
插入。