4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

表の 1 行目だけ中央揃えにしたい

Last updated at Posted at 2023-06-30

表の 1 行目だけ中央揃えにしたい

LaTeX で表を作成する場合、すべてのセルが \begin{tabular} に続く揃え位置に従います。そのため、\begin{tabular}{lll} のような表はすべて左揃えになり、1 行目は中央揃え、2 行目以降は左揃えのような表を作成することは出来ません。

HTML における表では、デフォルトで表の 1 行目のが太字中央揃えになっていますが、LaTeX ではそのようになっていません。そもそも、LaTeX には HTML における <thead> のような概念が無いようです。

本記事では、表の 1 行目だけ中央揃えにする方法を考えます。

■ 前提

本記事では、サンプルを作成する際に次の文書クラスとパッケージを利用します。

また、実行は LuaLaTeX を利用します。特に制約はないので、(u)pLaTeX でも動作するはずです。

■ デフォルトでの対応

\multicolumn コマンド を使ってある種の悪用をします。

\multicolumn{}{}{} は本来、横のセルを結合するコマンドです。1 つ目の引数に結合するセルの数、2 つ目の引数に揃え位置の指定、3 つ目の引数にセルの内容を与えます。

本来、1 つ目の引数には 2 以上の数を与えることで横向きにセルを結合しますが、これに 1 を与えます。これに加えて、2 つ目の引数に c(中央揃え)を指定します。

\multicolumn{1}{c}{...}

これによって、特定のセルだけが中央揃えになります。

実際にこれをそのまま利用するには面倒なので、次のように新しいコマンドとして定義しておくと良いでしょう。太字にしたい場合は、\textbf で強調しておくと良いでしょう。

\newcommand{\thead}[1]{\multicolumn{1}{c}{#1}}
% or
\newcommand{\thead}[1]{\multicolumn{1}{c}{\textbf{#1}}}

これを利用することで、次のような表を作成することが出来ます。

\documentclass[ class = jlreq, border = 2pt ]{standalone}
\usepackage{lipsum, bxjalipsum}
\usepackage{booktabs, tabularx}
\newcommand{\thead}[1]{\multicolumn{1}{c}{\textbf{#1}}}
\begin{document}

\begin{tabularx}{0.8\linewidth}{XX}
  \toprule
  \thead{日本語}           & \thead{English} \\
  \midrule
  \jalipsum[1]{kusamakura} & \lipsum[1][1]   \\
  \jalipsum[2]{kusamakura} & \lipsum[1][2]   \\
  \bottomrule
\end{tabularx}

\end{document}

define new command

期待した通りの結果を得ることが出来ました。

■ makecell パッケージの利用

makecell パッケージでは、上述した機能を有した \thead コマンドが提供されています。

makecell パッケージから提供される \thead で指定されたセルは中央揃えになりますが、\footnotesize が適用されます。そのため、これを変更したい場合は \theadfont を再定義します。

太字にしたい場合は次のようにします。

\renewcommand{\theadfont}{\bfseries}

これを利用することで、次のような表を作成することが出来ます。

\documentclass[ class = jlreq, border = 2pt ]{standalone}
\usepackage{lipsum, bxjalipsum}
\usepackage{booktabs, tabularx}
\usepackage{makecell} \renewcommand{\theadfont}{\bfseries}
\begin{document}

\begin{tabularx}{0.8\linewidth}{XX}
  \toprule
  \thead{日本語}           & \thead{English} \\
  \midrule
  \jalipsum[1]{kusamakura} & \lipsum[1][1]   \\
  \jalipsum[2]{kusamakura} & \lipsum[1][2]   \\
  \bottomrule
\end{tabularx}

\end{document}

use makecell package

概ね \multicolumn を利用した方法と同じ結果になりました。

\multicolumn を用いた方法との大きな違いは、makecell パッケージの \thead コマンドはコマンド内部で改行を許すことです。

\documentclass[ class = jlreq, border = 2pt ]{standalone}
\usepackage{lipsum, bxjalipsum}
\usepackage{booktabs, tabularx}
\usepackage{makecell} \renewcommand{\theadfont}{\bfseries}
\begin{document}

\begin{tabularx}{0.8\linewidth}{XX}
  \toprule
  \thead{\\\\}       & \thead{English} \\
  \midrule
  \jalipsum[1]{kusamakura} & \lipsum[1][1]   \\
  \jalipsum[2]{kusamakura} & \lipsum[1][2]   \\
  \bottomrule
\end{tabularx}

\end{document}

thead command provided by makecell arrows break lines

あくまで縦書きではないことに注意してください。

この他にもさまざまなコマンドが提供されています。詳しくはパッケージガイドを参照してください。

■ tabularray パッケージの利用

tabularray パッケージから提供される tblr 環境では、表作成で必要になる機能が揃っています。

tblr 環境の大きな特徴の 1 つとして、\begin{tblr} に続く引数に表のスタイルを指定できます。そのため、表自体にスタイルのためのコマンドを持ち込む必要がありません。

tblr 環境を利用することで、次のような表を作成できます。

\documentclass[ class = jlreq, border = 2pt ]{standalone}
\usepackage{lipsum, bxjalipsum}
\usepackage{tabularray}
\begin{document}

\begin{tblr}{
    width = { 0.8\linewidth },
    hline{1,Z} = { 0.08em },
    hline{2} = { 0.05em },
    colspec = { XX },
    row{1} = { halign = c, font = \bfseries },
  }
  日本語                   & English       \\
  \jalipsum[1]{kusamakura} & \lipsum[1][1] \\
  \jalipsum[2]{kusamakura} & \lipsum[1][2]
\end{tblr}

\end{document}

use tabularray package

ざっくり解説すると、次のようになっています。

  • width:表の幅を指定します
  • hline:引数の位置に水平線を引きます
    • hline{1,Z} は、表の最上と最下に引きます
    • hline{2} は、表の 1 行目と 2 行目の間に引きます
    • 太さは booktabs パッケージに対応しています
      コマンド 太さ
      \toprule
      \bottomrule
      0.08em
      \midrule 0.05em
    • 色や線のスタイルも変更できます
  • colspec:列の揃い位置を指定します
    • tabularx パッケージと同様の X を指定しています
  • row{1}:行 1 のスタイルを指定します
    • halign は水平方向の揃い位置を構成し、c によって中央揃えを指定しています
    • font はフォントを構成し、\bfseries を指定することで太字にしています

ちなみに、この表の設定は順序を問うため、calspecrow{1} を逆順にすると row{1}halign 設定が無視されてしまいます。(例によって、後の設定が優先されます)

実例は避けますが、tblr 環境では {} でセルを囲うとセル内の改行が可能です。

余談

tabularray パッケージ便利〜〜。

記事内では \textbf あるいは \bfseries のみにしていますが、ラテン文字をサンセリフ体にしたい場合は次のようにしておくと良いでしょう。

{\bfseries\gtfamily\sffamily}
% or
{\gtfamily\sffamily}

otf パッケージを利用して多書体化している場合は、\bfseries を除いた {\gtfamily\sffamily} のみにしておくと良いです。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?