如何解决PDF 中 flextable 的保真度使用 R Markdown
我在 RMD 中使用 flextable 将表格直接生成为 PDF。但是,即使我的表格在 R 中正确显示,我也会遇到 PDF 格式的问题。可以在 here 或本问题的末尾找到代码,并附上 PDF 的图片。
我希望所有列标题都底部对齐。但是,我有几个长而重的列标题,当 flextable 被编织到 PDF 时,只有那些保持底部对齐;较短的标题被颠倒了。
我还注意到,当我编织到 PDF 时,顶部单元格边框消失了,并且调整 padding()
没有任何效果。
这既是关于这两个具体问题的问题,也是关于 flextable 如何在 PDF 中呈现的问题。是否存在已知的保真度问题?解决这些问题的方法?
我还想指出,我使用 flextable 是因为它具有条件格式化能力,所以我不是特别愿意使用不同的表创建包。
感谢您的帮助!
---
output:
pdf_document:
latex_engine: xelatex
classoption: landscape
geometry: paperheight=9in,paperwidth=15in,margin=1in
mainfont: Verdana
header-includes:
- \usepackage{fancyhdr}
- \usepackage{lastpage}
- \pagestyle{fancy}
- \renewcommand{\headrulewidth}{0pt}
- \fancyfoot[C]{\thepage\ of \pageref{LastPage}}
- \fancyhead[C]{\color{red} Header Text Goes Here}
editor_options:
chunk_output_type: console
---
```{r setup,include=FALSE}
knitr::opts_chunk$set(echo = F)
knitr::opts_chunk$set(message = F)
knitr::opts_chunk$set(warning = F)
```
```{r packages}
library(tidyverse)
library(flextable)
library(Hmisc)
library(tinytex)
```
```{r table}
vals=seq(1,1000,by=0.25)
cols=14
col_names<-str_c(let=letters[1:cols]," ",lab=c(rep("Extra long column text soooooo many words",cols/2),rep("Shorter text",cols/2)))
table<-data.frame(matrix(sample(vals,cols*5,replace=T),nrow=5,ncol=cols))
names(table)<-col_names
```
```{r flextable}
table %>%
flextable()%>%
fontsize(size = 9,part = "all") %>%
colformat_char(na_str="--") %>%
border_inner(part="body",border=officer::fp_border(color="gray50") )%>%
border_outer(part="body",border=officer::fp_border(color="gray50") )%>%
border_inner(part="header",border=officer::fp_border(color="gray50") )%>%
border_outer(part="header",border=officer::fp_border(color="gray50") )%>%
align(i=1:nrow(table),j=1:ncol(table),"center",part="body") %>%
align(i=1,part="header") %>%
valign(i=1,"bottom",part="header") %>%
font(i=1:nrow(table),"Verdana",part="body") %>%
font(i=1,part="header") %>%
add_header_lines(c(rep("",6))) %>%
compose(i=1,j=NULL,part="header",as_paragraph(as_chunk("TABLE NAME",props = officer::fp_text(bold = TRUE,font.size = 9,font.family="Verdana")))) %>%
compose(i=2,as_paragraph(as_chunk("REPORT",props = officer::fp_text(font.size = 9,font.family="Verdana"))))%>%
compose(i=3,as_paragraph(as_chunk("MORE DETAILS",font.family="Verdana"))))%>%
compose(i=4,as_paragraph(as_chunk("YET MORE DETAILS",font.family="Verdana"))))%>%
compose(i=5,as_paragraph(as_chunk("ADDRESS",font.family="Verdana"))))%>%
compose(i=6,as_paragraph(as_chunk("DRAFT - A WORK IN PROGRESS",font.family="Verdana",color="red"))))%>%
width(j=1:ncol(table),width=ncol(table)/17)
```
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。