我有一个函数,
symbolicMatrix
在matlib
包中,https://friend.github.io/matlib/
它为矩阵创建了 LaTeX,
https://friend.github.io/matlib/reference/symbolicMatrix.html,
例如,
> symbolicMatrix("a", nrow = "m", ncol="n", matrix="bmatrix")
\begin{bmatrix}
a_{11} & a_{12} & \cdots & a_{1n} \\
a_{21} & a_{22} & \cdots & a_{2n} \\
\vdots & \vdots & & \vdots \\
a_{m1} & a_{m2} & \cdots & a_{mn} \\
\end{bmatrix}
它在一个简单的块中工作得很好 - 这使得产品 A x 很好地显示:
```{r symbMat, results='asis', echo=FALSE}
symbolicMatrix("a", nrow = "m", ncol="n", matrix="bmatrix")
symbolicMatrix("x", nrow = "n", ncol=1)
```
但是,如果我尝试一个更复杂的示例,我会在小插图中显示的方程中出现严重中断。
```{r symbMat, results='asis', echo=FALSE}
symbolicMatrix("a", nrow = "m", ncol="n", matrix="bmatrix")
symbolicMatrix("x", nrow = "n", ncol=1)
cat("\\quad=\\quad")
symbolicMatrix("b", nrow = "m", ncol=1)
```
给予:
我认为问题与块的整个“asis”输出不被视为显示数学有关,但我不知道如何更改函数或调用以使其正确渲染。
有一些我忽略的
knitr
魔法吗?
需要明确的是,以下显示数学在小插图中运行良好,这正是控制台上显示的块代码的输出结果:
$$
\begin{bmatrix}
a_{11} & a_{12} & \cdots & a_{1n} \\
a_{21} & a_{22} & \cdots & a_{2n} \\
\vdots & \vdots & & \vdots \\
a_{m1} & a_{m2} & \cdots & a_{mn} \\
\end{bmatrix}
\begin{pmatrix}
x_{1} \\
x_{2} \\
\vdots \\
x_{n} \\
\end{pmatrix}
\quad=\quad
\begin{pmatrix}
b_{1} \\
b_{2} \\
\vdots \\
b_{m} \\
\end{pmatrix}
$$
问题是方程没有包含在
\begin{equation} ... \end{equation}
或$$ .. $$
中。
我编写了一个包装函数,
Eqn()
来处理这个问题,现在我的测试用例看起来像这样作为代码块
```{r symbMat, results='asis'}
Eqn(symbolicMatrix("a", nrow = "m", ncol="n", matrix="bmatrix"),
symbolicMatrix("x", nrow = "n", ncol=1),
cat("\\quad=\\quad"),
symbolicMatrix("b", nrow = "m", ncol=1))
```
这给出了所需的结果:
现在处于
matlib
包的开发版本中,
https://friend.r-universe.dev/matlib