]> git.donarmstrong.com Git - xtable.git/blobdiff - pkg/R/print.xtable.R
Submitting multiple changes as R-Forge SVN has been down. Added the use of getOption...
[xtable.git] / pkg / R / print.xtable.R
index 2c1c5dc25440a9db8a67a2b54f18a6735a8ecf68..282e2a2e7dcf94eda26962690879d7dba17e704e 100644 (file)
 ### 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
@@ -94,21 +97,42 @@ print.xtable <- function(
   # 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
@@ -440,19 +464,16 @@ print.xtable <- function(
   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
@@ -471,6 +492,7 @@ print.xtable <- function(
     result <- result + ETABLE\r
   }   \r
   result <- sanitize.final(result)\r
+  \r
   if (print.results){\r
        print(result)\r
   }\r