如何在 LaTeX 的表格中用列名设置列宽?

如何在 LaTeX 的表格中用列名设置列宽?

我得到了一个解决方案https://tex.stackexchange.com/a/42186/128718他给出了使用 LaTeX 创建出勤表的解决方案。他的解决方案很好。

但是,他把列宽和标题放在了单独的一行。当我有很多列,需要一次又一次地更改列宽以调整到预期的外观时,我必须搜索p{width}那个列,这很无聊且耗时。

因此,如果有一种方法可以将宽度放在列标题旁边,则可以轻松更改任何列的宽度。(例如column{|Name}{width=2cm}

您可以提供任何解决方案来创建具有预期功能的考勤表/其他表格。

答案1

这用于\makebox在一个步骤中合并宽度和标题。它不会检查标题是否适合请求的空间。也可以使用\parbox

我开始尝试使用循环来添加线条,发现它比我想象的要难,然后决定不值得付出努力。

\documentclass{article}
\begin{document}

\def\arraystretch{2.5}% vertical spacing in multiples of \strut
\def\aline{&&&&\\\hline}% number of & = number of columns-1
\noindent\begin{tabular}{|l|l|l|l|l|}
\hline
\makebox[2cm][l]{Name}& 
\makebox[2cm][l]{Item}& 
\makebox[2cm][l]{Pickup}& 
\makebox[2cm][l]{Return}& 
\makebox[2cm][l]{Signature}\\\hline
\aline
\aline
\aline
\aline
\aline
\aline
\aline
\aline
\aline
\aline
\aline
\aline
\aline
\aline
\end{tabular}

\end{document}

答案2

@{}一种可能性是使用列定义来消除左右单元格边距:

\begin{tabular}{|@{}l@{}|@{}l@{}|@{}l@{}|@{}l@{}|@{}l@{}|}

然后,对于标题行,您可以将标题名称(使用\rlap)与所需宽度的水平空间重叠:

\rlap{ Name}\hspace{2cm} & \rlap{ Item}\hspace{3cm} & \rlap{ Pickup}\hspace{2cm} & \rlap{ Return}\hspace{2cm} & \rlap{ Signature}\hspace{3cm}

另一种可能性是将注释插入到列定义中。您可以定义一个宏:

\newcommand{\xx}[1]{}

什么都不做。所以\xx{stuff}基本上只会变成stuff注释。您的代码将如下所示:

\begin{tabular}{|p{2cm}\xx{name}|p{3cm}\xx{item}|p{2cm}\xx{pickup}|p{2cm}\xx{return}|p{3cm}\xx{sign}|}

相关内容