Take the 2-minute tour ×
TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. It's 100% free, no registration required.

I want to split my table into multiple files:

\input{table_head.tex} with following content

\begin{table}[htpb]
\centering
\caption{Caption}
\begin{tabular}[r]{ccc}
\addlinespace
\toprule
A & 
B & 
C \\
\midrule

\input{content1.tex} with following content

A1 & B1 & C1 \\

\input{content2.tex} with following content

A2 & B2 & C2 \\

and so on until

\input{contentX.tex} with following content

AX & BX & CX \\

and finally the table footer

\input{table_footer.tex} with the following content

\bottomrule
\end{tabular}
\label{tab:tab_label}
\end{table}

Which command should I use? I get errors with input.

share|improve this question
add comment

1 Answer

up vote 5 down vote accepted

This question is similar to Supertabular problem with \input: The \bottomrule command has to be immediately preceded by a \\ (or \tabularnewline). Even though \input works as if you had typed the content directly in most cases, this is one of the occasions where it fails: \bottomrule can't find the \\ from the preceding file. In the answer I linked to, Bruno suggests putting the last \\ into the footer file, but I assume you want to keep the structure of all the input files the same. I would suggest adding \\[-\normalbaselineskip] at the start of the table_footer.tex file, which will act as a newline that doesn't actually change the vertical position:

\documentclass{article}
\usepackage{filecontents}
\usepackage{booktabs}

\begin{filecontents}{table_head.tex}
\begin{table}[htpb]
\centering
\caption{Caption}
\begin{tabular}[r]{ccc}
\addlinespace
\toprule
A & 
B & 
C \\
\midrule
\end{filecontents}

\begin{filecontents}{input1.tex}
A1 & B1 & C1\\
\end{filecontents}

\begin{filecontents}{input2.tex}
A2 & B2 & C2\\
\end{filecontents}

\begin{filecontents}{table_foot.tex}
\\[-\normalbaselineskip]\bottomrule
\end{tabular}
\label{tab:tab_label}
\end{table}
\end{filecontents}


\begin{document}
\input{table_head.tex}
\input{input1.tex}
\input{input2.tex}
\input{table_foot.tex}
\end{document}
share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.