You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在输出PDF的Rmarkdown中垂直对齐含图与文本的行单元格

解决R Markdown表格中图片与文本垂直对齐问题

因为你输出的是PDF,本质是生成LaTeX表格,默认单元格为顶部对齐,可通过以下两种方法实现垂直居中,且无需额外安装包:

方法一:通过LaTeX图片命令控制垂直对齐

将图片的Markdown语法替换为LaTeX原生的\includegraphics命令,添加valign=m参数实现图片与文本垂直居中:

---
output: pdf_document
---

```{r echo=FALSE}
library(knitr)
library(tibble)

# 用LaTeX语法插入图片,valign=m实现垂直居中
header <- tibble(
  logo = "\\includegraphics[valign=m, width=50pt]{G:\\\\logo.png}",
  text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus vehicula sodales ligula, at efficitur erat tincidunt ac. Aenean malesuada turpis at dui aliquam laoreet. Cras ultricies, purus vitae egestas sagittis, neque tellus rutrum purus, in pulvinar neque orci vel odio. Nulla gravida nunc nec metus cursus lacinia. Nulla et augue mattis purus faucibus eleifend. Aliquam congue eget odio vel vehicula. Vestibulum sit amet pharetra dolor. Cras gravida gravida varius. Cras suscipit lacus urna, at semper est tincidunt vel. Aliquam ipsum felis, auctor vel pulvinar vel, blandit at lorem. Ut augue ligula, suscipit non neque a, luctus ultricies lorem. Cras a sem diam."
)
# 设置escape=FALSE让LaTeX代码生效,指定输出格式为latex
knitr::kable(header, col.names = c('', ''), align = 'c', 
             format = "latex", escape = FALSE)
## 方法二:定义LaTeX表格的垂直对齐列格式
通过指定LaTeX列格式为`m{宽度}`(垂直居中的段落列),强制整列内容垂直居中,可根据需求调整列宽:

```r
---
output: pdf_document
---

```{r echo=FALSE}
library(knitr)
library(tibble)

header <- tibble(
  logo = "![](G:\\\\logo.png){width=50}",
  text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus vehicula sodales ligula, at efficitur erat tincidunt ac. Aenean malesuada turpis at dui aliquam laoreet. Cras ultricies, purus vitae egestas sagittis, neque tellus rutrum purus, in pulvinar neque orci vel odio. Nulla gravida nunc nec metus cursus lacinia. Nulla et augue mattis purus faucibus eleifend. Aliquam congue eget odio vel vehicula. Vestibulum sit amet pharetra dolor. Cras gravida gravida varius. Cras suscipit lacus urna, at semper est tincidunt vel. Aliquam ipsum felis, auctor vel pulvinar vel, blandit at lorem. Ut augue ligula, suscipit non neque a, luctus ultricies lorem. Cras a sem diam."
)
# 使用m列格式设置两列宽度,实现垂直居中
knitr::kable(header, col.names = c('', ''), 
             format = "latex", escape = FALSE,
             col.format = c("m{1cm}", "m{12cm}"))
注:两种方法都依赖LaTeX环境的`graphicx`包(通常默认已预装),同时注意路径中的反斜杠需转义为双反斜杠`\\\\`。

内容的提问来源于stack exchange,提问作者pure_func
相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 21:50:12