70

How can I center the column when using X in tabularx environment like in this example?

\begin{tabularx}{\textwidth}{@{}lXXXXX@{}}
 1 & 2 & 3 & 4 & 5 \\   
\end{tabularx}
  • 4
    do you want to centre an entire column or just one row, or just one cell? – ArTourter Jan 3 '13 at 20:33
  • Sorry... I want to center all X columns – Matthias Jan 3 '13 at 20:36
  • Use c instead of X. – m0nhawk Jan 3 '13 at 20:37
  • 1
    Please consider taking Huugo as the correct answer. – Peter Senna Apr 16 '17 at 9:45
85

I recently dealt with the same task, so here I present my solution: I defined a new columntype Y to center the cells in a tabularxenvironment.

In the preamble define:

\newcolumntype{Y}{>{\centering\arraybackslash}X}

to typeset the example simply enter

\begin{tabularx}{\textwidth}{@{}lYYYYY@{}}
 1 & 2 & 3 & 4 & 5 & 6\\   
\end{tabularx}
  • 1
    Would it be on topic to expand this answer to how to center a specific row? (if there is such an elegant solution to do so) – Zach Smith Dec 3 '17 at 7:40
37

You have two solutions (well at least)

If you are bound to tabularx then you can use

\begin{tabularx}{\textwidth}{@{}l *5{>{\centering\arraybackslash}X}@{}}
1 & 2 & 3 & 4 & 5 & 6\\
\end{tabularx}

Alternatively you can use the tabu package which offers you a lot more flexibility:

\begin{tabu} to \textwidth {@{} l *5{X[c]}@{}}
1 & 2 & 3 & 4 & 5 & 6\\
\end{tabu}
  • 1
    how to do the tabularx for \ruggedright? just replacing centering doesnt work :( – ankhi Sep 26 '14 at 19:04
  • 3
    @ankhi probably because it is spelt \raggedright! However, a solution to this question (and this really should be a separate question rather than a comment to a vaguely related one), is given in this answer which uses the same package as suggested by herbert below – ArTourter Sep 27 '14 at 0:45
  • May I ask what the @{} is doing? – Raven Dec 16 '17 at 14:22
  • 1
    @Raven have a look at this answer. Basically it removes spaces. – ArTourter Dec 16 '17 at 20:14
18
\usepackage{tabularx,ragged2e}
\renewcommand\tabularxcolumn[1]{>{\Centering}p{#1}}

with ragged2e you do not need the \arraybackslash

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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