在LaTeX中对齐表格

时间:2014-12-30 11:52:35

标签: latex

有没有办法在LaTeX中对齐表格?

我在同一页面上写了一个包含多个表格的文档,通常边缘不匹配。

我希望左右两边都有对齐的表格。

\paragraph{Articoli}
\begin{large}
\begin{tabular}{ | l | l | l | p{3cm} |}
\hline
\textbf{Attributo} & \textbf{Tipo} & \textbf{Byte} & \textbf{Complessivo} 
\\    \hline
& & & 1500 occorrenze \\ \hline
Codice & Char(7) & 7 & 10,7 kB \\ \hline
Nome  &  Varchar (100) & 100 & 150 kB  \\ \hline
Marca & Varchar (100) & 100 & 150 kB \\ \hline
Prezzo & Money & 8 & 12,2 kB \\ \hline
Disponibile & Integer & 4 & 6.2 kB \\ \hline
Soglia & Integer & 4 & 6.2 kB \\ \hline
Reparto & Char (4) & 4 & 6.2 kB \\ \hline
Totale &  & &   321 kB      \\ \hline
Dati + Block Header & & & 322 kB \\ \hline
    \end{tabular}
\paragraph{Reparti}
 \begin{tabular}{ | l | l | l | p{3cm} |}
    \hline
    \textbf{Attributo} & \textbf{Tipo} & \textbf{Byte} & \textbf{Complessivo}        
     \\ \hline
    & & & 120 occorrenze \\ \hline
    Codice & Char(4) & 4 & 0,5 kB  \\ \hline
    Nome  &  Varchar (100) &  100 & 12.1 kB \\ \hline
    Sezione & Char(4) & 4 & 0.5 kB \\ \hline
    Totale &  & &  12.2 kB        \\ \hline
    Dati + Block Header & & & 12.3 kB \\ \hline
        \end{tabular}
  \paragraph{Pagamenti}
 \begin{tabular}{ | l | l | l | p{3cm} |}
    \hline
    \textbf{Attributo} & \textbf{Tipo} & \textbf{Byte} & \textbf{Complessivo} \\ \hline
    & & & 10 occorrenze  \\ \hline
    Codice & Char(4) & 4 & 0,1 kB \\ \hline
    Nome  &  Varchar (100) &  100 & 1 kB  \\ \hline
            Totale &  & &  1.1 kB       \\ \hline
            Dati + Block Header & & & 1.2 kB  \\ \hline
        \end{tabular}

1 个答案:

答案 0 :(得分:0)

