Uneven column widths when using a long multi-column header
I have the following MWE, but I have a problem with the alignment of the last column (under the multicolumn)
documentclass{report}
usepackage[T1]{fontenc}
usepackage[utf8]{inputenc}
usepackage{booktabs}
usepackage{calc}
usepackage{array}
usepackage{color}
%
begin{document}
%
% table 1
% evenly alined
begin{table}[htbp]
centering
begin{tabular}{ccccc}
toprule
& & multicolumn{3}{c}{Reduced component sizes}\
%cmidrule(r){3-5}
cmidrule{3-5}
% multicolumn{2}{c}{Internal mode count, $m$} &10&20&30&10&20&30\
%midrule
Component & Full size & $m=4$ & $m=8$ & $m=12$\
midrule
1 & 257 & 24 & 28 & 32 \
2 & 420 & 47 & 51 & 55 \
3 & 177 & 24 & 28 & 32 \
bottomrule
end{tabular}
caption{Information on component level degrees of freedom}
label{tab:information-overview-academic-model}
end{table}
%
% table 2
% not evenly alined
begin{table}[htbp]
centering
begin{tabular}{ccccc}
toprule
& & multicolumn{3}{c}{Reduced component matrix sizes textcolor{red}{test text added}}\
%cmidrule(r){3-5}
cmidrule{3-5}
% multicolumn{2}{c}{Internal mode count, $m$} &10&20&30&10&20&30\
%midrule
Component & Full size & $m=4$ & $m=8$ & $m=12$\
midrule
1 & 257 & 24 & 28 & 32 \
2 & 420 & 47 & 51 & 55 \
3 & 177 & 24 & 28 & 32 \
bottomrule
end{tabular}
caption{Information on component level degrees of freedom}
label{tab:information-overview-academic-model}
end{table}
%
end{document}
The result I am getting is that the columns under the multicolumns are not evenly separated. And when I increase the width of the text argument to multicolumn command it becomes even worse, first example seems to be fine but with the second there is definitely a problem. Here is the output of the above code:

Any ideas are appreciated to solve this issue.
Many thanks in advance.
tables horizontal-alignment multicolumn booktabs
add a comment |
I have the following MWE, but I have a problem with the alignment of the last column (under the multicolumn)
documentclass{report}
usepackage[T1]{fontenc}
usepackage[utf8]{inputenc}
usepackage{booktabs}
usepackage{calc}
usepackage{array}
usepackage{color}
%
begin{document}
%
% table 1
% evenly alined
begin{table}[htbp]
centering
begin{tabular}{ccccc}
toprule
& & multicolumn{3}{c}{Reduced component sizes}\
%cmidrule(r){3-5}
cmidrule{3-5}
% multicolumn{2}{c}{Internal mode count, $m$} &10&20&30&10&20&30\
%midrule
Component & Full size & $m=4$ & $m=8$ & $m=12$\
midrule
1 & 257 & 24 & 28 & 32 \
2 & 420 & 47 & 51 & 55 \
3 & 177 & 24 & 28 & 32 \
bottomrule
end{tabular}
caption{Information on component level degrees of freedom}
label{tab:information-overview-academic-model}
end{table}
%
% table 2
% not evenly alined
begin{table}[htbp]
centering
begin{tabular}{ccccc}
toprule
& & multicolumn{3}{c}{Reduced component matrix sizes textcolor{red}{test text added}}\
%cmidrule(r){3-5}
cmidrule{3-5}
% multicolumn{2}{c}{Internal mode count, $m$} &10&20&30&10&20&30\
%midrule
Component & Full size & $m=4$ & $m=8$ & $m=12$\
midrule
1 & 257 & 24 & 28 & 32 \
2 & 420 & 47 & 51 & 55 \
3 & 177 & 24 & 28 & 32 \
bottomrule
end{tabular}
caption{Information on component level degrees of freedom}
label{tab:information-overview-academic-model}
end{table}
%
end{document}
The result I am getting is that the columns under the multicolumns are not evenly separated. And when I increase the width of the text argument to multicolumn command it becomes even worse, first example seems to be fine but with the second there is definitely a problem. Here is the output of the above code:

