我想把Iv.tex换成test.rmd,然后作为word_document出口.

一百零二

My question: How to have the same result in both 100 and 101?有关其他信息,请参阅下面的内容.谢谢.

下面的Word_test.rmd将编译为.docx,但不会显示该表.我试过了:1.\input,2.=latex.它们都不管用.请参见下面的输出图像和代码

Word_test.rmd

word_text.docx output image here

---
title: "word_test"
output: "word_document"
date: '2022-08-09'
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```

## Test Tables with `input`

\input{"Iv.tex"}


## Test Tables with `=latex`

```{=latex}
\include{"Iv.tex"}
```

虽然相同的代码在其输出为pdf_document的情况下确实会产生所需的结果,但请参见下面的图像和代码.

Pdf_test.rmd

Pdf_test.rmd output image here

---
title: "pdf_test"
output: "pdf_document"
date: '2022-08-09'
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```

## Test Tables with `input`

\input{"Iv.tex"}


## Test Tables with `=latex`

```{=latex}
\input{"Iv.tex"}
```

Iv.tex

Iv.tex是一个表格,见下文.

\begin{table}[htbp]\centering\scriptsize    
  \def\sym#1{\ifmmode^{#1}\else\(^{#1}\)\fi}
  \caption{myTable\label{tab:mlogit}}
  \begin{tabular}{l*{9}{c}}
  \hline\hline
                      &\multicolumn{1}{c}{(1)}&\multicolumn{1}{c}{(2)}&\multicolumn{1}{c}{(3)}&\multicolumn{1}{c}{(4)}&\multicolumn{1}{c}{(5)}&\multicolumn{1}{c}{(6)}&\multicolumn{1}{c}{(7)}&\multicolumn{1}{c}{(8)}&\multicolumn{1}{c}{(9)}\\
                    %  &\multicolumn{1}{c}{lexpenditure}&\multicolumn{1}{c}{Poverty}&\multicolumn{1}{c}{Dummy for multidimensional poverty index (k=0.33)}&\multicolumn{1}{c}{lexpenditure}&\multicolumn{1}{c}{Poverty}&\multicolumn{1}{c}{Dummy for multidimensional poverty index (k=0.33)}&\multicolumn{1}{c}{lexpenditure}&\multicolumn{1}{c}{Poverty}&\multicolumn{1}{c}{Dummy for multidimensional poverty index (k=0.33)}\\
  \hline
  var1    &      0.000\sym{***}&    5e-15\sym{***}&    -0.00551         &      -0.000\sym{***}&   5e-15\sym{***}&       0.000\sym{***}&      -0.000\sym{***}&    5e-15\sym{***}&       0.000\sym{***}\\
                      &   (0.000)         &  (5e-15)         &   (0.000)         &    (0.000)         &  (5e-15)         &    (0.000)         &    (0.000)         &  (5e-15)         &    (0.000)         \\
  var2  &      0.000\sym{***}&   5e-15\sym{**} &      -0.000\sym{***}&       0.000\sym{***}&    5e-15\sym{***}&      -0.000\sym{***}&       0.000\sym{***}&   5e-15         &      -0.000\sym{***}\\
                      &   (0.000)         &  (5e-15)         &    (0.000)         &    (0.000)         &  (5e-15)         &     (0.000)         &    (0.000)         &  (5e-15)         &     (0.000)         \\
  var3     &      0.000\sym{***}&    5e-15\sym{***}&     -0.000\sym{***}&      -0.122         &    5e-15         &       0.174         &      -0.135         &   5e-15\sym{***}&       0.235         \\
                      &    (0.000)         &  (5e-15)         &    (0.000)         &     (0.000)         &  (5e-15)         &     (0.000)         &     (0.000)         &  (5e-15)         &     (0.000)         \\
  var4          &      0.000\sym{***}&   5e-15\sym{**} &     -0.000\sym{***}&       0.000\sym{***}&   5e-15\sym{***}&      -0.000\sym{***}&       0.000\sym{***}&    5e-15\sym{***}&      -0.000\sym{***}\\
                      &    (0.000)         &  (5e-15)         &    (0.000)         &    (0.000)         &  (5e-15)         &    (0.000)         &    (0.000)         &  (5e-15)         &    (0.000)         \\
  \hline
  Observations        &       999         &       999         &       999         &       999         &       999         &       999         &       999         &       999         &       999         \\
  \hline\hline
  \multicolumn{10}{l}{\footnotesize Standard errors in parentheses}\\
  \multicolumn{10}{l}{\footnotesize \sym{*} \(p<0.05\), \sym{**} \(p<0.01\), \sym{***} \(p<0.001\)}\\
  \end{tabular}
  \end{table}

推荐答案

原始代码片断背后的 idea 是,它允许包含一些不适用于其他格式的额外内容.因此,正常情况下,R Markdown不会接触这些代码段,而是传递它们,但仅当输出格式匹配时才传递它们.这就是为什么表格以PDF格式显示,而不是Docx格式.

Rmarkdown 非常灵活,所以我们可以修改它的行为.这里最好的方法是在转到不支持LaTeX片段的格式时使用Lua filter来解析LaTeX代码.

将以下代码保存到文件parse-latex.lua,并将其放在与.Rmd文件相同的目录中.

if FORMAT == 'latex' then
  return {}
end

function RawBlock (raw)
  if raw.format:match 'tex' then
    print(raw.text)
    return pandoc.read(raw.text, 'latex').blocks
  end
end

然后指示R Markdown通过将YAML标头更改为

---
title: "word_test"
output:
  word_document:
    pandoc_args:
      - '--lua-filter=parse-latex.lua'
date: '2022-08-09'
---

不过还有一个问题:PanDoc不擅长知道解析器何时应该处于数学模式,所以\sym定义中的\ifmmode不能像在LaTeX中那样工作.请将其替换为:

\def\sym#1{\textsuperscript{#1}}

您的表现在甚至应该显示在docx输出中.


我已经把过滤器放到了tarleb/parse-latex的回购中;更多细节和Quarto用法说明请参见那里.

R相关问答推荐

如何以编程方式将X轴勾号上的希腊符号合并到R图中?

如何替换R中数据集列中的各种字符串

列出用m n个值替换来绘制n个数字的所有方法(i.o.w.:R中大小为n的集合的所有划分为m个不同子集)

根据收件箱中的特定值提取列名

从嵌套列表中智能提取线性模型系数

如果列中存在相同的字符串,则对行值进行总和

向gggplot 2中的数据和轴标签添加大写和星号

抖动点与嵌套类别变量箱形图的位置不对齐

使用R中相同值创建分组观测指标

如何使用按钮切换轨迹?

使用ggsankey调整Sankey图中单个 node 上的标签

如何对2个列表元素的所有组合进行操作?

plotly hover文本/工具提示在shiny 中不起作用

从R中的对数正态分布生成随机数的正确方法

基于数据集属性将科分配给物种

当每个变量值只能 Select 一次时,如何从数据框中 Select 两个变量的组合?

为什么将负值向量提升到分数次方会得到NaN

基于R中的引用将向量值替换为数据框列的值

对计算变量所有唯一值的变量进行变异

如何将两个用不同的运算符替换*的矩阵相乘