有很多方法可以实现这种对齐:

  1. 使用包含所有内容的单个tabular。这可确保列全部使用相同的宽度:

    enter image description here

    \documentclass{article}
    
    \begin{document}
    
    \begin{tabular}{ l | l | l | l | p{3cm} |}
      \cline{2-5}
      & \textbf{Attributo} & \textbf{Tipo} & \textbf{Byte} & \textbf{Complessivo} \\
      \cline{2-5}
      & & & & 1500 occorrenze \\ \cline{2-5}
      & Codice & Char(7) & 7 & 10,7 kB \\ \cline{2-5}
      & Nome  &  Varchar (100) & 100 & 150 kB  \\ \cline{2-5}
      & Marca & Varchar (100) & 100 & 150 kB \\ \cline{2-5}
      \textbf{Articoli} & Prezzo & Money & 8 & 12,2 kB \\ \cline{2-5}
      & Disponibile & Integer & 4 & 6.2 kB \\ \cline{2-5}
      & Soglia & Integer & 4 & 6.2 kB \\ \cline{2-5}
      & Reparto & Char (4) & 4 & 6.2 kB \\ \cline{2-5}
      & Totale &  & &   321 kB      \\ \cline{2-5}
      & Dati + Block Header & & & 322 kB \\ \cline{2-5}
      \multicolumn{1}{l}{}\\[\bigskipamount]
      \cline{2-5}
      & \textbf{Attributo} & \textbf{Tipo} & \textbf{Byte} & \textbf{Complessivo} \\
      \cline{2-5}
      & & & & 120 occorrenze \\ \cline{2-5}
      & Codice & Char(4) & 4 & 0,5 kB  \\ \cline{2-5}
      \textbf{Reparti} & Nome  &  Varchar (100) &  100 & 12.1 kB \\ \cline{2-5}
      & Sezione & Char(4) & 4 & 0.5 kB \\ \cline{2-5}
      & Totale &  & &  12.2 kB        \\ \cline{2-5}
      & Dati + Block Header & & & 12.3 kB \\ \cline{2-5}
      \multicolumn{1}{l}{}\\[\bigskipamount]
      \cline{2-5}
      & \textbf{Attributo} & \textbf{Tipo} & \textbf{Byte} & \textbf{Complessivo} \\
      \cline{2-5}
      & & & & 10 occorrenze  \\ \cline{2-5}
      & Codice & Char(4) & 4 & 0,1 kB \\ \cline{2-5}
      \raisebox{.5\normalbaselineskip}[0pt][0pt]{\textbf{Pagamenti}} &
        Nome  &  Varchar (100) &  100 & 1 kB  \\ \cline{2-5}
      & Totale &  & &  1.1 kB       \\ \cline{2-5}
      & Dati + Block Header & & & 1.2 kB  \\ \cline{2-5}
    \end{tabular}
    
    \end{document}
    

    这里的缺点是表格不会突破页面边界(除非您使用longtableltxtable之类的内容。)

  2. 使用框/重叠/幻像调整相应的条目,使它们对齐:

    enter image description here

    \documentclass{article}
    
    \begin{document}
    
    \leavevmode\rlap{\textbf{Articoli}}%
    \phantom{\textbf{Pagamenti}}
    \begin{tabular}{ | l | l | l | p{3cm} |}
      \hline
      \textbf{Attributo} & \textbf{Tipo} & \textbf{Byte} & \textbf{Complessivo} \\
      \hline
      & & & 1500 occorrenze \\ \hline
      Codice & Char(7) & 7 & 10,7 kB \\ \hline
      Nome  &  Varchar (100) & 100 & 150 kB  \\ \hline
      Marca & Varchar (100) & 100 & 150 kB \\ \hline
      Prezzo & Money & 8 & 12,2 kB \\ \hline
      Disponibile & Integer & 4 & 6.2 kB \\ \hline
      Soglia & Integer & 4 & 6.2 kB \\ \hline
      Reparto & Char (4) & 4 & 6.2 kB \\ \hline
      Totale &  & &   321 kB      \\ \hline
      Dati + Block Header & & & 322 kB \\ \hline
    \end{tabular}
    
    \bigskip
    
    \leavevmode\rlap{\textbf{Reparti}}%
    \phantom{\textbf{Pagamenti}}
    \begin{tabular}{ | l | l | l | p{3cm} |}
      \hline
      \textbf{Attributo} & \textbf{Tipo} & \textbf{Byte} & \textbf{Complessivo} \\
      \hline
      & & & 120 occorrenze \\ \hline
      Codice & Char(4) & 4 & 0,5 kB  \\ \hline
      Nome  &  Varchar (100) &  100 & 12.1 kB \\ \hline
      Sezione & Char(4) & 4 & 0.5 kB \\ \hline
      Totale &  & &  12.2 kB        \\ \hline
      Dati + Block Header & & & 12.3 kB \\ \hline
    \end{tabular}
    
    \bigskip
    
    \textbf{Pagamenti}
    \begin{tabular}{ | l | l | l | p{3cm} |}
      \hline
      \textbf{Attributo} & \textbf{Tipo} & \textbf{Byte} & \textbf{Complessivo} \\
      \hline
      & & & 10 occorrenze  \\ \hline
      Codice & Char(4) & 4 & 0,1 kB \\ \hline
      Nome  &  Varchar (100) &  100 & 1 kB  \\ \hline
      Totale &  & &  1.1 kB       \\ \hline
      Dati + Block Header & & & 1.2 kB  \\ \hline
    \end{tabular}
    
    \end{document}
    

    请注意在重叠行末尾使用%;这是为了避免虚假的空间。请参阅What is the use of percent signs (%) at the end of lines?

  3. 以下是使用booktabssiunitx的另一个演示文稿,其中包括过度使用水平规则而根本没有垂直规则:

    enter image description here

    \documentclass{article}
    \usepackage{booktabs,siunitx,etoolbox}
    \newcommand{\tipochar}[1]{Char~(#1)}
    \newcommand{\tipovarchar}[1]{Varchar~(#1)}
    \newcommand{\tipomoney}{Money}
    \newcommand{\tipointeger}{Integer}
    
    \sisetup{%
      round-integer-to-decimal, 
      round-precision = 1,
      round-mode = places
    }%
    \robustify\bfseries
    \begin{document}
    
    \begin{tabular}{ 
        >{\hspace*{1em}\itshape}l
        l
        S[table-format = 3.1]
        S[table-format = 3.2]}
      \toprule
      \multicolumn{1}{l}{\bfseries Attributo} & 
        \bfseries Tipo & 
        \multicolumn{1}{l}{\bfseries Byte} & 
        \multicolumn{1}{l}{\bfseries Complessivo [kB]} \\
      \midrule
      \multicolumn{1}{l}{Articoli} &            &     & \multicolumn{1}{c}{\num{1500} occorrenze} \\
        Codice              & \tipochar{7}      &   7 &  10.7 \\
        Nome                & \tipovarchar{100} & 100 & 150   \\
        Marca               & \tipovarchar{100} & 100 & 150   \\
        Prezzo              & \tipomoney        &   8 &  12.2 \\
        Disponibile         & \tipointeger      &   4 &   6.2 \\
        Soglia              & \tipointeger      &   4 &   6.2 \\
        Reparto             & \tipochar{4}      &   4 &   6.2 \\
        Totale              &                   &     & 321   \\
        Dati + Block Header &                   &     & 322   \\[.5\normalbaselineskip]
      \multicolumn{1}{l}{Reparti} &             &     & \multicolumn{1}{c}{\num{120} occorrenze} \\ 
        Codice              & \tipochar{4}      &   4 &   0.5 \\
        Nome                & \tipovarchar{100} & 100 &  12.1 \\
        Sezione             & \tipochar{4}      &   4 &   0.5 \\
        Totale              &                   &     &  12.2 \\
        Dati + Block Header &                   &     &  12.3 \\[.5\normalbaselineskip]
      \multicolumn{1}{l}{Pagamenti} &           &     & \multicolumn{1}{c}{\num{10} occorrenze} \\
        Codice              & \tipochar{4}      &   4 &   0.1 \\
        Nome                & \tipovarchar{100} & 100 &   1   \\
        Totale              &                   &     &   1.1 \\
        Dati + Block Header &                   &     &   1.2 \\
      \bottomrule
    \end{tabular}
    
    \end{document}