Any ideas are appreciated to solve this issue.
Many thanks in advance.
tables horizontal-alignment multicolumn booktabs
Closely related: Table column widths disproportionate due to multicolumn cell being too long
– leandriis
Apr 21 at 8:43
1
booktabsandcmidruleare not involved. This is a known feature of TeX's alignments: when columns are spanned, the excess always go to the last spanned column. Overlong header text should be avoided.
– egreg
Apr 21 at 9:39
Thanks egreg, I just learned it this morning ;)
– Umut Tabak
Apr 21 at 9:41
add a comment |
I have the following MWE, but I have a problem with the alignment of the last column (under the multicolumn)
documentclass{report}
usepackage[T1]{fontenc}
usepackage[utf8]{inputenc}
usepackage{booktabs}
usepackage{calc}
usepackage{array}
usepackage{color}
%
begin{document}
%
% table 1
% evenly alined
begin{table}[htbp]
centering
begin{tabular}{ccccc}
toprule
& & multicolumn{3}{c}{Reduced component sizes}\
%cmidrule(r){3-5}
cmidrule{3-5}
% multicolumn{2}{c}{Internal mode count, $m$} &10&20&30&10&20&30\
%midrule
Component & Full size & $m=4$ & $m=8$ & $m=12$\
midrule
1 & 257 & 24 & 28 & 32 \
2 & 420 & 47 & 51 & 55 \
3 & 177 & 24 & 28 & 32 \
bottomrule
end{tabular}
caption{Information on component level degrees of freedom}
label{tab:information-overview-academic-model}
end{table}
%
% table 2
% not evenly alined
begin{table}[htbp]
centering
begin{tabular}{ccccc}
toprule
& & multicolumn{3}{c}{Reduced component matrix sizes textcolor{red}{test text added}}\
%cmidrule(r){3-5}
cmidrule{3-5}
% multicolumn{2}{c}{Internal mode count, $m$} &10&20&30&10&20&30\
%midrule
Component & Full size & $m=4$ & $m=8$ & $m=12$\
midrule
1 & 257 & 24 & 28 & 32 \
2 & 420 & 47 & 51 & 55 \
3 & 177 & 24 & 28 & 32 \
bottomrule
end{tabular}
caption{Information on component level degrees of freedom}
label{tab:information-overview-academic-model}
end{table}
%
end{document}
The result I am getting is that the columns under the multicolumns are not evenly separated. And when I increase the width of the text argument to multicolumn command it becomes even worse, first example seems to be fine but with the second there is definitely a problem. Here is the output of the above code:

Any ideas are appreciated to solve this issue.
Many thanks in advance.
tables horizontal-alignment multicolumn booktabs
I have the following MWE, but I have a problem with the alignment of the last column (under the multicolumn)
documentclass{report}
usepackage[T1]{fontenc}
usepackage[utf8]{inputenc}
usepackage{booktabs}
usepackage{calc}
usepackage{array}
usepackage{color}
%
begin{document}
%
% table 1
% evenly alined
begin{table}[htbp]
centering
begin{tabular}{ccccc}
toprule
& & multicolumn{3}{c}{Reduced component sizes}\
%cmidrule(r){3-5}
cmidrule{3-5}
% multicolumn{2}{c}{Internal mode count, $m$} &10&20&30&10&20&30\
%midrule
Component & Full size & $m=4$ & $m=8$ & $m=12$\
midrule
1 & 257 & 24 & 28 & 32 \
2 & 420 & 47 & 51 & 55 \
3 & 177 & 24 & 28 & 32 \
bottomrule
end{tabular}
caption{Information on component level degrees of freedom}
label{tab:information-overview-academic-model}
end{table}
%
% table 2
% not evenly alined
begin{table}[htbp]
centering
begin{tabular}{ccccc}
toprule
& & multicolumn{3}{c}{Reduced component matrix sizes textcolor{red}{test text added}}\
%cmidrule(r){3-5}
cmidrule{3-5}
% multicolumn{2}{c}{Internal mode count, $m$} &10&20&30&10&20&30\
%midrule
Component & Full size & $m=4$ & $m=8$ & $m=12$\
midrule
1 & 257 & 24 & 28 & 32 \
2 & 420 & 47 & 51 & 55 \
3 & 177 & 24 & 28 & 32 \
bottomrule
end{tabular}
caption{Information on component level degrees of freedom}
label{tab:information-overview-academic-model}
end{table}
%
end{document}
The result I am getting is that the columns under the multicolumns are not evenly separated. And when I increase the width of the text argument to multicolumn command it becomes even worse, first example seems to be fine but with the second there is definitely a problem. Here is the output of the above code:

