如何在四开中将 semTable 渲染为 docx 格式?

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

我试图在四开本文档中包含一些使用 lavaan 的结构方程模型的结果。我需要渲染为 docx 格式,以便不使用 quarto 或 rmarkdown 的同事可以编辑它。

我正在使用 semTable 包来生成格式化结果。渲染为 pdf 时一切正常。但这些表格没有出现在 docx 文件中。

我发现在 YAML 中添加

filters: parse-latex
可以让乳胶代码被这样读取。 semTable 返回乳胶代码。但我无法让四开本识别它。 (顺便说一句,我不知道
parse-latex
选项是否有必要,但我事先使用 quarto install extension tarleb/parse-latex
https://github.com/tarleb/parse-latex
下载了 Parse LaTeX - 一个 Lua 过滤器。 )

这是一个最小的工作示例,应该在新的四开文档中工作(假设 Parse LaTeX - 不需要 Lua 过滤器包):

---
title: "Minimal working example"
format: docx
filters: 
  - parse-latex
execute: 
  echo: true
---

If I do this I get a latex table: 

```{=latex}
\begin{table}
\begin{tabular}{l l}
1 & 2 \\
3 & 4
\end{tabular}
\caption{A Table}
\end{table}
```

This code produces input for a latex table

```{r}
library(tibble)
library(lavaan)
library(semTable)

df <- tibble(x = rnorm(100),
             y = 0.5 * x + rnorm(100))

m1 <- "y ~ x"
m1.fit <- lavaan::sem(m1, data = df)

semTable::semTable(m1.fit, type = "latex")
```

But I can't pass it to a latex chunk to be parsed: 

```{=latex}
semTable::semTable(m1.fit, type = "latex")
```

如何获取结果并使 Quarto 将其识别为乳胶代码,以便我可以将其打包成

{=latex}
块?

也可能很重要:我尝试使用

#| output: asis
但这也不起作用。

latex r-markdown docx quarto
1个回答
0
投票

docx 似乎无法转换该函数生成的所有乳胶代码。使用

results='asis'
理论上是完全正确的。您可以使用
kableExtra
代替,它在 Docx 中效果更好,例如

```{r results='asis'}
lavaan::sem(m1, data = df) |> broom::tidy() |> kableExtra::kbl(format = "latex")
```

比较 semtable 生成的代码:

\begin{tabular}{@{}r*{4}{S[
                         input-symbols = ( ) +,
                         group-digits = false,
                         table-number-alignment = center,
                         %table-space-text-pre = (,
                         table-align-text-pre = false,
                         table-align-text-post = false,
                         table-space-text-post = {***},
                         parse-units = false]}@{}}
& \multicolumn{4}{c}{Model}\tabularnewline \hline

对比kableExtra 制作的一款:

\begin{tabular}[t]{l|l|r|r|r|r|r|r|r}
\hline
term & op & estimate & std.error & statistic & p.value & std.lv & std.all & std.nox\\
\hline
y \textasciitilde{} x & \textasciitilde{} & 0.4697298 & 0.1110110 & 4.231382 & 2.32e-05 & 0.4697298 & 0.3896878 & 0.3934721\\
\hline
y \textasciitilde{}\textasciitilde{} y & \textasciitilde{}\textasciitilde{} & 1.2087534 & 0.1709435 & 7.071068 & 0.00e+00 & 1.2087534 & 0.8481434 & 0.8481434\\
\hline
x \textasciitilde{}\textasciitilde{} x & \textasciitilde{}\textasciitilde{} & 0.9808574 & 0.0000000 & NA & NA & 0.9808574 & 1.0000000 & 0.9808574\\
\hline
\end{tabular}
© www.soinside.com 2019 - 2024. All rights reserved.