如何为空白列添加标题?

如何为空白列添加标题?

我从这个网站找到一个表格代码,其中有一列是空白的。他没有&为每一行使用,只是\hspace在标题上放了一个。

\documentclass{article}

\begin{document}

\begin{tabular}{|l|@{\hspace{1em}}|}
  \hline
  A \\
  \hline
  B \\
  \hline
\end{tabular}

\begin{tabular}{|l|@{\hspace{2em}}|}
  \hline
  A \\
  \hline
  B \\
  \hline
\end{tabular}

\end{document}  

在此处输入图片描述

来源:如何在空列中留出足够的空间?

我的问题是我想制作这种类型的表格(不需要垂直线),其中一些列是空白的,但有标题。我不想&为每一行都放。我想做一些类似的事情,\begin{tabular}{|l|@\header{Quantity{\hspace{1em}}}|}
我需要这个来回答这个问题如何用 LaTeX 制作好的市场/购物/杂货清单?

答案1

如果最后一列没有任何内容,并且不需要垂直规则,则可以执行以下操作:

\documentclass{article}
\begin{document}

\begin{tabular}{ll}
Name & Quantity \\
A \\
B \\
C
\end{tabular}

\end{document}

您可以在最后一列之前用 来结束表格行\\,不需要添加所有&

代码输出

答案2

这是一种比较 hack 的方法,但是大多数情况下下面的方法应该可行。\myheader需要:

  • 一个可选参数指定对齐方式,r右对齐,c居中,其他一切都左对齐。
  • 该可选参数之后是一个强制参数,其中包含第一列标题的内容。
  • 之后,需要输入一个可选参数[<alignment>,<width>],其中<alignment>表示r右对齐、c居中或j两端对齐,其他内容均固定为左对齐<width>。如果没有给出可选参数,则内容左对齐,但没有固定宽度。
  • 最后是第二列标题的内容

代码:

\documentclass[]{article}

\makeatletter
\newcommand\myStrCMP[2]
  {%
    \bgroup
      \def\tmpa{#1}%
      \def\tmpb{#2}%
      \ifx\tmpa\tmpb
        \egroup
        \expandafter\@firstoftwo
      \else
        \egroup
        \expandafter\@secondoftwo
      \fi
  }

\newcommand\myheader[2][l]
  {%
    \myStrCMP{#1}{c}{\hfill#2\hfill}
      {%
        \myStrCMP{#1}{r}{\hfill#2}{#2\hfill}%
      }
    \myheader@i
  }
\def\myheader@i%
  {%
    \@ifnextchar[
      {\myheader@ii}
      {\myheader@iii}%
  }
\long\def\myheader@ii[#1,#2]#3%
  {%
    \myStrCMP{#1}{r}
      {\myheader@iii{\parbox{\dimexpr#2-2\tabcolsep\relax}{\raggedleft#3}}}
      {%
        \myStrCMP{#1}{c}
          {%
            \myheader@iii
              {%
                \parbox
                  {\dimexpr#2-2\tabcolsep\relax}{\centering#3}%
              }%
          }
          {%
            \myStrCMP{#1}{j}
              {%
                \myheader@iii{\parbox{\dimexpr#2-2\tabcolsep\relax}{#3}}%
              }
              {%
                \myheader@iii
                  {\parbox{\dimexpr#2-2\tabcolsep\relax}{\raggedright#3}}%
              }
          }%
      }%
  }
\newcommand\myheader@iii[1]
  {%
    \rlap{\hskip2\tabcolsep#1}%
  }
\makeatother

\begin{document}
\begin{tabular}[]{|l|@{\hspace{5em}}|}
  \hline
  \myheader{1col}{2col}\\
  \hline
  Abc is longer than header\\
  \hline
  B\\
  \hline
\end{tabular}

\begin{tabular}[]{|l|@{\hspace{5em}}|}
  \hline
  \myheader[c]{1col}[c,5em]{2col}\\
  \hline
  Abc is longer than header\\
  \hline
  B\\
  \hline
\end{tabular}

\begin{tabular}[]{|l|@{\hspace{5em}}|}
  \hline
  \myheader[r]{1col}[r,5em]{2col}\\
  \hline
  Abc is longer than header\\
  \hline
  B\\
  \hline
\end{tabular}

\begin{tabular}[]{|l|@{\hspace{5em}}|}
  \hline
  \myheader[l]{1col}[l,5em]{2col with long header}\\
  \hline
  Abc is longer than header\\
  \hline
  B\\
  \hline
\end{tabular}
\end{document}

结果:

在此处输入图片描述

答案3

您可以使用\multicolumn

\documentclass{article}

\begin{document}

\begin{tabular}{|l|@{\hspace{6em}}|}
  \hline
  \multicolumn{1}{|r|}{Quantity}\\
  \hline
  A \\
  \hline
  B \\
  \hline
\end{tabular}

\end{document}

相关内容