如何使用RMarkdown、bookdown及word_document2导入.tex文件
需求实现结论
该需求完全可实现,优先推荐尽可能保留原有LaTeX代码的适配方案,迁移成本最低。
方案一:最优适配方案(90%保留原LaTeX代码,导出为Word可编辑原生表格)
新版本pandoc已经支持直接解析简单LaTeX表格语法,你只需要将原有LaTeX代码放在RMarkdown的原生LaTeX代码块中即可,具体操作如下:
- 调整原LaTeX代码中的
\dir变量为.tex文件相对于RMarkdown文档的实际相对路径 - 可删除
\scalebox{0.8}语法,pandoc转Word时无法识别该命令,可导出后直接在Word中调整表格缩放比例,也可以通过后续R代码块参数设置表格宽度 - 在RMarkdown中插入如下代码块即可:
```{=latex} \begin{table}[H] \caption{Table Title} \label{usnwr_id} \centering \input{./your_path/filename.tex} \caption*{\footnotesize \emph{Notes: ...}} \end{table} ```
适配小技巧
如果导出后表格边框样式异常,可将filename.tex中的\toprule、\midrule、\bottomrule替换为\hline,兼容性更好。
方案二:100%样式还原方案(导出为Word图片格式表格)
如果你的LaTeX表格包含复杂格式(合并单元格、特殊公式、自定义样式),可以先将.tex表格编译为高清图片再插入RMarkdown,完全保留原有LaTeX样式,具体代码如下:
```{r, echo=FALSE, out.width="80%", fig.cap="Table Title", fig.align='center'} # 编译tex文件为PDF tinytex::pdflatex("./your_path/filename.tex") # 转换为300DPI高清PNG pdftools::pdf_convert("./your_path/filename.pdf", dpi = 300, filenames = "./your_path/filename.png") # 插入图片 knitr::include_graphics("./your_path/filename.png") ``` *Notes: ...*
注意事项
- 两种方案都支持bookdown的交叉引用逻辑,你可以直接用
\@ref(usnwr_id)在正文引用对应表格,和原有LaTeX引用逻辑一致 - 如果选择方案一,尽量避免在LaTeX代码中使用冷门宏包命令,pandoc无法识别的命令会直接跳过渲染
内容的提问来源于stack exchange,提问作者bill999
相关产品推荐
相关产品推荐

