我想调试以下代码中的一些宽度问题,但\typeout
打印的是命令而不是实际值:
\documentclass{article}
\usepackage[margin=3cm]{geometry}
\usepackage{array}
\usepackage{booktabs}
\usepackage[table]{xcolor}
\usepackage{tabularx}
\begin{document}
\newenvironment{messageWithProperties}[1]
{
\noindent
\tabularx{\textwidth}{>{\bfseries}lX}
\toprule
\midrule
header &
$\left\{\tabular{>{\bfseries}l l >{\sffamily}p{\dimexpr\textwidth-12\tabcolsep-5\fboxsep-7.5cm\relax}}
\toprule
id & integer & desc \\
key & integer & desc \\
\bottomrule
\endtabular\right\}$ \\[4ex]
\midrule
#1 &
$\left\{\tabular{>{\bfseries}l l >{\sffamily}p{\dimexpr\textwidth-12\tabcolsep-5\fboxsep-7.5cm\relax}}
\toprule
\typeout{Debug \dimexpr\textwidth-3\tabcolsep-5\fboxsep-7.5cm\relax}
}
{
\bottomrule
\endtabular\right\}$ \\[4ex]
\midrule
\bottomrule
\endtabularx
}
\begin{messageWithProperties}{someVeryLongName}
userId & string & desc \\
propertyName & veryLongStringType & a very very long description of the field \\
\end{messageWithProperties}
\end{document}
(代码来自“如何限制嵌套表格的宽度?“ 问题)
答案1
a\dimexpr
就像一个匿名的 dimen 寄存器,并且应用相同的命令,因此\the
将给出其打印形式
\the\dimexpr\textwidth-3\tabcolsep-5\fboxsep-7.5cm\relax