如何格式化具有长列标题条目的表格?

如何格式化具有长列标题条目的表格?

我想创建某种特征矩阵,其中可用类为列,已实现特征为行。问题是类名太长了。

将它们旋转 90° 看起来很傻,所以我正在寻找其他想法。

到目前为止,我唯一的想法是水平书写标题文本,并用箭头(或类似箭头)将“标题行”与列匹配。但坦率地说,我不知道如何在 latex 中执行此类操作。

我这个简单方法的一个最简单例子如下。

\documentclass{beamer}

\usepackage{tabularx}

% 我实际上正在使用自定义主题
% PaloAlto 的空间浪费情况类似
\usetheme{帕洛阿尔托}

\开始{文档}
\框架
{
  \frametitle{boost 实现的图形类的比较}
  \begin{tabularx}{\textwidth}{X ccc}
    % 列标题,第一列为空
    & \rotatebox{90}{邻接列表}
    & \rotatebox{90}{邻接矩阵}
    & \rotatebox{90}{压缩稀疏行图} \
    % 行,我怀疑我需要大约 10
    % 类 adjlist adjmatrix csrg
    \hline
    AdjacencyGraph & 是 & 否 & 是 \\
    接口 \#2 & 是 & 否 & 是 \\
    接口 \#3 & 是 & 否 & 是 \\
    接口 \#4 & 是 & 否 & 是 \\
    接口 \#5 & 是 & 否 & 是 \\
    接口 \#6 & 是 & 否 & 是 \\
    接口 \#7 & 是 & 否 & 是 \\
    接口 \#8 & 是 & 否 & 是 \\
    接口 \#9 & 是 & 否 & 是 \\
    % 省略休息
  \结束{tabularx}
}
\结束{文档}

如果它很重要:我正在用 beamer 进行演示。

答案1

下面是一个示例,使用您的想法将标题水平放置并用箭头将其连接到列:

\documentclass{beamer}
\usepackage{tikz}
\usepackage{tabularx}
\newcommand*{\hnode}[1]{\tikz[remember picture] \node (#1) {};}
% I am actually using a similar theme
% The space ``wasted'' is similar for PaloAlto though
\usetheme{PaloAlto}

\begin{document}
\frame
{
  \frametitle{Comparision of boost implemented graph classes}
  \begin{tabular}{l}
    %
    % Column Headers, first column is empts
    %
    compressed\_sparse\_row\_graph\hnode{H3}\\
    adjacency\_matrix\hnode{H2}\\
    adjacency\_list\hnode{H1}\\
    \\
  \end{tabular}
  \begin{tabularx}{\textwidth}{X c c c}
    %
    & \hnode{C1}
    & \hnode{C2}
    & \hnode{C3}\\
    % Rows, I suspect I need about 10
    % Class               adjlist          adjmatrix     csrg
    \hline 
    AdjacencyGraph        & Yes            & No          & Yes \\
    Interface \#2         & Yes            & No          & Yes \\
    Interface \#3         & Yes            & No          & Yes \\
    Interface \#4         & Yes            & No          & Yes \\
    Interface \#5         & Yes            & No          & Yes \\
    Interface \#6         & Yes            & No          & Yes \\
    Interface \#7         & Yes            & No          & Yes \\
    Interface \#8         & Yes            & No          & Yes \\
    Interface \#9         & Yes            & No          & Yes \\
    % Rest omitted
  \end{tabularx}
\tikz[remember picture,overlay] \draw (H1)  [very thick, red,->] -| (C1);
\tikz[remember picture,overlay] \draw (H2)  [very thick, red,->] -| (C2);
\tikz[remember picture,overlay] \draw (H3)  [very thick, red,->] -| (C3);
}

\end{document}

如果我可以这么说的话,它实际上看起来相当不错。

投影幻灯片

答案2

& \llap{\rotatebox[origin=rb]{-30}{\small adjacency\_list}}
& \llap{\rotatebox[origin=rb]{-30}{\small adjacency\_matrix}}
& \llap{\rotatebox[origin=rb]{-30}{\small compressed\_sparse\_row\_graph}}\\

也许一个解决方案

相关内容