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.

Background

Would like to center all tables within floats, without having to add \centering to each table.

Ideas

Tried the following:

\let\originaltabular\tabular
\renewcommand\tabular{\centering\originaltabular}

It compiles, but the tables remain left-justified.

Question

How would you edit the Preamble of a LyX document to make all the floating tables be centred?

share|improve this question
    

3 Answers 3

up vote 18 down vote accepted

If you would like to center all tabular environments, I would recommend to create your own environment with a different name, which calls tabular. You could use that instead of redefining tabular itself.

But no problem, this can be done. Just use \renewenvironment, for example:

\let\originaltabular\tabular
\let\endoriginaltabular\endtabular
\renewenvironment{tabular}[1]{%
  \begingroup%
  \centering%
  \originaltabular{#1}}%
  {\endoriginaltabular\endgroup}

This as addition to your first try redefining tabular.

You could redefine the floating table environment very similar:

\let\originaltable\table
\let\endoriginaltable\endtable
\renewenvironment{table}[1][ht]{%
  \originaltable[#1]
  \centering}%
  {\endoriginaltable}

You could also use etoolbox to patch the table environment or append \centering to the definition this way:

\makeatletter
\g@addto@macro{\table}{\centering}
\makeatother

or

\expandafter\def\expandafter\table\expandafter{\table\centering}
share|improve this answer

In the Lyx list, I learned that the following in the preamble will automatically center the contents of figures and tables in floats. It works for me.

\usepackage{ifthen}
\renewenvironment{figure}[1][]{%
 \ifthenelse{\equal{#1}{}}{%
   \@float{figure}
 }{%
   \@float{figure}[#1]%
 }%
 \centering
}{%
 \end@float
}


\renewenvironment{table}[1][]{%
 \ifthenelse{\equal{#1}{}}{%
   \@float{table}
 }{%
   \@float{table}[#1]%
 }%
 \centering
}{%
 \end@float
}
share|improve this answer

I didn't test this with LyX, but \usepackage{floatrow} also centers the contents of floats. (The justification is configurable, but \centering is floatrow's default behaviour.)

share|improve this answer
    
You have to use floatbox code to use floatrow. LyX adds floats as \begin_inset Float table; were I hand-coding this in LaTeX, I could try it. –  Dave Jarvis Nov 27 '10 at 19:47

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.