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 am trying to get two tabular constructs side-by-side with a tikz figure in between and can't seem to get what I want using the minipage construct. Here is the code I have

\documentclass[twocolumn]{article}
\usepackage{amsmath}
\usepackage{graphicx}
\usepackage{subfigure}
\usepackage{picture}
\usepackage{caption}
\usepackage{tikz-rdf}
\usepackage{tikz}
\usepackage{tkz-graph}
\usepackage{tkz-berge}

\usetikzlibrary{shapes,shapes.callouts,,decorations.text,shapes.misc,decorations.pathmorphing,shapes.geometric,backgrounds,fit,positioning,arrows}

\begin{document}

\begin{figure}[t]
\begin{minipage}[b]{.30\textwidth}
  \centering
  \scalebox{.6}{
      \begin{tabular}{| p{1.5cm} | c | c | c |} \hline
        title & nationality & locatedIn & salary \\ 
        ?t & ?n & ?p & ?s \\ \hline
        Professor  &  American & USA &  \$100,000 \\ \hline
        Professor  &  American & China &  \$100,000 \\ \hline
        Assistant Professor  &  Canadian & China &  \$45,000 \\ \hline
        Assistant Professor  &  Canadian & China &  \$45,000 \\ \hline
        Assistant Professor  &  Canadian & China &  \$45,000 \\ \hline
      \end{tabular}
  }
\end{minipage}
%
\begin{minipage}{.2\textwidth}
              \begin{tikzpicture}
                \draw[
                     -triangle 90,
                        line width=1mm,
                        postaction={draw, line width=0.3cm, shorten >=0.3cm, -}
                ] (0,0) -- (1,0);
           \end{tikzpicture}


\end{minipage}
        %
 \begin{minipage}[b]{.30\textwidth}%{80mm}
        \centering
                 \scalebox{.6}{
              \begin{tabular}{| p{1.5cm} | c | c | c |} \hline
                title & nationality & locatedIn & salary \\ 
                ?t & ?n & ?p & ?s \\ \hline
                Professor  &  American & USA &  \$100,000 \\ \hline
                Professor  &  American & China &  \$100,000 \\ \hline
                Assistant Professor  &  Canadian & China &  \$135,000 \\ \hline
              \end{tabular}
            }
        \end{minipage}
        \end{figure}
          \captionof{table}{Current and Mean B with a Reversed Polarity}

        \end{document}

The output I am getting is the following. Any help would be appreciated.

enter image description here

share|improve this question
    
Where would one obtain tikz-rdf? –  Werner Mar 2 '12 at 16:20
    
@Werner: it's not needed. Nor tkz-graph nor tkz-berge, which were also not in my distro. –  Matthew Leingang Mar 2 '12 at 16:24
    
i'd start by inserting \leavevmode before the first minipage. –  barbara beeton Mar 2 '12 at 20:45

4 Answers 4

up vote 1 down vote accepted

Matrices!

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{matrix,arrows,positioning}
\begin{document}
\begin{table}
\centering%
\begin{tikzpicture}[scale=0.6,column 1/.style={nodes={text width=1.5cm}}]
\matrix[matrix of nodes,
            draw,
            %outer sep=2mm,
            %
            ] (firsttable) {
        title & nationality & locatedIn & salary \\ 
        ?t & ?n & ?p & ?s \\ \hline
        Professor  &  American & USA &  \$100,000 \\ \hline
        Professor  &  American & China &  \$100,000 \\ \hline
        Assistant Professor  &  Canadian & China &  \$45,000 \\ \hline
        Assistant Professor  &  Canadian & China &  \$45,000 \\ \hline
        Assistant Professor  &  Canadian & China &  \$45,000 \\ 
};

\matrix[matrix of nodes,
            draw,
            right = 2 cm of firsttable.south east,
                        anchor= south west,
            ] (secondtable) {
                title & nationality & locatedIn & salary \\ 
                ?t & ?n & ?p & ?s \\ \hline
                Professor  &  American & USA &  \$100,000 \\ \hline
                Professor  &  American & China &  \$100,000 \\ \hline
                Assistant Professor  &  Canadian & China &  \$135,000 \\
};
 \draw[
                     -triangle 90,
                        line width=1mm,
                        postaction={draw, line width=0.3cm, shorten >=0.3cm, -}
                ] ([xshift=3mm]firsttable.east |- secondtable.west) -- ([xshift=-3mm]secondtable.west);

\foreach \x in {1,2,3}{
\draw (firsttable.north west -| firsttable-1-\x.north east) |- (firsttable.south west -| firsttable-4-\x.north east);
}
\foreach \x in {1,2,3}{
\draw (secondtable.north west -| secondtable-1-\x.north east) |- (secondtable.south west -| secondtable-4-\x.north east);
}
\end{tikzpicture}
\caption{Current and Mean B with a Reversed Polarity}
\label{tikztable}
\end{table}
\end{document}

enter image description here

