表の小数点揃え

(上級編)

最終更新:

概要

実験Aでは測定した多数のデータを表にまとめることが何度もあるが、LaTeXで思った通りに表が作成できないといったことがよくあると思われる。特に、符号の付いた値やオーダーの異なる値を同じ列に並べると、普通の方法では綺麗に揃えることができない。表の値を適切に揃えるだけでレポートの見た目が本格的になるので、是非このページの内容をレポートに取り入れて頂きたい。

例示用データ

説明のために以下のデータを用意した。2列目の数値の桁数がバラバラなほか、わざと3列目の有効数字を落としたので4列目の数値が符号の有無や有効数字の違いなどで不揃いとなっている。


\begin{table}[h]
\centering
\caption{サイコロを振った結果($N=600$)}
\begin{tabular}{cccc} \hline
目 & 回数$n$ & 割合$n/N$ & 理論値との差$(n/N - 1/6)$ \\ \hline
1 &  88 & 0.147 & \num{-2.0e-2} \\
2 & 102 & 0.170 & \num{3e-3} \\
3 &  84 & 0.140 & \num{-2.7e-2} \\
4 & 114 & 0.190 & \num{2.3e-2} \\
5 & 109 & 0.182 & \num{1.5e-2} \\
6 & 103 & 0.172 & \num{5e-3} \\ \hline
\end{tabular}
\end{table}
		

siunitxで値を揃える

表の内容を揃える位置として普通l, c, rのいずれかをtabular環境で指定するが、siunitxパッケージを読み込むと「S」が使えるようになる。Sを使うと、表の中で\num\SIを使う必要がなくなるほか、自動で数値を揃えてくれる。見出しのように数値ではない部分は、{ }で括るとテキストとして扱われる。


\begin{table}[h]
\centering
\caption{サイコロを振った結果($N=600$)}
\begin{tabular}{cScS} \hline
目 & {回数$n$} & 割合$n/N$ & {理論値との差$(n/N - 1/6)$} \\ \hline
1 &  88 & 0.147 & -2.0e-2 \\
2 & 102 & 0.170 & 3e-3 \\
3 &  84 & 0.140 & -2.7e-2 \\
4 & 114 & 0.190 & 2.3e-2 \\
5 & 109 & 0.182 & 1.5e-2 \\
6 & 103 & 0.172 & 5e-3 \\ \hline
\end{tabular}
\end{table}
		

初期設定では小数点がセルの中央に来るように揃えられるため、2列目では数値が左に寄ってしまい、4列目では指数部分が揃っていない。そこで、オプションを追加すると揃え方を詳しく設定できる。オプションの指定方法はsiunitxのオプションで述べたほか、Sの直後に指定することもできる。その場合のオプションはその列にのみ適用される。


\
%table-number-alignment - 値を列のどの位置に配置するか
%left: 左揃え, center, 中央揃え, right: 右揃え, center-decimal-marker: 小数点を中央に デフォルトはcenter-decimal-marker
%center-decimal-marker以外のときは後述のオプションで表示桁数の指定が必要

%table-format - 表示桁数の指定
%[+](整数部の桁数)[.(小数点以下の桁数)][e[+](指数部の桁数)] の形式で指定
%+は符号の幅を確保するかどうか
%例: 3, 2.3, +1.3e+2
%table-formatを設定するとcenter-decimal-markerは自動的にcenterに設定される

%table-figures-uncertainty - 不確かさの幅の指定
%整数を指定、0だと不確かさは表示されない
%とりあえず1を指定しておけば良さそう
		

まとめ

オプションが複雑なので簡単にまとめると、揃え位置に「S」を指定して、table-formatオプションで桁数を指定するだけで良い。正負の数が混じっているときなどは桁数に+を付けると符号の幅が考慮される。


\begin{table}[h]
\centering
\caption{サイコロを振った結果($N=600$)}
\begin{tabular}{cS[table-format=3.0]cS[table-format=+1.1e+1]} \hline
目 & {回数$n$} & 割合$n/N$ & {理論値との差$(n/N - 1/6)$} \\ \hline
1 &  88 & 0.147 & -2.0e-2 \\
2 & 102 & 0.170 & 3e-3 \\
3 &  84 & 0.140 & -2.7e-2 \\
4 & 114 & 0.190 & 2.3e-2 \\
5 & 109 & 0.182 & 1.5e-2 \\
6 & 103 & 0.172 & 5e-3 \\ \hline
\end{tabular}
\end{table}
		

不確かさ付きの数値を揃えるにはtable-figures-uncertaintyに適当な数値を指定すれば良い。


\sisetup{separate-uncertainty}
\begin{table}[h]
\centering
\caption{不確かさを揃える}
\begin{tabular}{cS[table-format=2.3,table-figures-uncertainty=1]} \hline
  & {見出し} \\ \hline
1 &  0.050+- 0.001  \\
2 &  0.50 +- 0.01   \\
3 &  5.0  +- 0.1    \\
4 & 50    +- 1      \\ \hline
\end{tabular}
\end{table}
		

関連項目

戻る