Question
Why am I getting multiple misplaced \noalign
errors?
Reproducible example
\documentclass{scrartcl}
\usepackage{longtable}
\usepackage{booktabs}
\begin{document}
\section{Table test}
\begin{longtable}{llc}
\hline
& & \multicolumn{1}{c}{All} \\
\hline
m & \rule{0pt}{1.7\normalbaselineskip}April & $1$ \\
& \nopagebreak July & $1$ \\
& \nopagebreak June & $1$ \\
l & \rule{0pt}{1.7\normalbaselineskip}C & $1$ \\
& \nopagebreak F & $1$ \\
& \nopagebreak S & $1$ \\
nums & \rule{0pt}{1.7\normalbaselineskip}28 & $2$ \\
& \nopagebreak 62 & $1$ \\
\hline
\end{longtable}
\end{document}
Desired output (through reproducible research toolchain --- see below)
Troubleshooting --- Manual Tex Editing
It seems misplaced \noalign
errors can be vexing. My \hline
is preceded by \\
. Does the comment about booktabs
apply here? If so, how do I fix it? Changing \\
to \\*
or \tabularnewline
doesn't seem to help. As far as I can tell, this is not a \centering
issue.
Removing \nopagebreak
seems to make the errors go away but I don't think this is the right solution for me since the solution must work with long data tables in the context of a report using longtable
. Please see below.
Context
I believe that this is really a LaTeX
question and not an R
question but some context might help.
I am trying to generate a long report with multiple tables while adhering to principles of reproducible research by using R
and the tables
and Hmisc
packages.
I would like to dynamically create a table with frequency counts of observations across multiple factored variables with some vertical space between each factored variable.
The tables
package helps me do that using a nice formula interface, reminiscent of SAS
proc tabulate
. The RowFactor()
function with the suppressfirst=FALSE
and spacing=X
arguments produces the necessary output provided I specify nopagebreak = ""
instead of nopagebreak = "\\nopagebreak "
or if I use a tabular environment instead of the longtable package. Unfortunately, some of my tables are long and span page breaks. The tables package supports the LaTeX
longtable
package, as implemented on pages 26-28 of the tables vignette; but it doesn't seem to work with my data tables or with my minimal reproducible example.
Reproducible R
/Sweave
code:
\documentclass{scrartcl}
\usepackage{longtable}
\usepackage{booktabs}
\begin{document}
\SweaveOpts{concordance=TRUE}
\section{Table test}
<<test, echo=TRUE, results=tex>>=
options(width=80)
require(tables)
set.seed(10)
df <- data.frame(id=seq(1,3,1),
m=sample(month.name, 3, replace=TRUE),
l=sample(LETTERS, 3, replace=TRUE),
nums=sample(1:100, 3, replace=TRUE))
latex(
tabular(
RowFactor(m,
suppressfirst=FALSE,
## default argument
nopagebreak = "\\nopagebreak ",
## works if specify the following
#nopagebreak = "",
spacing=3)
+RowFactor(l,
suppressfirst=FALSE,
## default argument
nopagebreak = "\\nopagebreak ",
## works if specify the following
#nopagebreak = "",
spacing=3)
+RowFactor(nums,
suppressfirst=FALSE,
## default argument
nopagebreak = "\\nopagebreak ",
## works if specify the following
#nopagebreak = "",
spacing=3) ~1, data=df),
options=list(tabular="longtable")
)
@
\section{Session info}
<<sessionInfo>>=
sessionInfo()
@
\end{document}
\nopagebreak
supposed to do?\nopagebreak
is intended to keep the table from breaking within table sections (e.g., ok to break betweenl
,m
andnums
but not between the individual subrows. See LaTeX help, this question1 and this question2 which describe\nopagebreak
.nopagebreak
after each\\
except at the end of each grouping of rows? This seems to compile correctly. Can you anticipate inherent problems with this approach? Ideally, the solution would be generalizable to the tool chain. If I suggest making a change to theR tables
package regarding its handling of page breaks in longtables, I want to make the suggestion as robust as possible.\\
, use\\*