您知道我如何以点 (pt) 为单位指定表格中单元格的大小,即行高和列宽吗?在文本模式下,有类似\textwidth
或的命令,\baselineskip
但这在环境中不起作用tabular
。我不想调整这些参数,我只想知道它们的值。
\documentclass{scrreprt}
\begin{document}
\centering
\begin{tabular}[t]{rl}
Row Height: & "\textbackslash{}the \textbackslash{}getRowHeight" \\
Column Width: & "\textbackslash{}the \textbackslash{}getColWidth"
\end{tabular}
\end{document}
谢谢你! :)
答案1
在 环境中{NiceTabular}
,nicematrix
您会在单元格、行和列下创建 PGF/Tikz 节点。可以使用这些节点计算当前单元格的尺寸,然后再次使用 Tikz 将结果放入单元格中。
\documentclass{article}
\usepackage{nicematrix,tikz}
\usetikzlibrary{calc}
\makeatletter
\ExplSyntaxOn
\cs_new_protected:Nn \__pantigny_SizeOfCell:nn
{
\begin{tikzpicture}
\path let \p1 = (#1-|#2) ,
\p2 = (\int_eval:n{#1+1}-|\int_eval:n{#2+1})
in node at (#1-#2)
{ \dim_eval:n { \x2 - \x1 } $\times$ \dim_eval:n{\y1-\y2} } ;
\end{tikzpicture}
}
\NewDocumentCommand \SizeOfCell {}
{
\NotEmpty
\tl_gput_right:Nx \g_nicematrix_code_after_tl
{ \__pantigny_SizeOfCell:nn { \arabic { iRow } } { \arabic { jCol } } }
}
\ExplSyntaxOff
\makeatother
\begin{document}
\begin{NiceTabular}{ccc}[hvlines]
AAAA & AAAAAAAAAAAAAA AAAAAA & BB \\
BB & \SizeOfCell & CCC \\
CC & BBBBB & DD
\end{NiceTabular}
\end{document}
您需要多次编译(因为nicematrix
使用 PGF/Tikz 节点)。
答案2
tabstackengine
共享了 提供的一些功能tabular
。它还提供了另一个功能,即\TABwd{}
提供最近创建的 TABstack 的列宽。同样,\TABht{}
和\TABdp{}
可用于行高/行深。
从 MWE 中可以看出,这些数量在 TABstack 内部以及之后也可用。
这些量提供了行/列的高度和宽度(不包括边框)。为了考虑堆栈的额外边框,\tabular@gap
内部列之间有分隔(但不围绕外边缘),并且(在这种较短的堆栈的情况下,\Sstackgap
行之间有空间)。
\documentclass{scrreprt}
\usepackage{tabstackengine}
\begin{document}
\centering
\begin{tabular}[t]{rl}
Row Height: & "\textbackslash{}the \textbackslash{}getRowHeight" \\
Columdn Width: & "\textbackslash{}the \textbackslash{}getColWidth"
\end{tabular}
\the\tabcolsep
\setstacktabulargap{12pt}% COMPARABLE TO 2\tabcolsep
\tabularShortstack{rl}{
Row Height: & "\textbackslash{}the \textbackslash{}getRowHeight" \\
Columdn Width: & "\textbackslash{}the \textbackslash{}getColWidth"\\
\rule{\TABwd{1}}{\dimexpr\TABht{2}+\TABdp{1}}&
\rule{\TABwd{2}}{\dimexpr\TABht{2}+\TABdp{1}}
}
\bigskip
Column widths:
\TABwd{1}, \TABwd{2}
\medskip
Row heights/depths:
\TABht{1}/\TABdp{1}, \TABht{2}/\TABdp{2}
\end{document}
答案3
一种演示用法的方法zsavepos
。
替代方案(使用\vadjust
这样您就不需要\noalign
在表格行周围放置):
\documentclass{article}
\usepackage{zref-savepos}
\usepackage{xcolor}
\pagenumbering{gobble}
\begin{document}
\begin{tabular}{|c|c|c|}
\hline
\noalign{\zsaveposy{celltop}}
\textcolor{red}{\rule[-50pt]{0.25pt}{100pt}} & 456 & \zsaveposx{cellleft} \hfill 789 \hfill \zsaveposx{cellright} \\
\noalign{\zsaveposy{cellbottom}}
\hline
123 & 456 & \textcolor{blue}{\rule{99pt}{0.25pt}} \\\hline
\end{tabular}
height of cell: \the\dimexpr \zposy{celltop}sp-\zposy{cellbottom}sp \relax
width of cell: \the\dimexpr \zposx{cellright}sp-\zposx{cellleft}sp \relax
\end{document}
输出图像: