排版特殊表格格式

排版特殊表格格式

我想排版弗林的分类法

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

使用 LaTeX(表格?)。唉,我尝试保持一致的间距,但失败了。

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

理想情况下,我希望所有四个象限的大小相同,并且(当然)文本居中。此外,表格标题应该具有某种连贯的布局(间距相等,顶部标题的高度等于侧面标题的宽度)。但我得到的只是:

糟糕的图表

总结起来有:

  • 无居中左标题
  • 左侧标题间距太大
  • 没有垂直居中的内容
  • 四个主要内容单元格为非方形表格单元格。

在 LaTeX 中实现此目的的最佳方法是什么?我觉得 TikZ 是一种不可原谅的过度杀伤,但我甚至不知道如何在那里实现此目的,如果能得到任何提示,我将不胜感激。

答案1

这只是第一种方法,可能需要进行一些最后的调整。

\documentclass[11pt,a4paper]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{rotating}
\usepackage{array}

\newcolumntype{M}{>{\centering\arraybackslash}m{2cm}}

\begin{document}
  \begin{tabular}{M|M|M}
    & 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
  \end{tabular}
\end{document}

答案2

使用 TikZ 的快速解决方案(可能有更好的方法来做到这一点)

\documentclass{article} 
\usepackage{tikz}
\usetikzlibrary{matrix}

\begin{document}
\begin{tikzpicture}
\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);
\end{tikzpicture}
\end{document}

结果

相关内容