Tabularx 标题中带有 tikz 图形和对角线的对齐问题

Tabularx 标题中带有 tikz 图形和对角线的对齐问题

在一个由 6 列 7 行创建的表格中tabularx(在最小示例中,我删除了一些),我想将创建的图形放置tikz在标题中。

这些图形已经定义并在另一个文档中使用。为了能够将它们包含在标题中,同时从类的底部可见,我将它们缩小了 倍0.05

通过将该系数减小到0.03,问题就消失了,但结果是图形变得太小而无法从房间的后面看到。

另外,我想将表头的标题和第一列放在左上角第一个单元格中,并以对角线隔开。

我已经测试了以下问题的解决方案,但没有一个可以解决对齐问题。

联盟

\documentclass[aspectratio=1610,10pt]{beamer} % Présentation générale et mise en page

\usepackage{tabularx}
\usepackage{tikz}           
\usepackage{slashbox,pict2e}

\usetheme{Warsaw}
\usefonttheme[onlymath]{serif}
\usecolortheme{dolphin}
\useoutertheme{infolines}       
\begin{document}

\def\tabularxcolumn#1{m{#1}}
\begin{frame}{Bilan}
\begin{tabularx}{7cm}{|c|*{2}{X|}}
\hline
\backslashbox{Unités}{Figures} %\rule[0pt]{0pt}{6mm} 
    & \centering\tikz[scale=.05]\draw[thick](0,0)--(6,6)--(0,12)--(0,18)--(6,12)--(12,12)--(18,18)--(18,12)--(12,6)--(18,0)--cycle;
    & \centering\tikz[scale=.05]\draw[thick](0,0)--(0,9)--(8,15)--(16,9)--(16,0)--cycle;
    \tabularnewline
\hline
$r_1$ \tikz[scale=.05]\draw(0,0)rectangle(6,3);&\rule[0mm]{0pt}{8mm} &  \tabularnewline
\hline
$t_1$ \tikz[scale=.05]\draw(0,0)--(3,3)--(6,0)--cycle;&\rule[0mm]{0pt}{8mm} &  \tabularnewline
\hline
\end{tabularx}

\end{frame}
\end{document}

如何在不进一步减小图形尺寸的情况下,制作正确的对角线并使图形在标题中正确居中?

使用 www.DeepL.com/Translator 翻译

答案1

该包\diagbox解决了您的问题,因为它具有高度控制;斜线经过计算以包含文本对,并且下一个单元格的内容必须小于这些高度。在这种情况下,使用\diagbox[height=4em]{Unités}{Figures}第一个单元格的高度大于 tikz 中绘图的内容...

结果:

在此处输入图片描述

梅威瑟:

% arara: pdflatex: {synctex: yes, action: nonstopmode}
\documentclass[aspectratio=1610,10pt]{beamer} % Présentation générale et mise en page
\usepackage{tabularx}
\usepackage{tikz}           
\usepackage{diagbox,pict2e} %Change to diagbox that controls the height of te first cell
\usetheme{Warsaw}
\usefonttheme[onlymath]{serif}
\usecolortheme{dolphin}
\useoutertheme{infolines}       
\begin{document}
    \def\tabularxcolumn#1{m{#1}}
    \begin{frame}{Bilan}
    \begin{table}[!h]
        \centering
        \begin{tabularx}{7cm}{|c|*{2}{X|}}\hline
            %Row1
            \diagbox[height=4em]{Unités}{Figures} %\rule[0pt]{0pt}{6mm} 
            &\centering\tikz[scale=.05]\draw[thick](0,0)--(6,6)--(0,12)--(0,18)--(6,12)--(12,12)--(18,18)--(18,12)--(12,6)--(18,0)--cycle;
            &\centering\tikz[scale=.05]\draw[thick](0,0)--(0,9)--(8,15)--(16,9)--(16,0)--cycle;
            \tabularnewline
            \hline
            %Row2
            $r_1$ \tikz[scale=.05]\draw(0,0)rectangle(6,3);&\rule[0mm]{0pt}{8mm} &  \tabularnewline
            \hline
            $t_1$ \tikz[scale=.05]\draw(0,0)--(3,3)--(6,0)--cycle;&\rule[0mm]{0pt}{8mm} &  \tabularnewline
            \hline
        \end{tabularx}
    \end{table}

    \end{frame}
\end{document}

附录:

