
Coloco a mesma tabela várias vezes no meu documento principal. Para isso, o conteúdo da tabela é colocado em um arquivo chamado model-values.tex
. Em cada \input
, altero a parte da tabela a ser exibida, ocultando colunas com um \newcolumntype
. Eu uso esta solução porque trabalho com uma tabela Gnumeric enorme (exportação de TeX) e não quero dividi-la apenas por motivos de formatação.
Ocultar não funciona mais se eu tiver \multicolumn
s na tabela. O texto destes ainda é exibido, não importa se as colunas estão ocultas. Já tentei diferentes soluções para a coluna tipo H (ver link TeX SE nos comentários) mas o problema persiste.
Uma solução: tirar o cabeçalho do arquivo e colocá-lo nas diversas ocorrências da tabela. No entanto, se eu adicionar ou eliminar colunas model-values.tex
, todo o cabeçalho da tabela precisará ser alterado. São mais 2 linhas a serem alteradas versus apenas 1 'linha' (= definição de coluna) quando o cabeçalho é incluído no arquivo externo.
Vale a pena ou devo continuar com a solução de mudar a cabeça inteira? Acho que o problema é por causa do tipo de coluna c
no arquivo \multicolumn
. Deve 'herdar' a tabela ou algo assim.
\documentclass{scrartcl}
\usepackage{booktabs}
\usepackage{tabularx}
% Hidden column type - different solutions on http://tex.stackexchange.com/questions/16604/easiest-way-to-delete-a-column
\newcolumntype{H}{>{\setbox0=\hbox\bgroup}c<{\egroup}@{}}
\begin{filecontents}{model-values.tex}
% Header
Model
& Param a
& \multicolumn{3}{c}{Param set A}
& \multicolumn{2}{c}{Param set B}
\\\cmidrule{3-5}\cmidrule{6-7}
&
& Param A1
& Param A2
& Param A3
& Param B1
& Param B2
\\\midrule
% Data
1 & 5 & 6 & 9 & 11 & 2 & 4\\
\end{filecontents}
\begin{document}
\section{Comparison of param set A}
Here, param set A of all models are compared, refer the table.
\begin{table}[t]
\begin{tabular}{
l % Model
c % Param a
c % Param set A: A1
c % Param set A: A2
c % Param set A: A3
H % Param set B: B1
H % Param set B: B2
}
\toprule
\input{model-values.tex}
\bottomrule
\end{tabular}
\end{table}
\clearpage
\section{Comparison of param set B}
Here, param set B of all models are compared, refer the table.
\begin{table}[t]
\begin{tabular}{
l % Model
c % Param a
H % Param set A: A1
H % Param set A: A2
H % Param set A: A3
c % Param set B: B1
c % Param set B: B2
}
\toprule
\input{model-values.tex}
\bottomrule
\end{tabular}
\end{table}
\end{document}
Responder1
Como multicoluna geralmente abrange mais de uma coluna, a ideia de que ela deveria herdar "o" tipo de coluna não faz muito sentido. E para uma coluna, pretende-se explicitamente substituir o tipo de coluna existente.
Você pode ocultar uma multicoluna com a ajuda de algumas colunas e opções fictícias. Mas é preciso alguns ajustes para obter os espaços entre as colunas e as linhas corretamente. E deve-se ter cuidado ao redefinir os booleanos para falsos no início:
\documentclass{scrartcl}
\usepackage{booktabs}
\usepackage{tabularx}
\usepackage{filecontents}
% Hidden column type - different solutions on http://tex.stackexchange.com/questions/16604/easiest-way-to-delete-a-column
\newcolumntype{H}{@{}>{\setbox0=\hbox\bgroup}c<{\egroup}@{}}
\newif\ifhidden
\begin{filecontents}{model-values.tex}
% Header
Model
& Param a
& \ifhidden\multicolumn{3}{@{}c@{}}{}\else\multicolumn{3}{c}{Param set A}\fi
&
& \ifhidden\multicolumn{2}{@{}c@{}}{}\else\multicolumn{2}{c}{Param set B}\fi
\\\cmidrule{3-5}\cmidrule{7-8}
&
& Param A1
& Param A2
& Param A3
&
& Param B1
& Param B2
\\\midrule
% Data
1 & 5 & 6 & 9 & 11 && 2 & 4\\
1 & 5 & 6 & 9 & 11 && 2 & 4\\
\end{filecontents}
\begin{document}
\section{Comparison of param set A}
Here, param set A of all models are compared, refer the table.
\begin{table}[t]
\begin{tabular}{
l<{\global\hiddenfalse} % Model
c % Param a
c % Param set A: A1
c % Param set A: A2
c % Param set A: A3
@{}l<{\global\hiddentrue}%dummy column to hold the switch
H % Param set B: B1
H % Param set B: B2
}
\toprule
\input{model-values.tex}
\bottomrule
\end{tabular}
\end{table}
\section{Comparison of param set B}
Here, param set B of all models are compared, refer the table.
\begin{table}[t]
\begin{tabular}{
l <{\global\hiddenfalse} % Model% Model
c <{\global\hiddentrue}% Param a
H % Param set A: A1
H % Param set A: A2
H % Param set A: A3
@{}l <{\global\hiddenfalse}
c % Param set B: B1
c % Param set B: B2
}
\toprule
\input{model-values.tex}
\bottomrule
\end{tabular}
\end{table}
\end{document}