]> git.donarmstrong.com Git - xtable.git/commitdiff
Vignette: double quotes, fewer LaTeX packages, explain add.to.row detail
authorarnima <arnima@edb9625f-4e0d-4859-8d74-9fd3b1da38cb>
Thu, 9 Oct 2014 18:06:48 +0000 (18:06 +0000)
committerarnima <arnima@edb9625f-4e0d-4859-8d74-9fd3b1da38cb>
Thu, 9 Oct 2014 18:06:48 +0000 (18:06 +0000)
git-svn-id: svn://scm.r-forge.r-project.org/svnroot/xtable@64 edb9625f-4e0d-4859-8d74-9fd3b1da38cb

pkg/vignettes/xtableGallery.Rnw

index 21f30b3e80ac3678c17c049fcf5a0bd1eebd2e2e..88dd00b8c94d94657c3a749d9598049a9db7908c 100644 (file)
 \setcounter{tocdepth}{2}\r
 %% Define \code \proglang and \pkg commands\r
 \newcommand\code[1]{\texttt{#1}}\r
-\newcommand{\pkg}[1]{{\fontseries{b}\selectfont #1}}\r
-\newcommand\proglang[1]{\textsf{#1}}\r
+\newcommand\pkg[1]{\textbf{#1}}\r
+\newcommand\R{\textsf{R}}\r
 %% url and hyperref\r
 \usepackage[hyphens]{url}\r
 \usepackage{hyperref}\r
-\r
-\usepackage{listings}\r
-\lstset{language = TeX, basicstyle = \ttfamily,\r
-        keywordstyle = \ttfamily,\r
-        emphstyle = \itshape,\r
-        emph = {options},\r
-        lineskip = 0pt}\r
-\r
-\r
 \begin{document}\r
 \r
 \title{The \pkg{xtable} Gallery}\r
@@ -50,7 +41,6 @@ This document gives a gallery of tables which can be made using the
 \pkg{xtable} package to create \LaTeX\ output. It doubles as a\r
 regression check for the package.\r
 \r
-\r
 <<include=FALSE>>=\r
 library(knitr)\r
 opts_chunk$set(fig.path='figdir/fig', debug=TRUE, echo=TRUE)\r
@@ -62,7 +52,6 @@ library(xtable)
 options(xtable.floating = FALSE)\r
 @\r
 \r
-\r
 \section{Gallery}\r
 \subsection{Data frame}\r
 <<results='asis'>>=\r
@@ -83,7 +72,6 @@ fm1 <- aov(tlimth ~ sex + ethnicty + grade + disadvg, data = tli)
 xtable(fm1)\r
 @\r
 \r
-\r
 \subsection{lm}\r
 <<results='asis'>>=\r
 fm2 <- lm(tlimth ~ sex*ethnicty, data = tli)\r
@@ -108,7 +96,7 @@ fm3 <- glm(disadvg ~ ethnicty*grade, data = tli, family = binomial)
 xtable(fm3)\r
 @\r
 \r
-\p\r
+\subsubsection{Analysis of deviance}\r
 <<results='asis'>>=\r
 xtable(anova(fm3))\r
 @\r
@@ -129,7 +117,6 @@ xtable(summary(pr1))
 # xtable(pr2)\r
 @\r
 \r
-\newpage\r
 \subsection{Time series}\r
 <<results='asis'>>=\r
 temp.ts <- ts(cumsum(1 + round(rnorm(100), 0)),\r
@@ -138,6 +125,8 @@ temp.table <- xtable(temp.ts, digits = 0)
 temp.table\r
 @\r
 \r
+\newpage\r
+\r
 <<include=FALSE>>=\r
 # ## Demonstrate saving to file\r
 # for(i in c("latex", "html")) {\r
@@ -158,7 +147,6 @@ temp.table
 # }\r
 @\r
 \r
-\r
 \section{Helper functions for formatting}\r
 The functions \code{xalign}, \code{xdigits}, and \code{xdisplay} are useful for\r
 formatting tables in a sensible way. Consider the output produced by the default\r
@@ -206,8 +194,6 @@ print(wanttex, sanitize.text.function =
       function(str) gsub("_", "\\_", str, fixed = TRUE))\r
 @\r
 \r
-\r
-\r
 \subsection{Markup in tables}\r
 Markup can be included in tables, including in column and row names, by using\r
 a custom \code{sanitize.text.function}.\r
@@ -401,8 +387,8 @@ Requires \verb|\usepackage{longtable}| in the \LaTeX\ preamble.
 \r
 <<results='asis'>>=\r
 x <- matrix(rnorm(1000), ncol = 10)\r
-x.big <- xtable(x, caption = 'A \\code{longtable} spanning several pages')\r
-print(x.big, hline.after=c(-1, 0), tabular.environment = 'longtable')\r
+x.big <- xtable(x, caption = "A \\code{longtable} spanning several pages")\r
+print(x.big, hline.after=c(-1, 0), tabular.environment = "longtable")\r
 @\r
 \r
 %% The column name alignment is off in the following example.\r
@@ -439,36 +425,39 @@ print(x.big, hline.after=c(-1, 0), tabular.environment = 'longtable')
 %%       add.to.row = addtorow)\r
 %% @\r
 \r
+\newpage\r
+\r
 \subsection{Use of \code{add.to.row} argument}\r
-Here is an example of the use of the \code{add.to.row} argument, taken\r
-from a question on Stack Exchange:\r
-\url{http://stackoverflow.com/questions/19846796/adding-titles-to-xtable}.\r
+The following frequency table has outer dimnames: \code{Grade3} and\r
+\code{Grade6}.\r
 \r
-<<addtorow>>=\r
+<<>>=\r
 Grade3 <- c("A","B","B","A","B","C","C","D","A","B",\r
             "C","C","C","D","B","B","D","C","C","D")\r
 Grade6 <- c("A","A","A","B","B","B","B","B","C","C",\r
             "A","C","C","C","D","D","D","D","D","D")\r
-Cohort <- table(Grade3,Grade6)\r
-rownames(Cohort) <- 1:4\r
-colnames(Cohort) <- 5:8\r
-addtorow <- list()\r
-addtorow$pos <- list()\r
-addtorow$pos[[1]] <- 0\r
-addtorow$pos[[2]] <- 0\r
-addtorow$command <- c('& \\multicolumn{4}{c}{Grade 6} \\\\\n',\r
-                      "Grade 3 & A & B & C & D \\\\\n")\r
-print(xtable(Cohort, caption = 'My Title'), caption.placement = 'bottom',\r
-      add.to.row = addtorow, include.colnames = FALSE,\r
-      floating = TRUE)\r
+Cohort <- table(Grade3, Grade6)\r
+Cohort\r
+@\r
+\r
+\p\r
+The default behavior of \code{print.xtable} is to strip outer dimnames.\r
+<<results='asis'>>=\r
+xtable(Cohort)\r
 @\r
 \r
+\p\r
+The desired column labels can be created using \code{add.to.row}, in this case\r
+applying two commands to ``row number zero'' while suppressing the basic column\r
+names.\r
 \r
-<<printaddtorow, echo = FALSE, results = 'asis'>>=\r
-print(xtable(Cohort, caption = 'My Title'), caption.placement = 'bottom',\r
-      add.to.row = addtorow, include.colnames = FALSE,\r
-      floating = TRUE)\r
-@ %def\r
+<<results='asis'>>=\r
+addtorow <- list()\r
+addtorow$pos <- list(0, 0)\r
+addtorow$command <- c("& \\multicolumn{4}{c}{Grade 6} \\\\\n",\r
+                      "Grade 3 & A & B & C & D \\\\\n")\r
+print(xtable(Cohort), add.to.row = addtorow, include.colnames = FALSE)\r
+@\r
 \r
 \subsection{Sideways tables}\r
 Requires \verb|\usepackage{rotating}| in the LaTeX\r
@@ -478,8 +467,8 @@ fairly nearby.
 \r
 <<results='asis'>>=\r
 x <- x[1:30, ]\r
-x.side <- xtable(x, caption = 'A sideways table')\r
-print(x.side, floating = TRUE, floating.environment = 'sidewaystable')\r
+x.side <- xtable(x, caption = "A sideways table")\r
+print(x.side, floating = TRUE, floating.environment = "sidewaystable")\r
 @\r
 \clearpage\r
 \r
@@ -491,9 +480,10 @@ x.rescale <- xtable(x)
 print(x.rescale, scalebox = 0.7)\r
 @\r
 \r
-\subsection{Aligning Fixed Width Columns}\r
+\newpage\r
 \r
-Note that using specifications such as \lstinline+p{2cm}+ always\r
+\subsection{Aligning fixed width columns}\r
+Note that using specifications such as \verb|p{2cm}| always\r
 produces a \textbf{left aligned} column. What if some other alignment\r
 is desired?\r
 \r
@@ -501,13 +491,10 @@ This is not really a problem with \pkg{xtable} but with the formatting
 of tables with fixed width columns and different alignments using\r
 standard \LaTeX.\r
 \r
-This question appears on Stack Exchange:\\\r
-\url{http://tex.stackexchange.com/questions/12703/how-to-create-fixed-width-table-columns-with-text-raggedright-centered-raggedlef}\r
-\r
-The response is to use the \lstinline+array+ package, defining new\r
+One solution is to use the \verb|array| package, defining new\r
 column formats.\r
 \r
-\begin{lstlisting}\r
+\begin{verbatim}\r
 \newcolumntype{L}[1]{>{\raggedright\let\newline\\\r
     \arraybackslash\hspace{0pt}}m{#1}}\r
 \newcolumntype{C}[1]{>{\centering\let\newline\\\r
@@ -515,12 +502,12 @@ column formats.
 \newcolumntype{R}[1]{>{\raggedleft\let\newline\\\r
     \arraybackslash\hspace{0pt}}m{#1}}\r
 \newcolumntype{P}[1]{>{\raggedright\tabularxbackslash}p{#1}}\r
-\end{lstlisting}\r
+\end{verbatim}\r
 \r
 These allow for very sophisticated cell formatting, namely\r
 left-aligned, centred, or right-aligned text, with recognition of line\r
 breaks for the first three new column types. If these lines are\r
-included along with \lstinline+\usepackage{array}+, then the following\r
+included along with \verb|\usepackage{array}|, then the following\r
 is possible.\r
 \r
 \newcolumntype{L}[1]{>{\raggedright\let\newline\\\r
@@ -531,31 +518,12 @@ is possible.
     \arraybackslash\hspace{0pt}}m{#1}}\r
 \newcolumntype{P}[1]{>{\raggedright\tabularxbackslash}p{#1}}\r
 \r
-<<arrayexample>>=\r
-df <- data.frame(name = c("A","B"),\r
-                 right = c(1.4, 34.6),\r
-                 left = c(1.4, 34.6),\r
-                 text = c("txt1","txt2"))\r
-@ %def\r
-\r
-Here is the output produced by printing an\r
-\lstinline+"xtable"+ object.\r
-\r
-<<arraytable>>=\r
-print(xtable(df, align = c("|l", "|c", "|R{3cm}","|L{3cm}","| p{3cm}|")),\r
-      floating = FALSE, include.rownames = FALSE)\r
-@ %def\r
-\r
-\r
-Using the \pkg{knitr} option \code{'asis'} we obtain the table.\r
-\r
-<<arrayprint, results = 'asis'>>=\r
-print(xtable(df, align = c("|l", "|c", "|R{3cm}","|L{3cm}","| p{3cm}|")),\r
+<<results='asis'>>=\r
+df <- data.frame(name = c("A","B"), right = c(1.4, 34.6),\r
+                 left = c(1.4, 34.6), text = c("txt1","txt2"))\r
+print(xtable(df, align = c("l", "|c", "|R{3cm}", "|L{3cm}", "| p{3cm}|")),\r
       floating = FALSE, include.rownames = FALSE)\r
-@ %def\r
-\r
-\r
-\r
+@\r
 \r
 \subsection{Table width}\r
 The \code{tabularx} environment is for typesetting tables whose overall width is\r
@@ -594,9 +562,10 @@ x.ltx
 \r
 \section{Acknowledgements}\r
 Most of the examples in this gallery are taken from the \pkg{xtable}\r
-documentation.\r
+documentation. Two examples (\code{add.to.row} and `Aligning fixed width\r
+columns') are from Stack Exchange.\r
 \r
-\section{\proglang{R} session information}\r
+\section{\R\ session information}\r
 <<results='asis'>>=\r
 toLatex(sessionInfo())\r
 @\r