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 would like to create a table like the one you can see here, maybe emphasizing nicely labels A,B with respect to the values (0,1). I tried to search but could not find a Latex code for this. Can anybody give me some tips?

enter image description here

share|improve this question

6 Answers 6

up vote 2 down vote accepted

Native (La)TeX technique.

enter image description here

\documentclass{article}
\usepackage[a4paper,margin=2cm]{geometry}
\usepackage[table]{xcolor}
\usepackage{array}

\arrayrulewidth=1pt
\tabcolsep=10pt
\arrayrulecolor{red}


\newcolumntype{A}[2]{%
    >{\begin{minipage}{%
        \dimexpr#2\linewidth-2\tabcolsep-#1\arrayrulewidth\relax}%
        \vspace\tabcolsep}c<{\vspace\tabcolsep
    \end{minipage}}}


\begin{document}

\begin{table}[hbtp]
\centering
\begin{tabular}
{
    |>{\centering}A{1.5}{0.1}
    |>{\centering}A{1}{0.35}
    |>{\centering}A{1.5}{0.35}
    |
}\cline{2-3}
%=================== First Row =====================
\multicolumn{1}{A{1.5}{0.1}|}{}&
A&
B\tabularnewline\hline
%================== Second Row =====================
A&
$\displaystyle \int_a^b f(x)\,\textrm{d}x=F(b)-F(a)$&
$\displaystyle \int_a^b f(x)\,\textrm{d}x=F(b)-F(a)$\tabularnewline\hline
%==================== Third Row =====================
B&
$\displaystyle \int_a^b f(x)\,\textrm{d}x=F(b)-F(a)$&
$\displaystyle \int_a^b f(x)\,\textrm{d}x=F(b)-F(a)$\tabularnewline\hline
\end{tabular}
\caption{The truth table.}
\label{tab:Truth}
\end{table}

\newpage
See Table~\ref{tab:Truth} on page~\pageref{tab:Truth} for the details.
\end{document}

Note: you can adjust the width of each column by specifying the ratio in

\begin{tabular}
{
    |>{\centering}A{1.5}{0.1}
    |>{\centering}A{1}{0.35}
    |>{\centering}A{1.5}{0.35}
    |
}\cline{2-3}

where

  • 0.1 of \linewidth is for first column
  • 0.35 of \linewidth is for second column
  • 0.35 of \linewidth is for third column
  • 0.2 of \linewidth is for table horizontal margin
share|improve this answer
    
If you can insert image with \includegraphics{} and the vertical alignment still works. For \[...\] or \begin{equation}...\end{equation}, there is an adjustment that must be applied. Let me know if you want to use them. :-) –  xport Aug 12 '11 at 14:53

This is an alternative solution using TikZ:

\documentclass{minimal}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture} 
  \matrix [nodes={draw,minimum size=5mm},column sep=-\pgflinewidth,row sep=-\pgflinewidth] {
 & \node{A}; & \node {B}; \\ 
\node {A}; &    \node{0}; & \node {1}; \\
\node {B}; &    \node{1}; & \node {0}; \\
};
\end{tikzpicture}
\end{document}
share|improve this answer
    
I noticed that the border width does not equal for each box. You need to adjust it. :-) –  xport Aug 12 '11 at 10:39
    
@xport: is this newer version any better? –  Dror Aug 12 '11 at 11:27
1  
@Dror: You should set the options to [nodes={draw,minimum size=5mm},column sep=-\pgflinewidth,row sep=-\pgflinewidth], as in the answer to TikZ matrix as a replacement for tabular. Otherwise, no matter how you change the line width of the nodes, they will never overlap correctly. –  Jake Aug 12 '11 at 12:16
\documentclass{article}
\usepackage{array}

\begin{document}

\def\arraystretch{2}
\begin{tabular}{ | >{\bfseries}c | c | c | } \cline{2-3}
\multicolumn{1}{c|}{} &  \textbf{A} & \textbf{B} \\\hline
                    A &  0          & 1          \\\hline
                    B & $P(\omega_{l1},\omega_{l2} | x_1,x_2)$ & 2\\\hline
\end{tabular}
\end{document}

enter image description here

share|improve this answer
    
