Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

inset \footnote{} into header with xtable and tabular.environment

Tags:

r

latex

xtable

Can I control the add.to.row command in xtable to place an \footnote{} in the LaTeX table output header?

This is how far I've gotten it. (I would like to find a solution using xtable and not `Hmisc')

require(xtable)
x <- matrix(rnorm(60), ncol = 10)
x.big <- xtable(x,label='tabbig', caption='Example of longtable')
names(x.big) <- LETTERS[1:10]
print(x.big,tabular.environment='longtable',floating=FALSE, 
      add.to.row = list(pos = list(seq(1,nrow(x.big), by = 2), 0, 1),
      command = c("\\rowcolor[gray]{.95} ", "\\hline \\endhead ", 
      "\\footnote{This is the first footnote that I would like to have 
      in the headder next to `I'.}") ) )

then I use the output in a small latex file. Like this:

\documentclass{article}
\usepackage{longtable} 
\usepackage{colortbl} 
\usepackage[landscape]{geometry}

\begin{document}
I
\vspace{100 mm}

% latex table generated in R 2.15.1 by xtable 1.7-0 package
% Sun Dec  2 15:38:26 2012
\begin{longtable}{rrrrrrrrrrr}
  \hline
 & A & B & C & D & E & F & G & H & I & J \\ 
  \hline \endhead  \hline
1 & 0.57 & -0.21 & 1.11 & 0.15 & -0.47 & 0.77 & 0.26 & 2.08 & 0.65 & -1.62 \\ 
   \rowcolor[gray]{.95}  \footnote{This is the first footnote that I would like to have in the headder next to `I'.}2 & -0.45 & -0.06 & 0.13 & 0.20 & 0.26 & 0.48 & 0.07 & 0.45 & -0.51 & 1.26 \\ 
  3 & -0.23 & -0.68 & 0.17 & -0.92 & -0.44 & -0.43 & -0.63 & 1.84 & 0.08 & 1.21 \\ 
   \rowcolor[gray]{.95} 4 & -1.60 & -0.69 & -0.11 & 2.12 & -0.12 & -1.81 & -1.51 & 0.67 & 0.22 & 0.43 \\ 
  5 & -0.26 & 0.14 & 0.86 & -0.78 & -2.04 & 1.17 & -1.48 & -0.38 & 0.80 & 1.49 \\ 
   \rowcolor[gray]{.95} 6 & -0.53 & -0.43 & -0.84 & 0.06 & -0.87 & 1.13 & -0.56 & 0.30 & -0.96 & 1.75 \\ 
   \hline
\hline
\caption{'Example of longtable'}
\label{tabbig}
\end{longtable}

\end{document}

This produces this table,

table01

like image 793
Eric Fail Avatar asked Dec 02 '12 23:12

Eric Fail


People also ask

How do you add a footnote to a tabular in latex?

Just put a hardcoded vertical skip at the bottom of the caption and then write the footnote yourself (use \footnotesize for the size). You also have to manage the symbols or number yourself with \footnotemark . Simple, but not very attractive, and the footnote does not appear at the bottom of the page.

How do you use footnotes in a table?

Click the References tab. Don't click Insert Footnote, as you did before. Instead, click the Footnotes group's dialog launcher. In the resulting dialog, choose Below text from the Footnotes dropdown (Figure D), and click Insert.

How do you insert a footnote in a table overleaf?

You can insert the footnote marker\footnotemark{} using the \verb|\footnotemark| command and later use the \verb|\footnotetext| command to typeset the footnote text by writing \verb|\footnotetext{Text of second footnote.} | \footnotetext{Text of second footnote.}.


1 Answers

I think you can't manipulate the header using the add.to.row argument.

But why not to sanitize?

Here my solution : The idea is to put a tag in the header (footnote here) and to change it using sanitize option.

x <- matrix(rnorm(60), ncol = 10)
x.big <- xtable(x,label='tabbig', caption='Example of longtable')
names(x.big) <- LETTERS[1:10]
names(x.big)[9] <- paste('I','footnote')    # I put the tag on I letter 
print(x.big,tabular.environment='longtable',floating=FALSE,
      sanitize.text.function=function(str)gsub("footnote","\\footnote{my tricky footnote !!}",str,fixed=TRUE))

You can easily extend the solution to many footnots by using many tags.

enter image description here

Update , case of multiple footnote

You can easily use thes ame trick for multiple notes, like this :

names(x.big)[1] <- paste('A','footnote1')    # I put the tag on A letter 
names(x.big)[9] <- paste('I','footnote2')    # I put the tag on I letter 
print(x.big,floating=FALSE,
      sanitize.text.function=function(str){
        str <- gsub("footnote1","\\footnote{my tricky footnote 1 !!}",str,fixed=TRUE)
        str <- gsub("footnote2","\\footnote{my tricky footnote 2 !!}",str,fixed=TRUE)
      }
        )

The idea is to assign the same string after the regular expression substitution.

like image 139
agstudy Avatar answered Sep 21 '22 18:09

agstudy