[英]merge columns every other row using Sweave/R/Latex
我正在使用R / Sweave編寫會議摘要手冊。 我已經制作了僅包含id,作者,標題的打印程序手冊。
現在,我想對其進行修改以包括摘要(不適用於印刷)。 但是摘要是冗長的 。 我的想法是使用包含抽象信息的單元格,並將其顯示在具有作者信息的行下方-擴展到頁面的整個寬度。
身份證明-作者--------標題--------------------------------
抽象 - - - - - - - - - - - - - - - - - - - - - - - -
因此,每隔一行只有一列跨越整個表格的寬度。 有沒有一種方法可以將multicolmn{x}
添加到其他每一行?
如果無法找到解決方案,則歡迎提供有關如何以一種很好的方式打印完整摘要的建議。 (除了“僅使用橫向”或“調整列寬”以外的其他內容)
另外,它不必是PDF。 我可以切換到markdown / html-使其更接近具有完整摘要的真實會議計划。 再次,我弄清楚了如何打印一張表格,其中每隔一行只有一列,即整個表格的寬度。
如果您想嘗試-這是我現在正在工作的完整MWE。 請注意,它使用R包lipsum
,該包必須通過devtools / github安裝。
\documentclass{article}
\usepackage{booktabs, multicol, array}
\usepackage[margin=0.75in]{geometry}
%%%%%%%%%%% Let tables to span entire page
\newcolumntype{L}[1]{>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}m{#1}}
<<echo=FALSE, warning=FALSE, message=FALSE>>=
# devtools::install_github("coolbutuseless/lipsum")
library(lipsum)
library(xtable)
knitr::opts_chunk$set(echo = FALSE, warning=FALSE, message=FALSE)
options(xtable.comment = FALSE)
tblalign <- "lL{0.5cm}|L{4cm}L{6cm}L{8cm}"
# fake data setup
dat <- data.frame(ID = c(1:3), author = substr(lipsum[1:3], 1, 40),
title = substr(lipsum[4:6], 1, 100),
abstract = lipsum[7:9])
names(dat)=c("\\multicolumn{1}{c}{\\textbf{\\large{ID}}}",
"\\multicolumn{1}{c}{\\textbf{\\large{Author List}}}",
"\\multicolumn{1}{c}{\\textbf{\\large{Title}}}",
"\\multicolumn{1}{c}{\\textbf{\\large{Abstract}}}")
@
\begin{document}
<<results='asis'>>=
print(
xtable(x = dat
, align = tblalign)
, table.placement = "H"
, sanitize.colnames.function=function(x){x}
, include.rownames = FALSE
, include.colnames = TRUE
, size = "small"
, floating = FALSE
, hline.after = c(0,1:nrow(dat))
)
@
\end{document}
手動從摘要中拆分數據
out <- dat[,-4]
ab.list <- dat$abstract
然后添加到行
, add.to.row = list(pos = as.list(1:nrow(out)),
command = paste0("\\multicolumn{3}{L{15cm}}{\\textbf{Abstract: }", ab.list, "} \\\\"))
一種使用我的包huxtable
。 由於某種原因,我無法安裝Lipum,因此對其進行了破解。 該文件位於.Rmd文件中,輸出為pdf_document
。
```{r, results = 'asis'}
lipsum <- rep(do.call(paste, list(rep('blah ', 100), collapse = '')), 10)
dat <- data.frame(ID = c(1:3), author = substr(lipsum[1:3], 1, 40),
title = substr(lipsum[4:6], 1, 100),
abstract = lipsum[7:9], stringsAsFactors = FALSE)
library(huxtable)
# shape data
datmat <- matrix(NA_character_, nrow(dat) * 2, 3)
datmat[seq(1, nrow(datmat), 2), ] <- as.matrix(dat[, c('ID', 'author', 'title')])
datmat[seq(2, nrow(datmat), 2), 1] <- dat$abstract
# print as PDF
ht <- as_huxtable(datmat)
colspan(ht)[seq(2, nrow(ht), 2), 1] <- 3
wrap(ht) <- TRUE
col_width(ht) <- c(.2, .2, .6)
number_format(ht) <- 0
ht
```
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.