### MA 02111-1307, USA\r
print.xtable <- function(\r
x,\r
- type="latex",\r
- file="",\r
- append=FALSE,\r
- floating=TRUE,\r
- floating.environment="table",\r
- table.placement="ht",\r
- caption.placement="bottom",\r
- latex.environments=c("center"),\r
- tabular.environment="tabular",\r
- size=NULL,\r
- hline.after=c(-1,0,nrow(x)),\r
- NA.string="",\r
- include.rownames=TRUE,\r
- include.colnames=TRUE,\r
- only.contents=FALSE,\r
- add.to.row=NULL,\r
- sanitize.text.function=NULL,\r
- sanitize.rownames.function=sanitize.text.function,\r
- sanitize.colnames.function=sanitize.text.function,\r
- math.style.negative=FALSE,\r
- html.table.attributes="border=1",\r
- print.results=TRUE,\r
- format.args=NULL,\r
- short.caption=NULL,\r
- rotate.rownames=FALSE,\r
- rotate.colnames=FALSE,\r
+ type=getOption("xtable.type", "latex"),\r
+ file=getOption("xtable.file", ""),\r
+ append=getOption("xtable.append", FALSE),\r
+ floating=getOption("xtable.floating", TRUE),\r
+ floating.environment=getOption("xtable.floating.environment", "table"),\r
+ table.placement=getOption("xtable.table.placement", "ht"),\r
+ caption.placement=getOption("xtable.caption.placement", "bottom"),\r
+ latex.environments=getOption("xtable.latex.environments", c("center")),\r
+ tabular.environment=getOption("xtable.tabular.environment", "tabular"),\r
+ size=getOption("xtable.size", NULL),\r
+ hline.after=getOption("xtable.hline.after", c(-1,0,nrow(x))),\r
+ NA.string=getOption("xtable.NA.string", ""),\r
+ include.rownames=getOption("xtable.include.rownames", TRUE),\r
+ include.colnames=getOption("xtable.include.colnames", TRUE),\r
+ only.contents=getOption("xtable.only.contents", FALSE),\r
+ add.to.row=getOption("xtable.add.to.row", NULL),\r
+ sanitize.text.function=getOption("xtable.sanitize.text.function", NULL),\r
+ sanitize.rownames.function=getOption("xtable.sanitize.rownames.function", \r
+ sanitize.text.function),\r
+ sanitize.colnames.function=getOption("xtable.sanitize.colnames.function", \r
+ sanitize.text.function),\r
+ math.style.negative=getOption("xtable.math.style.negative", FALSE),\r
+ html.table.attributes=getOption("xtable.html.table.attributes", "border=1"),\r
+ print.results=getOption("xtable.print.results", TRUE),\r
+ format.args=getOption("xtable.format.args", NULL),\r
+ short.caption=getOption("xtable.short.caption", NULL),\r
+ rotate.rownames=getOption("xtable.rotate.rownames", FALSE),\r
+ rotate.colnames=getOption("xtable.rotate.colnames", FALSE),\r
+ booktabs = getOption("xtable.booktabs", FALSE),\r
...) {\r
# Claudio Agostinelli <claudio@unive.it> dated 2006-07-28 hline.after\r
# By default it print an \hline before and after the columns names independently they are printed or not and at the end of the table\r
# Claudio Agostinelli <claudio@unive.it> dated 2006-07-28 add.to.row\r
# Add further commands at the end of rows\r
if (type=="latex") {\r
- PHEADER <- "\\hline\n"\r
- # John Leonard <jleonard99@gmail.com> October 21, 2011\r
- # The extra \hline gets in the way when using longtable and add.to.row\r
- if(tabular.environment=="longtable" && !is.null(add.to.row) ) {\r
- PHEADER <- ""\r
- } \r
+ ## Original code before changes in version 1.6-1\r
+ # PHEADER <- "\\hline\n"\r
+\r
+ # booktabs code from Matthieu Stigler <matthieu.stigler@gmail.com>, 1 Feb 2012\r
+ if(!booktabs){\r
+ PHEADER <- "\\hline\n"\r
+ } else {\r
+ PHEADER <- ifelse(-1%in%hline.after, "\\toprule\n", "") \r
+ if(0%in%hline.after) {\r
+ PHEADER <- c(PHEADER, "\\midrule\n")\r
+ }\r
+ if(nrow(x)%in%hline.after) {\r
+ PHEADER <- c(PHEADER, "\\bottomrule\n")\r
+ }\r
+ }\r
} else {\r
PHEADER <- ""\r
}\r
\r
lastcol <- rep(" ", nrow(x)+2)\r
if (!is.null(hline.after)) {\r
- add.to.row$pos[[npos+1]] <- hline.after\r
- add.to.row$command <- c(add.to.row$command, PHEADER)\r
+ # booktabs change - Matthieu Stigler: fill the hline arguments separately, 1 Feb 2012\r
+ #\r
+ # Code before booktabs change was:\r
+ # add.to.row$pos[[npos+1]] <- hline.after\r
+\r
+ if (!booktabs){\r
+ add.to.row$pos[[npos+1]] <- hline.after\r
+ } else {\r
+ for(i in 1:length(hline.after)) { \r
+ add.to.row$pos[[npos+i]] <- hline.after[i] \r
+ }\r
+ } \r
+ add.to.row$command <- c(add.to.row$command, PHEADER)\r
}\r
+\r
if ( length(add.to.row$command) > 0 ) {\r
for (i in 1:length(add.to.row$command)) {\r
addpos <- add.to.row$pos[[i]]\r
full[,multiplier*(0:(ncol(x)+pos-1))+6] <- ETD\r
\r
full[,multiplier*(ncol(x)+pos)+2] <- paste(EROW, lastcol[-(1:2)], sep=" ")\r
- \r
- # John Leonard <jleonard99@gmail.com> October 21, 2011\r
- # Removes the "\\" from the last row of the contents so that \r
- # booktabs (\bottomline) appears in the correct position.\r
- if(tabular.environment=="longtable" & !is.null(add.to.row)) {\r
- full[dim(full)[1],multiplier*(ncol(x)+pos)+2] <- "%\n" \r
- }\r
- \r
+ \r
if (type=="latex") full[,2] <- ""\r
result <- result + lastcol[2] + paste(t(full),collapse="")\r
if (!only.contents) {\r
if (tabular.environment == "longtable") {\r
- result <- result + PHEADER\r
+ # booktabs change added the if() - 1 Feb 2012\r
+ if(!booktabs) {\r
+ result <- result + PHEADER\r
+ }\r
+ \r
## fix 10-27-09 Liviu Andronic (landronimirc@gmail.com) the following 'if' condition is inserted in order to avoid\r
## that bottom caption interferes with a top caption of a longtable\r
if(caption.placement=="bottom"){\r
result <- result + ETABLE\r
} \r
result <- sanitize.final(result)\r
+ \r
if (print.results){\r
print(result)\r
}\r