Any ideas are appreciated to solve this issue.
Many thanks in advance.
tables horizontal-alignment multicolumn booktabs
tables horizontal-alignment multicolumn booktabs
edited Apr 21 at 10:03
Mico
288k32394782
288k32394782
asked Apr 21 at 8:26
Umut TabakUmut Tabak
2571213
2571213
Closely related: Table column widths disproportionate due to multicolumn cell being too long
– leandriis
Apr 21 at 8:43
1
booktabsandcmidruleare not involved. This is a known feature of TeX's alignments: when columns are spanned, the excess always go to the last spanned column. Overlong header text should be avoided.
– egreg
Apr 21 at 9:39
Thanks egreg, I just learned it this morning ;)
– Umut Tabak
Apr 21 at 9:41
add a comment |
Closely related: Table column widths disproportionate due to multicolumn cell being too long
– leandriis
Apr 21 at 8:43
1
booktabsandcmidruleare not involved. This is a known feature of TeX's alignments: when columns are spanned, the excess always go to the last spanned column. Overlong header text should be avoided.
– egreg
Apr 21 at 9:39
Thanks egreg, I just learned it this morning ;)
– Umut Tabak
Apr 21 at 9:41
Closely related: Table column widths disproportionate due to multicolumn cell being too long
– leandriis
Apr 21 at 8:43
Closely related: Table column widths disproportionate due to multicolumn cell being too long
– leandriis
Apr 21 at 8:43
1
1
booktabs and cmidrule are not involved. This is a known feature of TeX's alignments: when columns are spanned, the excess always go to the last spanned column. Overlong header text should be avoided.– egreg
Apr 21 at 9:39
booktabs and cmidrule are not involved. This is a known feature of TeX's alignments: when columns are spanned, the excess always go to the last spanned column. Overlong header text should be avoided.– egreg
Apr 21 at 9:39
Thanks egreg, I just learned it this morning ;)
– Umut Tabak
Apr 21 at 9:41
Thanks egreg, I just learned it this morning ;)
– Umut Tabak
Apr 21 at 9:41
add a comment |
2 Answers
2
active
oldest
votes
I suggest two kinds of solutions.
The first one with makecell which puts the multicolumn header on many lines; the second one with tabularx which equally distributes the spaces among the last 3 columns, leaving the header in one line.
documentclass{report}
usepackage[T1]{fontenc}
usepackage[utf8]{inputenc}
usepackage{booktabs}
usepackage{calc}
usepackage{array}
usepackage{color}
usepackage{makecell}
usepackage{tabularx}
newcolumntype{C}{>{centeringarraybackslash}X}
begin{document}
%
% table 1
% evenly alined
begin{table}[htbp]
centering
begin{tabular}{ccccc}
toprule
& & multicolumn{3}{c}{Reduced component sizes}\
%cmidrule(r){3-5}
cmidrule{3-5}
% multicolumn{2}{c}{Internal mode count, $m$} &10&20&30&10&20&30\
%midrule
Component & Full size & $m=4$ & $m=8$ & $m=12$\
midrule
1 & 257 & 24 & 28 & 32 \
2 & 420 & 47 & 51 & 55 \
3 & 177 & 24 & 28 & 32 \
bottomrule
end{tabular}
caption{Information on component level degrees of freedom}
label{tab:information-overview-academic-model}
end{table}
%
begin{table}[htbp]
centering
begin{tabular}{ccccc}
toprule
& & multicolumn{3}{c}{makecell{Reduced component\ matrix sizes\ textcolor{red}{test text added}}}\
%cmidrule(r){3-5}
cmidrule{3-5}
% multicolumn{2}{c}{Internal mode count, $m$} &10&20&30&10&20&30\
%midrule
Component & Full size & $m=4$ & $m=8$ & $m=12$\
midrule
1 & 257 & 24 & 28 & 32 \
2 & 420 & 47 & 51 & 55 \
3 & 177 & 24 & 28 & 32 \
bottomrule
end{tabular}
caption{With textbackslashtexttt{makecell}}
label{tab:information-overview-academic-modelbis}
end{table}
begin{table}[htbp]
centering
begin{tabularx}{linewidth}{ccCCC}
toprule
& & multicolumn{3}{c}{Reduced component matrix sizes textcolor{red}{test text added}}\
%cmidrule(r){3-5}
cmidrule{3-5}
% multicolumn{2}{c}{Internal mode count, $m$} &10&20&30&10&20&30\
%midrule
Component & Full size & $m=4$ & $m=8$ & $m=12$\
midrule
1 & 257 & 24 & 28 & 32 \
2 & 420 & 47 & 51 & 55 \
3 & 177 & 24 & 28 & 32 \
bottomrule
end{tabularx}
caption{With texttt{tabularx}}
label{tab:information-overview-academic-modelter}
end{table}
end{document}

Thanks, without reading the documentation for makecell, I tried to use makecell with one line without the linebreaks as you suggested and then the problem still persists. I guess it is better to use tabularx for this one.
– Umut Tabak
Apr 21 at 9:40
1
@UmutTabakmakecellis created to divide lines. If you don't add\within amakecellit makes no sense to use it.
– CarLaTeX
Apr 21 at 9:46
add a comment |
Just for the sake of variety, here's a solution which (a) calculates the natural widths of columns 3, 4, and 5 and (b) uses the combined widths of the three columns (plus the intercolumn whitespace amount) to typeset the long header string in a way that allows for automatic line-breaking.
This approach keeps the tabular material nice and compact; this is generally considered to be a good thing.

