supertabular環境 と longtable 環境 の比較: longtable環境 の方が良さそう

はじめに

ページをまたがる表をLaTeXで作成するための環境として、supertabular環境とlongtable環境があります。

ここでは、その二つの環境を比較してみました。

結論

結論から言うと、個人的にはlongtable環境の方が良さそうに思います。主な違いは

  • supertabular環境の場合は表の幅がページ毎に変動する。一方のlongtable環境では一つの表は同じ幅でタイプセットされる。
  • supertabular環境の方が、longtable環境よりもページ当たりの表の長さが短い。
  • supertabular環境はセンタリングはcenter環境が必要。longtable環境は位置決めのオプションがある。

のような感じでしょうか。

以下に具体例を示します。

supertabular環境

上のソースは以下です。元ネタは Hypertext Transfer Protocol (HTTP) Status Code Registry です。

\documentclass{jsarticle}
\usepackage{geometry}
\geometry{top=2truecm, bottom=2truecm, left=1truecm, right=1truecm, includefoot}
\usepackage{supertabular}

\begin{document}
\tablecaption{HTTP Status Codes}
%\tablehead{\hline}
%\tabletail{\hline}
\begin{supertabular}{|cll|} \hline
100 &  Continue &  [RFC7231, Section 6.2.1] \\
101 &  Switching Protocols  & [RFC7231, Section 6.2.2] \\
102 &  Processing  & [RFC2518] \\
103-199 &  Unassigned  & \\
200  & OK  & [RFC7231, Section 6.3.1] \\
201  & Created  & [RFC7231, Section 6.3.2] \\
202  & Accepted  & [RFC7231, Section 6.3.3] \\
203  & Non-Authoritative Information  & [RFC7231, Section 6.3.4] \\
204  & No Content  & [RFC7231, Section 6.3.5] \\
205  & Reset Content  & [RFC7231, Section 6.3.6] \\
206  & Partial Content  & [RFC7233, Section 4.1] \\
207  & Multi-Status  & [RFC4918] \\
208  & Already Reported  & [RFC5842] \\
209-225  & Unassigned  & \\
226  & IM Used  & [RFC3229] \\
227-299  & Unassigned  &  \\
300  & Multiple Choices  & [RFC7231, Section 6.4.1] \\
301  & Moved Permanently  & [RFC7231, Section 6.4.2] \\
302  & Found  & [RFC7231, Section 6.4.3] \\
303  & See Other  & [RFC7231, Section 6.4.4] \\
304  & Not Modified  & [RFC7232, Section 4.1] \\
305  & Use Proxy  & [RFC7231, Section 6.4.5] \\
306  & (Unused)  & [RFC7231, Section 6.4.6] \\
307  & Temporary Redirect  & [RFC7231, Section 6.4.7] \\
308  & Permanent Redirect  & [RFC7538] \\
309-399  & Unassigned  &  \\
400  & Bad Request  & [RFC7231, Section 6.5.1] \\
401  & Unauthorized  & [RFC7235, Section 3.1] \\
402  & Payment Required  & [RFC7231, Section 6.5.2] \\
403  & Forbidden  & [RFC7231, Section 6.5.3] \\
404  & Not Found  & [RFC7231, Section 6.5.4] \\
405  & Method Not Allowed  & [RFC7231, Section 6.5.5] \\
406  & Not Acceptable  & [RFC7231, Section 6.5.6] \\
407  & Proxy Authentication Required  & [RFC7235, Section 3.2] \\
408  & Request Timeout  & [RFC7231, Section 6.5.7] \\
409  & Conflict  & [RFC7231, Section 6.5.8] \\
410  & Gone  & [RFC7231, Section 6.5.9] \\
411  & Length Required  & [RFC7231, Section 6.5.10] \\
412  & Precondition Failed  & [RFC7232, Section 4.2] \\
413  & Payload Too Large  & [RFC7231, Section 6.5.11] \\
414  & URI Too Long  & [RFC7231, Section 6.5.12] \\
415  & Unsupported Media Type  & [RFC7231, Section 6.5.13]  [RFC7694, Section 3] \\
416  & Range Not Satisfiable  & [RFC7233, Section 4.4] \\
417  & Expectation Failed  & [RFC7231, Section 6.5.14] \\
418-420  & Unassigned  & \\ 
421  & Misdirected Request  & [RFC7540, Section 9.1.2] \\
422  & Unprocessable Entity  & [RFC4918] \\
423  & Locked  & [RFC4918] \\
424  & Failed Dependency  & [RFC4918] \\
425  & Unassigned  &  \\
426  & Upgrade Required  & [RFC7231, Section 6.5.15] \\
427  & Unassigned  &  \\
428  & Precondition Required  & [RFC6585] \\
429  & Too Many Requests  & [RFC6585] \\
430  & Unassigned  &  \\
431  & Request Header Fields Too Large  & [RFC6585] \\
432-450  & Unassigned  &  \\
451  & Unavailable For Legal Reasons  & [RFC7725] \\
452-499  & Unassigned  &  \\
500  & Internal Server Error  & [RFC7231, Section 6.6.1] \\
501  & Not Implemented  & [RFC7231, Section 6.6.2] \\
502  & Bad Gateway  & [RFC7231, Section 6.6.3] \\
503  & Service Unavailable  & [RFC7231, Section 6.6.4] \\
504  & Gateway Timeout  & [RFC7231, Section 6.6.5] \\
505  & HTTP Version Not Supported  & [RFC7231, Section 6.6.6] \\
506  & Variant Also Negotiates  & [RFC2295] \\
507  & Insufficient Storage  & [RFC4918] \\
508  & Loop Detected  & [RFC5842] \\
509  & Unassigned  &  \\
510  & Not Extended  & [RFC2774] \\
511  & Network Authentication Required  & [RFC6585] \\
 512-599  & Unassigned & \\ \hline
