Knitr: R code within LaTeX environment in a Markdown document

前端 未结 1 1143
滥情空心
滥情空心 2021-02-03 13:03

I have a document in Markdown, which incorporates R code via Knitr. For rendering equations I use LaTeX, simply writing its commands in the text. Say I have the fol

1条回答
  •  余生分开走
    2021-02-03 13:05

    This is because your matrix2latex function uses cat and sends its output to the standard output stream, which isn't where knitr is trying to put the output.

    Two solutions: one is to rewrite your function to construct the output as a string using paste and sprintf or other string formatting functions, or as a quick hack just wrap it in capture.output thus:

    m2l = function(matr){capture.output(matrix2latex(matr))}
    

    Then in your .Rmd file:

    \begin{displaymath}
    \mathbf{X} = `r m2l(x)`
    \end{displaymath}
    

    becomes

    \mathbf{X} = \begin{bmatrix} , 0.06099 & 0.768 \\ , 0.6112 & 0.004696 \\ , 0.02729 & 0.6198 \\ , 0.8498 & 0.3308 \\ , 0.6869 & 0.103 \\ , \end{bmatrix}
    

    which although isn't quite perfect does illustrate the principle. The code inserted by the inline expression is the value of it, not what it prints or cats.

    0 讨论(0)
提交回复
热议问题