2017-05-01 4 views
0

R/Sweaveを使用してカンファレンス抽象冊子を作成しています。 id、author、titleのみを含む印刷用のプログラム小冊子を作成しました。Sweave/R/Latexを使用して列を1行おきにマージする

ここでは、要約(印刷用ではない)を含むように変更したいと思います。しかし、抄録は、長さはです。私の考えは、抽象的な情報でセルを取得し、それが著者情報で行の下に表示されるようにして、ページの全幅に広げます。

ID - 著者--------タイトル--------------------------------
要約-----------------------------------------------

他のすべての行には、テーブル全体の幅にまたがるカラムが1つだけあります。 他のすべての行にmulticolmn{x}を追加する方法はありますか?

解決策が見つからない場合は、完全な要約をうまく印刷する方法のアドバイスを歓迎します。 (「ちょうど景観を使用する」または「列幅を調整する」以外のもの)

また、PDFである必要はありません。私はmarkdown/htmlに切り替えることができ、完全な抄録を持つ実際の会議プログラムのスケジュールに近づけることができます。もう一度、私はどのように他のすべての行がテーブル全体の幅である1つだけの列を持つテーブルを印刷するかを考え出す。

お試しください - ここでは私が今作業しているものの完全なMWEがあります。 devtools/github経由でインストールする必要があるRパッケージlipsumを使用していることに注意してください。

\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} 
+0

私は正しい道の上に私を置いてもよい、このhttp://stackoverflow.com/questions/18280547/xtable-background-colour-of-added-rowsに出くわしました...まだどんな助けも歓迎です。 –

答えて

1

分割データ抽象から手動

out <- dat[,-4] 
ab.list <- dat$abstract 

その後、add.to.row私のパッケージhuxtableを使用して

, add.to.row = list(pos = as.list(1:nrow(out)), 
         command = paste0("\\multicolumn{3}{L{15cm}}{\\textbf{Abstract: }", ab.list, "} \\\\")) 
0

一つのアプローチ。私は何らかの理由でlipsumをインストールできませんでしたので、ちょうどそれをハックしました。これは、出力がpdf_documentの.Rmdファイルにあります。

```{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 
``` 

PDF output

関連する問題