情况
我定义了自定义列类型,以便管理列宽和文本对齐。我定义这些列类型如下:
\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}