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.

I want to be able to center my table, but align the center by the end of the first cell. Currently just using the \begin{center} command i am able to center the table but i would rather the table be centered based off the end of the first cell and not by the average center of the table.

\documentclass{article}  
\begin{document}  

\begin{center}
\begin{tabular}{r | l}
I am some really long text & 10pt \\ 
I am also really long & 12pt \\ 
\end{tabular}
\end{center}
\end{document}  

Gets a table that is centered, but i would rather it went "I am some really long text {center here} 10pt.

Edit: The idea i'm kind of looking for can be seen in the way that you can align equations at any point.

share|improve this question
1  
Just to clarify: you want the vertical rule separating the columns to be centered on the page? Rather than as it is currently with the full contents evenly centered on the page. Correct? –  Paul Gessler Feb 24 at 3:37
    
That's exactly it, and much better worded than my original question –  Paul Thompson Feb 24 at 3:40
1  
Welcome to TeX.SX! –  Adam Liter Feb 24 at 3:41
add comment

4 Answers

up vote 8 down vote accepted

Just a variant of Poul's answer. Instead array package can use tabularx package and define new column types R and L. There is no need to measure width of columns:

\documentclass{article}
\usepackage{tabularx}
\newcolumntype{L}{>{\raggedright\arraybackslash}X}
\newcolumntype{R}{>{\raggedleft\arraybackslash}X}

\begin{document}
\begin{center}
  \begin{tabularx}{\textwidth}{|R|L|}
    I am some really long text & 10pt \\
    I am also really long      & 12pt 
  \end{tabularx}
\end{center}  
\hrulefill.\hrulefill % just for visual check
\end{document}  
share|improve this answer
add comment

I don't know why Chris (cmhughes) deleted his answer. But, for this simple job, no need of loading a heavy package like tabularx. Without it, this is how it is done.

\documentclass{article}
\usepackage{showframe}
\usepackage{array}
\newcolumntype{L}{>{\raggedright\arraybackslash}p{\dimexpr0.5\textwidth
                                                   -2\tabcolsep-\arrayrulewidth\relax}}
\newcolumntype{R}{>{\raggedleft\arraybackslash}p{\dimexpr0.5\textwidth
                                                   -2\tabcolsep-\arrayrulewidth\relax}}
\begin{document}

\begin{center}
    \begin{tabular}{R|L}
    aaaa    I am some really long text & I am some really long text aaaa\\
        I am also really long      & I am also really long     \\
    \end{tabular}
\end{center}
\hrulefill.\hrulefill % just for visual check
\end{document}

enter image description here

share|improve this answer
    
+1 nice work, Harish! yours is much better than mine, I'm very happy to vote for you :) –  cmhughes Feb 24 at 18:12
add comment

Obviously, extra columns could be inserted on either (sub)tabular to extend the table leftward or rightward, respectively, even as the dividing line between the halves remains centered.

\documentclass{article}  
\begin{document}  

\begin{center}
\makebox[0pt][r]{%
\begin{tabular}{r |}
I am some really long text\\ 
I am also really long\\ 
\end{tabular}%
}%
\makebox[0pt][l]{%
\begin{tabular}{| l}
 10pt \\ 
 12pt \\ 
\end{tabular}%
}
\end{center}
\end{document} 

enter image description here

share|improve this answer
add comment

Steven's answer will work, but if you'd like to avoid breaking up the tabular (at the cost of needing to specify widths):

Based on this answer, we can use facilities of the array package to define new column types L{<width}, C{<width>}, R{<width>} for which an explicit width may be declared. Choose this <width> to fit the widest content in all columns and set it for all columns:

\documentclass{article}
\usepackage{array}
\newcolumntype{L}[1]{>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}m{#1}}
\newcolumntype{C}[1]{>{\centering\let\newline\\\arraybackslash\hspace{0pt}}m{#1}}
\newcolumntype{R}[1]{>{\raggedleft\let\newline\\\arraybackslash\hspace{0pt}}m{#1}}

\begin{document}  
\begin{center}
  \begin{tabular}{R{1.7in} | L{1.7in}}
    I am some really long text & 10pt \\ 
    I am also really long      & 12pt \\ 
  \end{tabular}
\end{center}
\hrulefill.\hrulefill % just for visual check
\end{document}  

enter image description here

share|improve this answer
add comment

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.