我需要自动设置表格环境的宽度;由于某些原因,该tabularc/x/y
环境无法正常工作。我有一些用于\settowidth
测量示例表格宽度的代码;然后我可以在此基础上进行所需的计算。但不幸的是,\settowidth
似乎没有产生一致的结果。在我的(大型且复杂的)实际文档中,计算出的宽度忽略了表格左侧和右侧规则的宽度;这最终会产生一个过满的水平盒子。
以下简短文件演示了这个问题。如果您格式化文件(使用 latex 或 pdflatex)并查看放大的结果,您会看到水平线的宽度不如表格那么宽,而垂直线的高度恰好与表格的高度相匹配。我附上了左下角的屏幕截图作为其外观的示例:
这肯定不是错误吧?但显然还有更多文字\settowidth
声称……
\documentclass{article}
\begin{document}
\newcommand{\tabletest}{%
\begin{tabular}[b]{|l|r|}
\hline
Some & data\\
\hline
Some more & stuff\\
\hline
\end{tabular}%
}
\newlength{\tabledepth}
\newlength{\tableheight}
\newlength{\tablewidth}
\settodepth{\tabledepth}{\tabletest}
\settoheight{\tableheight}{\tabletest}
\settowidth{\tablewidth}{\tabletest}
\addtolength{\tableheight}{\tabledepth}
\noindent\rule{4pt}{\tableheight}\hspace*{2pt}\tabletest
\\[-6pt]
\noindent\hspace*{6pt}\rule{\tablewidth}{4pt}
\end{document}
答案1
数组包实现表格规则的方式与 TeX 不同,它负责处理水平/垂直规则宽度。
\documentclass{article}
\usepackage{array}
\begin{document}
\newcommand{\tabletest}{%
\begin{tabular}[b]{|l|r|}
\hline
Some & data\\
\hline
Some more & stuff\\
\hline
\end{tabular}%
}
\newlength{\tabledepth}
\newlength{\tableheight}
\newlength{\tablewidth}
\settodepth{\tabledepth}{\tabletest}
\settoheight{\tableheight}{\tabletest}
\settowidth{\tablewidth}{\tabletest}
\addtolength{\tableheight}{\tabledepth}
\noindent\rule{4pt}{\tableheight}\hspace*{2pt}\tabletest
\\[-6pt]
\noindent\hspace*{6pt}\rule{\tablewidth}{4pt}
\end{document}