如何为GT表格存根中自动换行的文本设置统一缩进?
GT表格存根文本换行后统一缩进的解决方案
问题背景
为GT表格的存根(stub)文本设置缩进后,较长文本自动换行的第二行及后续行未跟随缩进,需实现存根内所有换行文本的统一缩进效果。
问题根源
cell_text(indent = pct(8))仅作用于文本的首行缩进(对应CSS的text-indent属性),换行后的新行不会继承该缩进规则,导致对齐混乱。
解决方法
改用**单元格左侧内边距(padding-left)**实现整体缩进,让所有换行文本自动对齐。以下是修改后的完整代码:
library(dplyr) library(gt) library(tidyr) # 定义大洋洲各区域的国家代码 Australasia <- c("AU", "NZ") Melanesia <- c("NC", "PG", "SB", "VU") Micronesia <- c("FM", "GU", "KI", "MH", "MP", "NR", "PW") Polynesia <- c("PF", "WS", "TO", "TV") # 生成表格并设置统一缩进 countrypops %>% filter(country_code_2 %in% c(Australasia, Melanesia, Micronesia, Polynesia)) %>% filter(year %in% c(1995, 2005, 2015)) %>% mutate(region = case_when( country_code_2 %in% Australasia ~ "Australasia", country_code_2 %in% Melanesia ~ "Melanesia", country_code_2 %in% Micronesia ~ "Micronesia", country_code_2 %in% Polynesia ~ "Polynesia", )) %>% pivot_wider(names_from = year, values_from = population) %>% arrange(region, desc(`2015`)) %>% select(-starts_with("country_code")) %>% gt( rowname_col = "country_name", groupname_col = "region" ) %>% # 关键修改:用cell_css设置左侧内边距实现统一缩进 tab_style( style = list( cell_css("padding-left: 8%;") ), locations = cells_stub() ) %>% cols_width(country_name ~ 150)
可选进阶设置
如果需要首行比后续行多一层缩进,可以同时结合首行缩进和内边距:
tab_style( style = list( cell_text(indent = pct(4)), cell_css("padding-left: 4%;") ), locations = cells_stub() )
效果说明
设置padding-left后,存根单元格内的所有文本(包括换行后的行)都会从左侧统一位置开始,实现整齐的缩进效果,彻底解决原代码中仅首行缩进的问题。
内容的提问来源于stack exchange,提问作者Luke Horvath
相关产品推荐
相关产品推荐

