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
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.