来自软件包文档诊断框有更多的控件用于垂直位置调整,而我看到没有用于垂直位置调整的控件,因此我尝试使用 \vspace{}但它不起作用,但是经典的换行符调整如所建议的@土拨鼠,是一个不错的选择。

结果: 在此处输入图片描述

MWE +土拨鼠:

% arara: pdflatex: {synctex: yes, action: nonstopmode}
\documentclass[aspectratio=1610,10pt]{beamer} % Présentation générale et mise en page
\usepackage{tabularx}
\usepackage{tikz}           
\usepackage{diagbox,pict2e} %Change to diagbox that control the height of te first cell
\usetheme{Warsaw}
\usefonttheme[onlymath]{serif}
\usecolortheme{dolphin}
\useoutertheme{infolines}  
\usepackage{tikzmarmots}     
\begin{document}
    \def\tabularxcolumn#1{m{#1}}
    \begin{frame}{Bilan}
    \begin{table}[!h]
        \centering
        \begin{tabularx}{7cm}{|c|*{2}{X|}}\hline
            %Row1
            \diagbox[
                height=4em,
                innerwidth=6em,
                innerleftsep=0.5em,
                innerrightsep=0.5em
            ]{Unités\\[0.5em]}{\\[-0.5em]Figures} %\rule[0pt]{0pt}{6mm} 
            &\centering\tikz[scale=0.5]\marmot[teeth,whiskers];
            &\centering\tikz[scale=.05]\draw[thick](0,0)--(0,9)--(8,15)--(16,9)--(16,0)--cycle;
            \tabularnewline
            \hline
            %Row2
            $r_1$ \tikz[scale=.05]\draw(0,0)rectangle(6,3);&\rule[0mm]{0pt}{8mm} &  \tabularnewline
            \hline
            $t_1$ \tikz[scale=.05]\draw(0,0)--(3,3)--(6,0)--cycle;&\rule[0mm]{0pt}{8mm} &  \tabularnewline
            \hline
        \end{tabularx}
    \end{table}

    \end{frame}
\end{document}

结果:

答案2

最后一个问题是,m{}列会根据其认为的基线位置来居中内容,就像 一样\backslashbox。缩放 时\backslashbox,这些补偿不匹配。

该解决方案不保留的纵横比,但比在两边添加和\backslashbox简单得多。\hspace{\tabcolsep}@{}

删除m{}所需的列并添加此补偿以使\rule接下来的两行居中。

\documentclass[aspectratio=1610,10pt]{beamer} % Présentation générale et mise en page

\usepackage{tabularx}
\usepackage{tikz}           
\usepackage{slashbox,pict2e}

\usetheme{Warsaw}
\usefonttheme[onlymath]{serif}
\usecolortheme{dolphin}
\useoutertheme{infolines}

\newlength{\offset}

\begin{document}

%\def\tabularxcolumn#1{m{#1}}
\begin{frame}{Bilan}
\sbox0{\raisebox{\dimexpr 0.5\depth-0.5\height}{\backslashbox{Unités}{Figures}}}% masuer width
\sbox1{\tikz[scale=.05,baseline=(current bounding box.center)]{\draw[thick](0,0)--(6,6)--(0,12)--(0,18)--(6,12)--(12,12)--(18,18)--(18,12)--(12,6)--(18,0)--cycle;}}% measure height (not quite .45cm)
\setlength{\offset}{\dimexpr 0.5\arraystretch\ht\strutbox-0.5\arraystretch\dp\strutbox}% offset from center to baseline
\begin{tabularx}{7cm}{|c|*{2}{X|}}
\hline
\resizebox{\wd0}{\ht1}{\usebox0}% scale to match height and not change width
    & \centering\usebox1
    & \centering\tikz[scale=.05,baseline=(current bounding box.center)]{\draw[thick](0,0)--(0,9)--(8,15)--(16,9)--(16,0)--cycle;}
    \tabularnewline
\hline
$r_1$  \tikz[scale=.05]{\draw(0,0)rectangle(6,3);} & \rule[\dimexpr \offset-4mm]{0pt}{8mm} & \\
\hline
$t_1$ \tikz[scale=.05]\draw(0,0)--(3,3)--(6,0)--cycle; & \rule[\dimexpr \offset-4mm]{0pt}{8mm} & \\
\hline
\end{tabularx}

\end{frame}
\end{document}

演示

相关内容