Sign up ×
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 typeset Flynn’s taxonomy:

         | Single      | Multiple
         | instruction | instructions
Single   |             |
data     |    SISD     |    MISD
Multiple |             |
data     |    SIMD     |    MIMD

using LaTeX (tables?). Alas, my attempts at consistent spacing fail abysmally.

% Requires package sideways.
  & & Single & Multiple \\
  & & instruction & instructions \\
  \begin{sideways}Single\end{sideways} & \begin{sideways}data\end{sideways} & SISD & MISD \\
  \begin{sideways}Multiple\end{sideways} & \begin{sideways}data\end{sideways} & SIMD & MIMD

Ideally, I would like for all four quadrants to be the same size, and (of course) the text to be centered. Also, the table headers should have some semblance of coherent layout (equal spacing, height of top headers equal to width of side headers). But all I get is this:

Botched diagram

Which has, in summary:

  • No centered left headers
  • Too large spacing in left headers
  • No vertically centered content
  • Non-square table cells for the four main content cells.

What’s the best way of doing this in LaTeX? I feel that TikZ would be an inexcusable overkill but I don’t know how to do it even there and I’d be obliged for any hints.

share|improve this question
Rotated labels are hard to read. In this case they are very short and can easily remain in normal left-to-right orientation. – sastanin Nov 26 '10 at 0:39
@jet: I agree. It seemed like a good idea on paper. – Konrad Rudolph Nov 26 '10 at 8:23

2 Answers 2

up vote 3 down vote accepted

This is only a first approach and might need some final tweaks.



    & Single & Multiple \\
    & instruction & instructions \\ \hline
    \begin{sideways}\parbox{2cm}{\centering Single data}\end{sideways} & SISD & MISD \\ \hline
    \begin{sideways}\parbox{2cm}{\centering Multiple data}\end{sideways} & SIMD & MIMD
share|improve this answer
By setting the left column style separately (to assign a different width) and removing the spacing before and after (@{}R@{}) I got the header on the left to be symmetrical to the header on top. But I think I’ll ultimately forego the sideways rotation anyway to make it more readable. – Konrad Rudolph Nov 26 '10 at 10:21
I, like Caramdir, think that a picture adds to the value of the answer. It’s far from obvious how this code is rendered. – Konrad Rudolph Nov 28 '10 at 14:49

A quick solution with TikZ (there are probably better ways to do this)


\matrix (t) [matrix of nodes,align=center,nodes={text width=2cm}] {
|[text width=0cm]|                               & Single instruction       & Multiple instructions \\
|[rotate=90,minimum width=0cm]| {Single\\data}   &|[minimum size=2cm]| SISD & |[minimum size=2cm]|MISD \\
|[rotate=90,minimum width=0cm]| {Multiple\\data} &|[minimum size=2cm]| SIMD &|[minimum size=2cm]| MIMD \\
\draw (t-2-1.north east) -- (t-2-3.north east);
\draw (t-3-1.north east) -- (t-3-3.north east);
\draw (t-1-2.north west) -- (t-3-2.south west);
\draw (t-1-3.north west) -- (t-3-3.south west);


share|improve this answer
I have no idea how to exactly center SISD, etc. (currently their baseline seems to be vertically centered). – Caramdir Nov 25 '10 at 21:48

Your Answer


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.