在块插图中生成 LaTeX 会导致显示的数学出现错误的中断

问题描述 投票:0回答:1

我有一个函数,

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)
```

enter image description here

但是,如果我尝试一个更复杂的示例,我会在小插图中显示的方程中出现严重中断。

```{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)
```

给予:

enter image description here

我认为问题与块的整个“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}
$$
matrix latex knitr
1个回答
0
投票

问题方程没有包含在

\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))
```

这给出了所需的结果:

Latex result of A x = b matrix equation

现在处于

matlib
包的开发版本中, https://friend.r-universe.dev/matlib

© www.soinside.com 2019 - 2024. All rights reserved.