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

如何在R Markdown转PDF时用flextable()减小行间距

问题描述

使用flextable 0.7.3版本时,flextable::line_spacing(space = 0)在编织为HTML文档时可正常缩小行间距,但编织为PDF时完全无效。尝试过设置固定行高,但因实际数据存在多行内容,无法固定行高;且由于需要应用条件格式,flextable比kableExtra::column_spec()更适用,因此希望找到通过flextable生成小行间距PDF表格的方法。

相关代码:

---
output:
  pdf_document:
    latex_engine: xelatex
  html_document:
    df_print: paged
---
library(tidyverse)
cars %>%
  head(10) %>%
  flextable::flextable() %>%
  flextable::line_spacing(space = 0,
                          part = "body",
                          unit = "mm")

解决方案

在PDF(LaTeX)输出中,line_spacing()的space参数是相对行高的倍数,0值会被LaTeX忽略,需结合以下两个调整实现紧凑行间距:

  1. 将line_spacing()的space设为小于1的正数(如0.7-0.9),缩小单元格内文本的行间距
  2. 用padding()清除单元格上下内边距,消除额外的空白

修改后的代码:

library(tidyverse)
library(flextable)

cars %>%
  head(10) %>%
  flextable() %>%
  # 设置单元格内文本行间距为默认的80%
  line_spacing(space = 0.8, part = "body") %>%
  # 移除单元格上下内边距
  padding(padding.top = 0, padding.bottom = 0, part = "body") %>%
  # 自动适配表格宽度(可选)
  set_table_properties(layout = "autofit")

说明

  • LaTeX不支持行间距设为0,必须使用小于1的比例值控制紧凑程度,可根据需求调整space的具体数值
  • 单元格默认的上下内边距是视觉上行间距过大的主要原因之一,清除后能进一步压缩表格整体高度
  • 保持latex_engine: xelatex的设置,确保flextable的LaTeX输出正常渲染

内容的提问来源于stack exchange,提问作者MartineJ

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 19:33:24