NOTE: Neither \[...\] nor \begin{equation}...\end{equation} is allowed in this answer. :-) –  xport Aug 12 '11 at 14:51
    
except of a vertical centering there is no need to use \[...\] in a tabular! And the same for the equation environment, which makes only sense if someone needs the numbering. –  Herbert Aug 12 '11 at 14:59

Here's an approach that uses a TikZ matrix of nodes, which eliminates the need to write \node{...} for every cell.

You can change the style of the header row and column using row 1/.style and column 1/.style:

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{matrix}
\begin{document}
\begin{tikzpicture} 
  \matrix [
    matrix of nodes,
    nodes={
        draw,
        minimum size=6mm,
        text depth=0.75ex,
        text height=2ex
    },
    column sep=-\pgflinewidth,
    row sep=-\pgflinewidth,
    column 2/.style={nodes={minimum width=3cm}},
    row 1/.style={font=\bfseries},
    column 1/.style={font=\bfseries}
  ] {
 & A & B \\ 
A & 0 & 1 \\
B & $P(\omega_{l1},\omega_{l2} | x_1,x_2)$ & 2\\
};
\end{tikzpicture}
\end{document}
share|improve this answer

Using (La)TeX's native table is also possible, but you can get a better control if using PSTricks or TikZ.

Here I use PSTricks, please compile it using xelatex or latex-dvips-ps2pdf.

enter image description here

\documentclass{article}
\usepackage{pstricks}

\psset{unit=1cm}% default unit

\newcommand\mybox[3]{%
    \rput(#1,#2)
        {\psTextFrame[dimen=middle](0,0)(1,1){#3}}}

\begin{document}
\pspicture[showgrid=false](3,3)
                \mybox{1}{2}{A} \mybox{2}{2}{B}
\mybox{0}{1}{A} \mybox{1}{1}{0} \mybox{2}{1}{1}
\mybox{0}{0}{B} \mybox{1}{0}{1} \mybox{2}{0}{0}
\endpspicture
\end{document}
share|improve this answer
    
Thanks for this solution! How can I handle a situation where the central cells (where now there are numbers) need to be bigger because they must contain a formula? –  Danilo Aug 12 '11 at 13:11
    
@Danilo: It is not a big problem. Just show your formulas in your question, I will see how big they are. –  xport Aug 12 '11 at 13:14
    
Thanks. Let's say the formula is something like this: $P(\omega_{l1},\omega_{l2} | x_1,x_2)$ . Moreover: how to emphatize headers A B and how to put a caption to the table? I would like to reference to this table in my text. –  Danilo Aug 12 '11 at 13:18

enter image description here

\documentclass{article}
\usepackage[a4paper,margin=2cm]{geometry}
\usepackage{pstricks}
\SpecialCoor
\psset
{
    xunit=5cm,
    yunit=1.5cm
}

\newcommand\mybox[3]{
    \psframe[origin={#1,#2},dimen=middle](0,0)(1,1)
    \rput(!#1 0.5 add #2 0.5 add){#3}
}

\pstFPdiv\w{\the\pslinewidth}{\the\dimexpr2\psxunit\relax}
\pstFPdiv\h{\the\pslinewidth}{\the\dimexpr2\psyunit\relax}
\pstFPsub\a{0}{\w}
\pstFPadd\b{3}{\h}

\begin{document}

\begin{figure}[hbtp]
\centering
\begin{pspicture}[showgrid=false](\a,\a)(\b,\b)
% firt row
% none
\mybox{1}{2}{\Large A}
\mybox{2}{2}{\Large B}

% second row
\mybox{0}{1}{\Large A}
\mybox{1}{1}{$P(\omega_{l1},\omega_{l2} | x_1,x_2)$}
\mybox{2}{1}{$\displaystyle \int_a^b f(x)\, \textrm{d}x=F(b)-F(a)$}

% third row
\mybox{0}{0}{\Large B}
\mybox{1}{0}{$E\not=mc^2$}
\mybox{2}{0}{$PV=nRT$}
\end{pspicture}
\caption{The truth table.}
\label{fig:Truth}
\end{figure}

\newpage
See Figure~\ref{fig:Truth} on page~\pageref{fig:Truth} for the details.
\end{document}
share|improve this answer

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.