如何调整tabular
宽度以适应由 定义的数学主体geometry
?在下面的例子中,表格比由包定义的主体边框更靠右geometry
。
\documentclass{article}
\usepackage[showframe]{geometry}
\usepackage{lipsum}
\begin{document}
\begin{center}
\begin{tabular}{|p{0.3\linewidth}|p{0.7\linewidth}|}
\hline
\lipsum[2] & \lipsum[2]\\\hline
\end{tabular}
\end{center}
\end{document}
答案1
从图片中可以看出:列之间有空格,每列两侧都有 \tabcolsep,因此表格
\textwidth+4\tabcolsep
如果你加载了数组包,那么规则将占用宽度,并且它将
\textwidth+4\tabcolsep+3\arrayrulewidth
所以使用
\dimen0=\textwidth-4\tabcolsep
\begin{tabular}{|p{.3\dimen0}|p{.7\dimen0}|}
答案2
您需要考虑这样一个事实:表格具有三个垂直条(每个宽度为\arrayrulewidth
),并且每列的左侧和右侧都有空白填充(数量为\tabcolsep
)。
您可以手动调整列宽,如下面的第一个示例所示,或者使用该tabularx
包并设置tabularx
环境以使列的相对宽度为 0.3 和 0.7。(由于有两列,因此\hsize
宏的总和必须为 2。)
\documentclass{article}
\usepackage[showframe,vmargin=1cm]{geometry} % make both tables fit on one page
\usepackage{lipsum,tabularx}
\begin{document}
\noindent
\begin{tabular}{|
p{\dimexpr0.3\linewidth-2\tabcolsep-1.5\arrayrulewidth\relax}|
p{\dimexpr0.7\linewidth-2\tabcolsep-1.5\arrayrulewidth\relax}|}
\hline
\lipsum[2] & \lipsum[2]\\
\hline
\end{tabular}
\bigskip
\noindent
\begin{tabularx}{\textwidth}{|
>{\hsize=0.6\hsize}X|
>{\hsize=1.4\hsize}X|}
\hline
\lipsum[2] & \lipsum[2]\\
\hline
\end{tabularx}
\end{document}