在一个由 6 列 7 行创建的表格中tabularx
(在最小示例中,我删除了一些),我想将创建的图形放置tikz
在标题中。
这些图形已经定义并在另一个文档中使用。为了能够将它们包含在标题中,同时从类的底部可见,我将它们缩小了 倍0.05
。
通过将该系数减小到0.03
,问题就消失了,但结果是图形变得太小而无法从房间的后面看到。
另外,我想将表头的标题和第一列放在左上角第一个单元格中,并以对角线隔开。
我已经测试了以下问题的解决方案,但没有一个可以解决对齐问题。
\def\tabularxcolumn#1{m{#1}}
从tabularx 表中的文本垂直居中\backslashbox
从slashbox 替代品makecell
从slashbox 替代品- tikz 来自表格单元格中的对角线但我不太明白他的代码。
\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}