Uneven column widths when using a long multi-column header












3















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:



alignment problem



Any ideas are appreciated to solve this issue.
Many thanks in advance.










share|improve this question

























  • Closely related: Table column widths disproportionate due to multicolumn cell being too long

    – leandriis
    Apr 21 at 8:43






  • 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













  • Thanks egreg, I just learned it this morning ;)

    – Umut Tabak
    Apr 21 at 9:41
















3















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:



alignment problem



Any ideas are appreciated to solve this issue.
Many thanks in advance.










share|improve this question

























  • Closely related: Table column widths disproportionate due to multicolumn cell being too long

    – leandriis
    Apr 21 at 8:43






  • 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













  • Thanks egreg, I just learned it this morning ;)

    – Umut Tabak
    Apr 21 at 9:41














3












3








3


0






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:



alignment problem



Any ideas are appreciated to solve this issue.
Many thanks in advance.










share|improve this question
















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:



alignment problem



Any ideas are appreciated to solve this issue.
Many thanks in advance.







tables horizontal-alignment multicolumn booktabs






share|improve this question















share|improve this question













share|improve this question




share|improve this question








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





    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



















  • Closely related: Table column widths disproportionate due to multicolumn cell being too long

    – leandriis
    Apr 21 at 8:43






  • 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













  • 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










2 Answers
2






active

oldest

votes


















7














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}


enter image description here






share|improve this answer


























  • 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





    @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



















3














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.



enter image description here



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}





share|improve this answer
























    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
    });


    }
    });














    draft saved

    draft discarded


















    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









    7














    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}


    enter image description here






    share|improve this answer


























    • 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





      @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
















    7














    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}


    enter image description here






    share|improve this answer


























    • 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





      @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














    7












    7








    7







    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}


    enter image description here






    share|improve this answer















    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}


    enter image description here







    share|improve this answer














    share|improve this answer



    share|improve this answer








    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





      @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



















    • 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





      @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

















    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











    3














    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.



    enter image description here



    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}





    share|improve this answer




























      3














      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.



      enter image description here



      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}





      share|improve this answer


























        3












        3








        3







        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.



        enter image description here



        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}





        share|improve this answer













        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.



        enter image description here



        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}






        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered Apr 21 at 10:00









        MicoMico

        288k32394782




        288k32394782






























            draft saved

            draft discarded




















































            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.




            draft saved


            draft discarded














            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





















































            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







            Popular posts from this blog

            Plaza Victoria

            Brian Clough

            Cáceres