RMarkdown Beamer中先绘图后用etable+adjustbox表格不显示求助
问题
用fixest的feols()做回归分析,etable()生成表格嵌入Beamer演示文稿,依赖LaTeX的adjustbox包让宽表格适配页面宽度。但幻灯片中先插入ggplot图表后,带adjustbox的表格无法显示;移除前置图表后,表格又能正常渲染。
可复现代码如下:
YAML头部
--- title: "Teste" output: beamer_presentation date: "2024-11-14" header-includes: - \usepackage{booktabs} - \usepackage{longtable} - \usepackage{array} - \usepackage{multirow} - \usepackage{wrapfig} - \usepackage{float} - \usepackage{colortbl} - \usepackage{pdflscape} - \usepackage{tabu} - \usepackage[normalem]{ulem} - \usepackage{makecell} - \usepackage{xcolor} - \usepackage{adjustbox} ---
R代码块
{r setup, include=FALSE} knitr::opts_chunk$set(echo = FALSE) library(fixest) library(tidyverse) library(tinytex)
{r pressure} pressure%>% ggplot(aes(x=temperature,y=pressure))+ geom_point()
{r cars, results = 'asis'} ols=feols(speed~dist,data=cars) etable(ols,ols,ols,ols,ols,ols,style.tex = style.tex(adjustbox = T),postprocess.df = pandoc.table.return,tex=T)
解决方案
方案1:给图表添加固定位置参数
图表默认的浮动环境会干扰后续LaTeX代码渲染,给ggplot代码块加fig.pos='h'强制图表固定在当前位置:
{r pressure, fig.pos='h'} pressure%>% ggplot(aes(x=temperature,y=pressure))+ geom_point()
方案2:移除postprocess.df参数
postprocess.df = pandoc.table.return会让etable先转成pandoc格式再转LaTeX,和adjustbox的原生LaTeX输出冲突,直接删除该参数即可:
{r cars, results = 'asis'} ols=feols(speed~dist,data=cars) etable(ols,ols,ols,ols,ols,ols,style.tex = style.tex(adjustbox = TRUE), tex = TRUE)
方案3:手动包裹adjustbox环境
如果前两种方法无效,直接手动用adjustbox包裹etable生成的表格,绕开自动生成的格式冲突:
{r cars, results = 'asis'} ols=feols(speed~dist,data=cars) # 生成表格内容但不直接打印 tab_content <- etable(ols,ols,ols,ols,ols,ols, tex = TRUE, print = FALSE) # 手动添加adjustbox包裹代码 cat("\\begin{adjustbox}{width=\\textwidth}\n", tab_content, "\n\\end{adjustbox}", sep = "")
内容的提问来源于stack exchange,提问作者jorgep
相关产品推荐
相关产品推荐

