![表格列宽和列间距](https://linux22.com/image/363915/%E8%A1%A8%E6%A0%BC%E5%88%97%E5%AE%BD%E5%92%8C%E5%88%97%E9%97%B4%E8%B7%9D.png)
情况
我定义了自定义列类型,以便管理列宽和文本对齐。我定义这些列类型如下:
\newcolumntype{L}[1]{>{\raggedright\arraybackslash}p{#1\linewidth}}
问题
当使用这些自定义列类型时,宽度参数的总和不能等于 1。实际上,它没有考虑列间距。
问题
有没有办法从声明tabcolsep
中分配的长度中减去长度newcolumntype
?
演示
平均能量损失
\documentclass[draft]{article}
\usepackage{mwe}
\usepackage[showframe]{geometry}
\usepackage{booktabs}
\usepackage{array}
\newcolumntype{L}[1]{>{\raggedright\arraybackslash}p{#1\linewidth}}
\begin{document}
% Overfull \hbox (12.0pt too wide)
\noindent
\begin{tabular}{L{1}}
\toprule
\lipsum[1] \\
\bottomrule
\end{tabular}
% Manual unreliable fix
\noindent
\begin{tabular}{L{.97}}
\toprule
\lipsum[1] \\
\bottomrule
\end{tabular}
\end{document}
答案1
您可以使用
p{\dimexpr#1\linewidth-2\tabcolsep\relax}