Observe that I would place the headers "Component" and "Full size" at the top rather than at the bottom of the header material.
documentclass{report}
usepackage[T1]{fontenc}
usepackage[utf8]{inputenc}
usepackage{xcolor,booktabs,array,ragged2e}
%% Create a new column type:
newcolumntype{C}[1]{>{Centeringarraybackslash}p{#1}}
begin{document}
begin{table}[htbp]
centering
begin{tabular}{ccccc}
toprule
& & multicolumn{3}{c}{Reduced component sizes}\
cmidrule{3-5}
Component & Full size & $m=4$ & $m=8$ & $m=12$\
midrule
1 & 257 & 24 & 28 & 32 \
2 & 420 & 47 & 51 & 55 \
3 & 177 & 24 & 28 & 32 \
bottomrule
end{tabular}
caption{OP's original layout}
label{tab:a}
end{table}
%% perform a few length calculations
newlengthmylen
newlengthmylena
newlengthmylenb
settowidthmylena{$m=4$}
settowidthmylenb{$m=12$}
setlength{mylen}{dimexpr2mylena+mylenb+4tabcolseprelax}
begin{table}[htbp]
centering
begin{tabular}{@{}ccccc@{}}
toprule
Component & Full size &
multicolumn{3}{C{mylen}@{}}{Reduced component matrix sizes textcolor{red}{test text added}}\
cmidrule(l){3-5}
& & $m=4$ & $m=8$ & $m=12$\
midrule
1 & 257 & 24 & 28 & 32 \
2 & 420 & 47 & 51 & 55 \
3 & 177 & 24 & 28 & 32 \
bottomrule
end{tabular}
caption{Automatic line-breaking in cols 3 to 5}
label{tab:b}
end{table}
end{document}
add a comment |
Your Answer
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "85"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2ftex.stackexchange.com%2fquestions%2f485870%2funeven-column-widths-when-using-a-long-multi-column-header%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
I suggest two kinds of solutions.
The first one with makecell which puts the multicolumn header on many lines; the second one with tabularx which equally distributes the spaces among the last 3 columns, leaving the header in one line.
documentclass{report}
usepackage[T1]{fontenc}
usepackage[utf8]{inputenc}
usepackage{booktabs}
usepackage{calc}
usepackage{array}
usepackage{color}
usepackage{makecell}
usepackage{tabularx}
newcolumntype{C}{>{centeringarraybackslash}X}
begin{document}
%
% table 1
% evenly alined
begin{table}[htbp]
centering
begin{tabular}{ccccc}
toprule
& & multicolumn{3}{c}{Reduced component sizes}\
%cmidrule(r){3-5}
cmidrule{3-5}
% multicolumn{2}{c}{Internal mode count, $m$} &10&20&30&10&20&30\
%midrule
Component & Full size & $m=4$ & $m=8$ & $m=12$\
midrule
1 & 257 & 24 & 28 & 32 \
2 & 420 & 47 & 51 & 55 \
3 & 177 & 24 & 28 & 32 \
bottomrule
end{tabular}
caption{Information on component level degrees of freedom}
label{tab:information-overview-academic-model}
end{table}
%
begin{table}[htbp]
centering
begin{tabular}{ccccc}
toprule
& & multicolumn{3}{c}{makecell{Reduced component\ matrix sizes\ textcolor{red}{test text added}}}\
%cmidrule(r){3-5}
cmidrule{3-5}
% multicolumn{2}{c}{Internal mode count, $m$} &10&20&30&10&20&30\
%midrule
Component & Full size & $m=4$ & $m=8$ & $m=12$\
midrule
1 & 257 & 24 & 28 & 32 \
2 & 420 & 47 & 51 & 55 \
3 & 177 & 24 & 28 & 32 \
bottomrule
end{tabular}
caption{With textbackslashtexttt{makecell}}
label{tab:information-overview-academic-modelbis}
end{table}
begin{table}[htbp]
centering
begin{tabularx}{linewidth}{ccCCC}
toprule
& & multicolumn{3}{c}{Reduced component matrix sizes textcolor{red}{test text added}}\
%cmidrule(r){3-5}
cmidrule{3-5}
% multicolumn{2}{c}{Internal mode count, $m$} &10&20&30&10&20&30\
%midrule
Component & Full size & $m=4$ & $m=8$ & $m=12$\
midrule
1 & 257 & 24 & 28 & 32 \
2 & 420 & 47 & 51 & 55 \
3 & 177 & 24 & 28 & 32 \
bottomrule
end{tabularx}
caption{With texttt{tabularx}}
label{tab:information-overview-academic-modelter}
end{table}
end{document}

Thanks, without reading the documentation for makecell, I tried to use makecell with one line without the linebreaks as you suggested and then the problem still persists. I guess it is better to use tabularx for this one.
– Umut Tabak
Apr 21 at 9:40
1
@UmutTabakmakecellis created to divide lines. If you don't add\within amakecellit makes no sense to use it.
– CarLaTeX
Apr 21 at 9:46
add a comment |
I suggest two kinds of solutions.
The first one with makecell which puts the multicolumn header on many lines; the second one with tabularx which equally distributes the spaces among the last 3 columns, leaving the header in one line.
documentclass{report}
usepackage[T1]{fontenc}
usepackage[utf8]{inputenc}
usepackage{booktabs}
usepackage{calc}
usepackage{array}
usepackage{color}
usepackage{makecell}
usepackage{tabularx}
newcolumntype{C}{>{centeringarraybackslash}X}
begin{document}
%
% table 1
% evenly alined
begin{table}[htbp]
centering
begin{tabular}{ccccc}
toprule
& & multicolumn{3}{c}{Reduced component sizes}\
%cmidrule(r){3-5}
cmidrule{3-5}
% multicolumn{2}{c}{Internal mode count, $m$} &10&20&30&10&20&30\
%midrule
Component & Full size & $m=4$ & $m=8$ & $m=12$\
midrule
1 & 257 & 24 & 28 & 32 \
2 & 420 & 47 & 51 & 55 \
3 & 177 & 24 & 28 & 32 \
bottomrule
end{tabular}
caption{Information on component level degrees of freedom}
label{tab:information-overview-academic-model}
end{table}
%
begin{table}[htbp]
centering
begin{tabular}{ccccc}
toprule
& & multicolumn{3}{c}{makecell{Reduced component\ matrix sizes\ textcolor{red}{test text added}}}\
%cmidrule(r){3-5}
cmidrule{3-5}
% multicolumn{2}{c}{Internal mode count, $m$} &10&20&30&10&20&30\
%midrule
Component & Full size & $m=4$ & $m=8$ & $m=12$\
midrule
1 & 257 & 24 & 28 & 32 \
2 & 420 & 47 & 51 & 55 \
3 & 177 & 24 & 28 & 32 \
bottomrule
end{tabular}
caption{With textbackslashtexttt{makecell}}
label{tab:information-overview-academic-modelbis}
end{table}
begin{table}[htbp]
centering
begin{tabularx}{linewidth}{ccCCC}
toprule
& & multicolumn{3}{c}{Reduced component matrix sizes textcolor{red}{test text added}}\
%cmidrule(r){3-5}
cmidrule{3-5}
% multicolumn{2}{c}{Internal mode count, $m$} &10&20&30&10&20&30\
%midrule
Component & Full size & $m=4$ & $m=8$ & $m=12$\
midrule
1 & 257 & 24 & 28 & 32 \
2 & 420 & 47 & 51 & 55 \
3 & 177 & 24 & 28 & 32 \
bottomrule
end{tabularx}
caption{With texttt{tabularx}}
label{tab:information-overview-academic-modelter}
end{table}
end{document}

Thanks, without reading the documentation for makecell, I tried to use makecell with one line without the linebreaks as you suggested and then the problem still persists. I guess it is better to use tabularx for this one.
– Umut Tabak
Apr 21 at 9:40
1
@UmutTabakmakecellis created to divide lines. If you don't add\within amakecellit makes no sense to use it.
– CarLaTeX
Apr 21 at 9:46
add a comment |
I suggest two kinds of solutions.
The first one with makecell which puts the multicolumn header on many lines; the second one with tabularx which equally distributes the spaces among the last 3 columns, leaving the header in one line.
documentclass{report}
usepackage[T1]{fontenc}
usepackage[utf8]{inputenc}
usepackage{booktabs}
usepackage{calc}
usepackage{array}
usepackage{color}
usepackage{makecell}
usepackage{tabularx}
newcolumntype{C}{>{centeringarraybackslash}X}
begin{document}
%
% table 1
% evenly alined
begin{table}[htbp]
centering
begin{tabular}{ccccc}
toprule
& & multicolumn{3}{c}{Reduced component sizes}\
%cmidrule(r){3-5}
cmidrule{3-5}
% multicolumn{2}{c}{Internal mode count, $m$} &10&20&30&10&20&30\
%midrule
Component & Full size & $m=4$ & $m=8$ & $m=12$\
midrule
1 & 257 & 24 & 28 & 32 \
2 & 420 & 47 & 51 & 55 \
3 & 177 & 24 & 28 & 32 \
bottomrule
end{tabular}
caption{Information on component level degrees of freedom}
label{tab:information-overview-academic-model}
end{table}
%
begin{table}[htbp]
centering
begin{tabular}{ccccc}
toprule
& & multicolumn{3}{c}{makecell{Reduced component\ matrix sizes\ textcolor{red}{test text added}}}\
%cmidrule(r){3-5}
cmidrule{3-5}
% multicolumn{2}{c}{Internal mode count, $m$} &10&20&30&10&20&30\
%midrule
Component & Full size & $m=4$ & $m=8$ & $m=12$\
midrule
1 & 257 & 24 & 28 & 32 \
2 & 420 & 47 & 51 & 55 \
3 & 177 & 24 & 28 & 32 \
bottomrule
end{tabular}
caption{With textbackslashtexttt{makecell}}
label{tab:information-overview-academic-modelbis}
end{table}
begin{table}[htbp]
centering
begin{tabularx}{linewidth}{ccCCC}
toprule
& & multicolumn{3}{c}{Reduced component matrix sizes textcolor{red}{test text added}}\
%cmidrule(r){3-5}
cmidrule{3-5}
% multicolumn{2}{c}{Internal mode count, $m$} &10&20&30&10&20&30\
%midrule
Component & Full size & $m=4$ & $m=8$ & $m=12$\
midrule
1 & 257 & 24 & 28 & 32 \
2 & 420 & 47 & 51 & 55 \
3 & 177 & 24 & 28 & 32 \
bottomrule
end{tabularx}
caption{With texttt{tabularx}}
label{tab:information-overview-academic-modelter}
end{table}
end{document}

I suggest two kinds of solutions.
The first one with makecell which puts the multicolumn header on many lines; the second one with tabularx which equally distributes the spaces among the last 3 columns, leaving the header in one line.
documentclass{report}
usepackage[T1]{fontenc}
usepackage[utf8]{inputenc}
usepackage{booktabs}
usepackage{calc}
usepackage{array}
usepackage{color}
usepackage{makecell}
usepackage{tabularx}
newcolumntype{C}{>{centeringarraybackslash}X}
begin{document}
%
% table 1
% evenly alined
begin{table}[htbp]
centering
begin{tabular}{ccccc}
toprule
& & multicolumn{3}{c}{Reduced component sizes}\
%cmidrule(r){3-5}
cmidrule{3-5}
% multicolumn{2}{c}{Internal mode count, $m$} &10&20&30&10&20&30\
%midrule
Component & Full size & $m=4$ & $m=8$ & $m=12$\
midrule
1 & 257 & 24 & 28 & 32 \
2 & 420 & 47 & 51 & 55 \
3 & 177 & 24 & 28 & 32 \
bottomrule
end{tabular}
caption{Information on component level degrees of freedom}
label{tab:information-overview-academic-model}
end{table}
%
begin{table}[htbp]
centering
begin{tabular}{ccccc}
toprule
& & multicolumn{3}{c}{makecell{Reduced component\ matrix sizes\ textcolor{red}{test text added}}}\
%cmidrule(r){3-5}
cmidrule{3-5}
% multicolumn{2}{c}{Internal mode count, $m$} &10&20&30&10&20&30\
%midrule
Component & Full size & $m=4$ & $m=8$ & $m=12$\
midrule
1 & 257 & 24 & 28 & 32 \
2 & 420 & 47 & 51 & 55 \
3 & 177 & 24 & 28 & 32 \
bottomrule
end{tabular}
caption{With textbackslashtexttt{makecell}}
label{tab:information-overview-academic-modelbis}
end{table}
begin{table}[htbp]
centering
begin{tabularx}{linewidth}{ccCCC}
toprule
& & multicolumn{3}{c}{Reduced component matrix sizes textcolor{red}{test text added}}\
%cmidrule(r){3-5}
cmidrule{3-5}
% multicolumn{2}{c}{Internal mode count, $m$} &10&20&30&10&20&30\
%midrule
Component & Full size & $m=4$ & $m=8$ & $m=12$\
midrule
1 & 257 & 24 & 28 & 32 \
2 & 420 & 47 & 51 & 55 \
3 & 177 & 24 & 28 & 32 \
bottomrule
end{tabularx}
caption{With texttt{tabularx}}
label{tab:information-overview-academic-modelter}
end{table}
end{document}

edited Apr 21 at 9:06
Bernard
177k779211
177k779211
answered Apr 21 at 8:40
CarLaTeXCarLaTeX
35.8k556153
35.8k556153
Thanks, without reading the documentation for makecell, I tried to use makecell with one line without the linebreaks as you suggested and then the problem still persists. I guess it is better to use tabularx for this one.
– Umut Tabak
Apr 21 at 9:40
1
@UmutTabakmakecellis created to divide lines. If you don't add\within amakecellit makes no sense to use it.
– CarLaTeX
Apr 21 at 9:46
add a comment |
Thanks, without reading the documentation for makecell, I tried to use makecell with one line without the linebreaks as you suggested and then the problem still persists. I guess it is better to use tabularx for this one.
– Umut Tabak
Apr 21 at 9:40
1
@UmutTabakmakecellis created to divide lines. If you don't add\within amakecellit makes no sense to use it.
– CarLaTeX
Apr 21 at 9:46
Thanks, without reading the documentation for makecell, I tried to use makecell with one line without the linebreaks as you suggested and then the problem still persists. I guess it is better to use tabularx for this one.
– Umut Tabak
Apr 21 at 9:40
Thanks, without reading the documentation for makecell, I tried to use makecell with one line without the linebreaks as you suggested and then the problem still persists. I guess it is better to use tabularx for this one.
– Umut Tabak
Apr 21 at 9:40
1
1
@UmutTabak
makecell is created to divide lines. If you don't add \ within a makecell it makes no sense to use it.– CarLaTeX
Apr 21 at 9:46
@UmutTabak
makecell is created to divide lines. If you don't add \ within a makecell it makes no sense to use it.– CarLaTeX
Apr 21 at 9:46
add a comment |
Just for the sake of variety, here's a solution which (a) calculates the natural widths of columns 3, 4, and 5 and (b) uses the combined widths of the three columns (plus the intercolumn whitespace amount) to typeset the long header string in a way that allows for automatic line-breaking.
This approach keeps the tabular material nice and compact; this is generally considered to be a good thing.

Observe that I would place the headers "Component" and "Full size" at the top rather than at the bottom of the header material.
documentclass{report}
usepackage[T1]{fontenc}
usepackage[utf8]{inputenc}
usepackage{xcolor,booktabs,array,ragged2e}
%% Create a new column type:
newcolumntype{C}[1]{>{Centeringarraybackslash}p{#1}}
begin{document}
begin{table}[htbp]
centering
begin{tabular}{ccccc}
toprule
& & multicolumn{3}{c}{Reduced component sizes}\
cmidrule{3-5}
Component & Full size & $m=4$ & $m=8$ & $m=12$\
midrule
1 & 257 & 24 & 28 & 32 \
2 & 420 & 47 & 51 & 55 \
3 & 177 & 24 & 28 & 32 \
bottomrule
end{tabular}
caption{OP's original layout}
label{tab:a}
end{table}
%% perform a few length calculations
newlengthmylen
newlengthmylena
newlengthmylenb
settowidthmylena{$m=4$}
settowidthmylenb{$m=12$}
setlength{mylen}{dimexpr2mylena+mylenb+4tabcolseprelax}
begin{table}[htbp]
centering
begin{tabular}{@{}ccccc@{}}
toprule
Component & Full size &
multicolumn{3}{C{mylen}@{}}{Reduced component matrix sizes textcolor{red}{test text added}}\
cmidrule(l){3-5}
& & $m=4$ & $m=8$ & $m=12$\
midrule
1 & 257 & 24 & 28 & 32 \
2 & 420 & 47 & 51 & 55 \
3 & 177 & 24 & 28 & 32 \
bottomrule
end{tabular}
caption{Automatic line-breaking in cols 3 to 5}
label{tab:b}
end{table}
end{document}
add a comment |
Just for the sake of variety, here's a solution which (a) calculates the natural widths of columns 3, 4, and 5 and (b) uses the combined widths of the three columns (plus the intercolumn whitespace amount) to typeset the long header string in a way that allows for automatic line-breaking.
This approach keeps the tabular material nice and compact; this is generally considered to be a good thing.

Observe that I would place the headers "Component" and "Full size" at the top rather than at the bottom of the header material.
documentclass{report}
usepackage[T1]{fontenc}
usepackage[utf8]{inputenc}
usepackage{xcolor,booktabs,array,ragged2e}
%% Create a new column type:
newcolumntype{C}[1]{>{Centeringarraybackslash}p{#1}}
begin{document}
begin{table}[htbp]
centering
begin{tabular}{ccccc}
toprule
& & multicolumn{3}{c}{Reduced component sizes}\
cmidrule{3-5}
Component & Full size & $m=4$ & $m=8$ & $m=12$\
midrule
1 & 257 & 24 & 28 & 32 \
2 & 420 & 47 & 51 & 55 \
3 & 177 & 24 & 28 & 32 \
bottomrule
end{tabular}
caption{OP's original layout}
label{tab:a}
end{table}
%% perform a few length calculations
newlengthmylen
newlengthmylena
newlengthmylenb
settowidthmylena{$m=4$}
settowidthmylenb{$m=12$}
setlength{mylen}{dimexpr2mylena+mylenb+4tabcolseprelax}
begin{table}[htbp]
centering
begin{tabular}{@{}ccccc@{}}
toprule
Component & Full size &
multicolumn{3}{C{mylen}@{}}{Reduced component matrix sizes textcolor{red}{test text added}}\
cmidrule(l){3-5}
& & $m=4$ & $m=8$ & $m=12$\
midrule
1 & 257 & 24 & 28 & 32 \
2 & 420 & 47 & 51 & 55 \
3 & 177 & 24 & 28 & 32 \
bottomrule
end{tabular}
caption{Automatic line-breaking in cols 3 to 5}
label{tab:b}
end{table}
end{document}
add a comment |
Just for the sake of variety, here's a solution which (a) calculates the natural widths of columns 3, 4, and 5 and (b) uses the combined widths of the three columns (plus the intercolumn whitespace amount) to typeset the long header string in a way that allows for automatic line-breaking.
This approach keeps the tabular material nice and compact; this is generally considered to be a good thing.

Observe that I would place the headers "Component" and "Full size" at the top rather than at the bottom of the header material.
documentclass{report}
usepackage[T1]{fontenc}
usepackage[utf8]{inputenc}
usepackage{xcolor,booktabs,array,ragged2e}
%% Create a new column type:
newcolumntype{C}[1]{>{Centeringarraybackslash}p{#1}}
begin{document}
begin{table}[htbp]
centering
begin{tabular}{ccccc}
toprule
& & multicolumn{3}{c}{Reduced component sizes}\
cmidrule{3-5}
Component & Full size & $m=4$ & $m=8$ & $m=12$\
midrule
1 & 257 & 24 & 28 & 32 \
2 & 420 & 47 & 51 & 55 \
3 & 177 & 24 & 28 & 32 \
bottomrule
end{tabular}
caption{OP's original layout}
label{tab:a}
end{table}
%% perform a few length calculations
newlengthmylen
newlengthmylena
newlengthmylenb
settowidthmylena{$m=4$}
settowidthmylenb{$m=12$}
setlength{mylen}{dimexpr2mylena+mylenb+4tabcolseprelax}
begin{table}[htbp]
centering
begin{tabular}{@{}ccccc@{}}
toprule
Component & Full size &
multicolumn{3}{C{mylen}@{}}{Reduced component matrix sizes textcolor{red}{test text added}}\
cmidrule(l){3-5}
& & $m=4$ & $m=8$ & $m=12$\
midrule
1 & 257 & 24 & 28 & 32 \
2 & 420 & 47 & 51 & 55 \
3 & 177 & 24 & 28 & 32 \
bottomrule
end{tabular}
caption{Automatic line-breaking in cols 3 to 5}
label{tab:b}
end{table}
end{document}
Just for the sake of variety, here's a solution which (a) calculates the natural widths of columns 3, 4, and 5 and (b) uses the combined widths of the three columns (plus the intercolumn whitespace amount) to typeset the long header string in a way that allows for automatic line-breaking.
This approach keeps the tabular material nice and compact; this is generally considered to be a good thing.

Observe that I would place the headers "Component" and "Full size" at the top rather than at the bottom of the header material.
documentclass{report}
usepackage[T1]{fontenc}
usepackage[utf8]{inputenc}
usepackage{xcolor,booktabs,array,ragged2e}
%% Create a new column type:
newcolumntype{C}[1]{>{Centeringarraybackslash}p{#1}}
begin{document}
begin{table}[htbp]
centering
begin{tabular}{ccccc}
toprule
& & multicolumn{3}{c}{Reduced component sizes}\
cmidrule{3-5}
Component & Full size & $m=4$ & $m=8$ & $m=12$\
midrule
1 & 257 & 24 & 28 & 32 \
2 & 420 & 47 & 51 & 55 \
3 & 177 & 24 & 28 & 32 \
bottomrule
end{tabular}
caption{OP's original layout}
label{tab:a}
end{table}
%% perform a few length calculations
newlengthmylen
newlengthmylena
newlengthmylenb
settowidthmylena{$m=4$}
settowidthmylenb{$m=12$}
setlength{mylen}{dimexpr2mylena+mylenb+4tabcolseprelax}
begin{table}[htbp]
centering
begin{tabular}{@{}ccccc@{}}
toprule
Component & Full size &
multicolumn{3}{C{mylen}@{}}{Reduced component matrix sizes textcolor{red}{test text added}}\
cmidrule(l){3-5}
& & $m=4$ & $m=8$ & $m=12$\
midrule
1 & 257 & 24 & 28 & 32 \
2 & 420 & 47 & 51 & 55 \
3 & 177 & 24 & 28 & 32 \
bottomrule
end{tabular}
caption{Automatic line-breaking in cols 3 to 5}
label{tab:b}
end{table}
end{document}
answered Apr 21 at 10:00
MicoMico
288k32394782
288k32394782
add a comment |
add a comment |
Thanks for contributing an answer to TeX - LaTeX Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2ftex.stackexchange.com%2fquestions%2f485870%2funeven-column-widths-when-using-a-long-multi-column-header%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Closely related: Table column widths disproportionate due to multicolumn cell being too long
– leandriis
Apr 21 at 8:43
1
booktabsandcmidruleare not involved. This is a known feature of TeX's alignments: when columns are spanned, the excess always go to the last spanned column. Overlong header text should be avoided.– egreg
Apr 21 at 9:39
Thanks egreg, I just learned it this morning ;)
– Umut Tabak
Apr 21 at 9:41