EDIT: I've repositioned the table and drawn verticle seperators. However it is strongly recommended to avoid vertical seperators but that's a whole another story and I am not literate enough to comment on that.

share|improve this answer
    
This is a very interesting solution, never thought of that. Could you please also tell me how to align the tables at the bottom with this solution? Also, I assume you cannot get vertical separators for the columns? –  ozsu Mar 5 '12 at 9:35
    
Thanks again, much appreciated. –  ozsu Mar 5 '12 at 12:37

You are using twocolumn so \linewidth is rather less than half \textwidth but your table widths add up to more than that, don't you want to base the widths on \linewidth? or \columnwidth, probably better.

share|improve this answer
    
Yes, I do. Thanks. One more question -- how do I get the bottom of the two tables aligned? I thought putting [b] after minipage should do that, but it doesn't seem to be accomplishing what I wanted. –  ozsu Mar 5 '12 at 8:39
    
you need a [b] on the \begin{tabular} so the table aligns on its bottom row (also don't forget to upvote&accept if it works:-) –  David Carlisle Mar 5 '12 at 9:17
    
Thank you. FOr some reason, it also pushes the arrow down (i.e., it aligns the tikz figure at the bottom as well). –  ozsu Mar 5 '12 at 9:29
    
well yes if latex aligns three things in a row it does so so their baselines line up, by default the baselines of the table are in the center. If you [b] align the tables you will need to raise the arrow, I don't know tikz at all it may have an alignment option or you could put the tikzpicture into a \raisebox{5\baselineskip}{....} or some other length and raise it by whatever you need –  David Carlisle Mar 5 '12 at 9:56
    
Worked like a charm; thanks very much. –  ozsu Mar 5 '12 at 10:10

It you wrap them all in one minipage they get placed next to each other. Also you should be using figure* in a twocolumn document:

\begin{figure*}[t]
  \begin{minipage}{\textwidth}
      ...
  \end{minipage}
\end{figure*}

I added \usepackage{showframe} so that you can see where the margins are and adjust your settings as desired:

enter image description here

Code:

\documentclass[twocolumn]{article}
\usepackage{amsmath}
\usepackage{graphicx}
\usepackage{subfigure}
\usepackage{picture}
\usepackage{caption}
%\usepackage{tikz-rdf}
\usepackage{tikz}
\usepackage{tkz-graph}
\usepackage{tkz-berge}

\usepackage{showframe}

\usetikzlibrary{shapes,shapes.callouts,,decorations.text,shapes.misc,decorations.pathmorphing,shapes.geometric,backgrounds,fit,positioning,arrows}

\begin{document}

\begin{figure*}[t]
\begin{minipage}{\textwidth}
\begin{minipage}[b]{.30\textwidth}
  \centering
  \scalebox{.6}{
      \begin{tabular}{| p{1.5cm} | c | c | c |} \hline
        title & nationality & locatedIn & salary \\ 
        ?t & ?n & ?p & ?s \\ \hline
        Professor  &  American & USA &  \$100,000 \\ \hline
        Professor  &  American & China &  \$100,000 \\ \hline
        Assistant Professor  &  Canadian & China &  \$45,000 \\ \hline
        Assistant Professor  &  Canadian & China &  \$45,000 \\ \hline
        Assistant Professor  &  Canadian & China &  \$45,000 \\ \hline
      \end{tabular}
  }
\end{minipage}
%
\begin{minipage}{.2\textwidth}
    \begin{tikzpicture}
                \draw[
                     -triangle 90,
                        line width=1mm,
                        postaction={draw, line width=0.3cm, shorten >=0.3cm, -}
                ] (0,0) -- (1,0);
    \end{tikzpicture}
\end{minipage}
%
\begin{minipage}[b]{.30\textwidth}%{80mm}
        \centering
        \scalebox{.6}{
              \begin{tabular}{| p{1.5cm} | c | c | c |} \hline
                title & nationality & locatedIn & salary \\ 
                ?t & ?n & ?p & ?s \\ \hline
                Professor  &  American & USA &  \$100,000 \\ \hline
                Professor  &  American & China &  \$100,000 \\ \hline
                Assistant Professor  &  Canadian & China &  \$135,000 \\ \hline
              \end{tabular}
        }
\end{minipage}
\captionof{table}{Current and Mean B with a Reversed Polarity}
\end{minipage}
\end{figure*}
\end{document}
share|improve this answer

Simply add a % after your \end{minipage} commands:

...
\end{minipage}%
%
\begin{minipage}{.2\textwidth}
...

enter image description here

share|improve this answer
    
Thank you very much. –  ozsu Mar 5 '12 at 8:21
    
@user8801: You are welcome. One point: Here at stackexchange we thank [user] by upvoting [his/her] answer (with the upward pointing arrow to the left of it; you need 15 reputation points before you can upvote). Additionally, please finally accept the answer that helped you most (by clicking on the checkmark). –  Daniel Mar 5 '12 at 10:30

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.