在以下示例中,我将一些 lorem ipsum 文本转储到输出中,以便了解\textwidth
。然后我创建一个简单的表格,并将其第一列设置为\textwidth
。
\documentclass{article}
%\usepackage{showframe}
\usepackage{lipsum}
\begin{document}
\lipsum[2-4]
\begin{table}[h]
\caption{Vacancy details}
\label{table:scientific-software-engineer}
\centering
\begin{tabular}{|p{\textwidth}|c|}
\hline
Item & Information \\
\hline
\hline
Location & Eindhoven \\
\hline
Experience & 3-5 years \\
\hline
Recruiter name & Bob \\
\hline
\end{tabular}
\end{table}
\lipsum[2-4]
\end{document}
使用渲染 pdf 输出latexmk -pdflatex table.tex
显示,我明确设置宽度的列比 更宽\textwidth
。
为什么会发生这种情况?我做错了什么?
答案1
我想你没有做错什么,但\tabcolsep
如果我记得/理解正确的话,列的总宽度还将包括两端的填充。你可以使用 减去它p{\dimexpr\textwidth-2\tabcolsep\relax}
。(注意:如果你的文档加载了array
包,那么你可能还需要减去垂直规则的宽度p{\dimexpr\textwidth-2\tabcolsep-2\arrayrulewidth\relax}
:)
\tabcolsep
或者,您可以通过设置为 0pt 来删除该填充,或者对于该特定列使用@{}p{\textwidth}@{}
(但这看起来不太好)。将@{}
用您在括号中添加的任何内容替换列开头/结尾处的空间。
\documentclass{article}
%\usepackage{showframe}
\usepackage{lipsum}
\begin{document}
\lipsum[2-4]
\begin{table}[h]
\caption{Vacancy details}
\label{table:scientific-software-engineer}
\centering
\begin{tabular}{|p{\dimexpr\textwidth-2\tabcolsep\relax}|c|}
\hline
Item & Information \\
\hline
\hline
Location & Eindhoven \\
\hline
Experience & 3-5 years \\
\hline
Recruiter name & Bob \\
\hline
\end{tabular}
\begin{tabular}{|@{}p{\textwidth}@{}|c|}
\hline
Item & Information \\
\hline
\hline
Location & Eindhoven \\
\hline
Experience & 3-5 years \\
\hline
Recruiter name & Bob \\
\hline
\end{tabular}
\end{table}
\lipsum[2-4]
\end{document}