\end{supertabular}
\end{document}

longtable環境

ソースは以下です。

\documentclass{jsarticle}
\usepackage{geometry}
\geometry{top=2truecm, bottom=2truecm, left=1truecm, right=1truecm, includefoot}
\usepackage{longtable}

\begin{document}

%\tablehead{\hline}
%\tabletail{\hline}
\setlongtables
\begin{longtable}[c]{|cll|}
 \caption{HTTP Status Codes} \\
% \hline
% \endhead
 \hline
% \endfoot
 100 &  Continue &  [RFC7231, Section 6.2.1] \\
101 &  Switching Protocols  & [RFC7231, Section 6.2.2] \\
102 &  Processing  & [RFC2518] \\
103-199 &  Unassigned  & \\
200  & OK  & [RFC7231, Section 6.3.1] \\
201  & Created  & [RFC7231, Section 6.3.2] \\
202  & Accepted  & [RFC7231, Section 6.3.3] \\
203  & Non-Authoritative Information  & [RFC7231, Section 6.3.4] \\
204  & No Content  & [RFC7231, Section 6.3.5] \\
205  & Reset Content  & [RFC7231, Section 6.3.6] \\
206  & Partial Content  & [RFC7233, Section 4.1] \\
207  & Multi-Status  & [RFC4918] \\
208  & Already Reported  & [RFC5842] \\
209-225  & Unassigned  & \\
226  & IM Used  & [RFC3229] \\
227-299  & Unassigned  &  \\
300  & Multiple Choices  & [RFC7231, Section 6.4.1] \\
301  & Moved Permanently  & [RFC7231, Section 6.4.2] \\
302  & Found  & [RFC7231, Section 6.4.3] \\
303  & See Other  & [RFC7231, Section 6.4.4] \\
304  & Not Modified  & [RFC7232, Section 4.1] \\
305  & Use Proxy  & [RFC7231, Section 6.4.5] \\
306  & (Unused)  & [RFC7231, Section 6.4.6] \\
307  & Temporary Redirect  & [RFC7231, Section 6.4.7] \\
308  & Permanent Redirect  & [RFC7538] \\
309-399  & Unassigned  &  \\
400  & Bad Request  & [RFC7231, Section 6.5.1] \\
401  & Unauthorized  & [RFC7235, Section 3.1] \\
402  & Payment Required  & [RFC7231, Section 6.5.2] \\
403  & Forbidden  & [RFC7231, Section 6.5.3] \\
404  & Not Found  & [RFC7231, Section 6.5.4] \\
405  & Method Not Allowed  & [RFC7231, Section 6.5.5] \\
406  & Not Acceptable  & [RFC7231, Section 6.5.6] \\
407  & Proxy Authentication Required  & [RFC7235, Section 3.2] \\
408  & Request Timeout  & [RFC7231, Section 6.5.7] \\
409  & Conflict  & [RFC7231, Section 6.5.8] \\
410  & Gone  & [RFC7231, Section 6.5.9] \\
411  & Length Required  & [RFC7231, Section 6.5.10] \\
412  & Precondition Failed  & [RFC7232, Section 4.2] \\
413  & Payload Too Large  & [RFC7231, Section 6.5.11] \\
414  & URI Too Long  & [RFC7231, Section 6.5.12] \\
415  & Unsupported Media Type  & [RFC7231, Section 6.5.13]  [RFC7694, Section 3] \\
416  & Range Not Satisfiable  & [RFC7233, Section 4.4] \\
417  & Expectation Failed  & [RFC7231, Section 6.5.14] \\
418-420  & Unassigned  & \\ 
421  & Misdirected Request  & [RFC7540, Section 9.1.2] \\
422  & Unprocessable Entity  & [RFC4918] \\
423  & Locked  & [RFC4918] \\
424  & Failed Dependency  & [RFC4918] \\
425  & Unassigned  &  \\
426  & Upgrade Required  & [RFC7231, Section 6.5.15] \\
427  & Unassigned  &  \\
428  & Precondition Required  & [RFC6585] \\
429  & Too Many Requests  & [RFC6585] \\
430  & Unassigned  &  \\
431  & Request Header Fields Too Large  & [RFC6585] \\
432-450  & Unassigned  &  \\
451  & Unavailable For Legal Reasons  & [RFC7725] \\
452-499  & Unassigned  &  \\
500  & Internal Server Error  & [RFC7231, Section 6.6.1] \\
501  & Not Implemented  & [RFC7231, Section 6.6.2] \\
502  & Bad Gateway  & [RFC7231, Section 6.6.3] \\
503  & Service Unavailable  & [RFC7231, Section 6.6.4] \\
504  & Gateway Timeout  & [RFC7231, Section 6.6.5] \\
505  & HTTP Version Not Supported  & [RFC7231, Section 6.6.6] \\
506  & Variant Also Negotiates  & [RFC2295] \\
507  & Insufficient Storage  & [RFC4918] \\
508  & Loop Detected  & [RFC5842] \\
509  & Unassigned  &  \\
510  & Not Extended  & [RFC2774] \\
511  & Network Authentication Required  & [RFC6585] \\
 512-599  & Unassigned & \\ \hline
\end{longtable}
\end{document}