siunitx 列幅の縮小

siunitx 列幅の縮小

パッケージを使用してテーブルを作成しようとしていますsiunitx。ただし、各列には大量の空白が埋め込まれています。 を変更することでtabcolsep、各列の右側の空白の量を減らすことができますが、左側の空白の量を変更することはできません。 変更すると、table-column-width余分な空白が保持されたまま、hbox オーバーフローが発生するだけです。

MWE は次のとおりです。

\documentclass{article}
\usepackage{siunitx}
\usepackage{lscape}

\begin{document}
  \setlength{\tabcolsep}{0.2em}
  \begin{landscape}
    \centerline{
      \begin{tabular}{
          S |
          S |
          S |
          S |
          S |
          S |
          S |
          S |
          S |
          S |
          S
        }
3 & 3.20E+01 & 3.13E-02 & 1.25E-01 & 3.75E+08 & 5.07E+05 & 1.50E+01 & 6.67E-02 & 1.25E-01 & 3.75E+08 & 5.07E+05 \\
      \end{tabular}
    }%//centerline
  \end{landscape}
\end{document}

明示的に設定したバージョンは次のとおりですtable-column-width

\documentclass{article}
\usepackage{siunitx}
\usepackage{lscape}

\begin{document}
  \setlength{\tabcolsep}{0.2em}
  \begin{landscape}
    \centerline{
      \begin{tabular}{
          S[table-column-width=8em] |
          S[table-column-width=8em] |
          S[table-column-width=8em] |
          S[table-column-width=8em] |
          S[table-column-width=8em] |
          S[table-column-width=8em] |
          S[table-column-width=8em] |
          S[table-column-width=8em] |
          S[table-column-width=8em] |
          S[table-column-width=8em] |
          S[table-column-width=8em]
        }
3 & 3.20E+01 & 3.13E-02 & 1.25E-01 & 3.75E+08 & 5.07E+05 & 1.50E+01 & 6.67E-02 & 1.25E-01 & 3.75E+08 & 5.07E+05 \\
      \end{tabular}
    }%//centerline
  \end{landscape}
\end{document}

表が 1 ページに収まるように、各数字の左側の空白を削除する方法を教えてください。 ありがとうございます。

答え1

以下では、すべての列に同じ形式を使用しました。つまり、 のような短い数字の周囲には余分な部分があります3。さらに数字を近づけたい場合は、各列の形式を個別に調整してください。

現在のフォーマット1.2e-1

  • 1小数点の前の数字
  • 2小数点の後ろの数字
  • eスペースが必要
  • -スペースが必要
  • 1指数部の桁

としてミコが提案コメント: 間隔をさらに狭くするには、パッケージtight-spacing=trueのオプションとしてsiunitx、またはS列でのいずれかを使用できます。

\documentclass{article}
\usepackage[tight-spacing=true]{siunitx}
\usepackage{lscape}

\begin{document}
  \setlength{\tabcolsep}{0.2em}
  \begin{landscape}
    \centering
      \begin{tabular}{
            c|
          *{10}{S[table-format=1.2e-1]|}
        }
3 & 3.20E+01 & 3.13E-02 & 1.25E-01 & 3.75E+08 & 5.07E+05 & 1.50E+01 & 6.67E-02 & 1.25E-01 & 3.75E+08 & 5.07E+05 \\
      \end{tabular}
  \end{landscape}
\end{document}

ここに画像の説明を入力してください

答え2

さまざまな数値形式を試すこともできます。負の指数を持つものもあれば、そうでないものもあります。各セルの内容がその列を表す場合、2 番目の表形式になります。

\documentclass{article}

\usepackage{siunitx}
\usepackage{lscape}

\begin{document}

\begin{landscape}
  \centering
  \setlength{\tabcolsep}{4pt}
  \sisetup{table-format=1.2e-1,table-number-alignment=center}
  \begin{tabular}{|l |*{10}{S|}}
    3 & 3.20E+01 & 3.13E-02 & 1.25E-01 & 3.75E+08 & 5.07E+05 & 1.50E+01 & 6.67E-02 & 1.25E-01 & 3.75E+08 & 5.07E+05 \\
  \end{tabular}
  \vspace*{1cm}

  \begin{tabular}{|l|S[table-format =1.2e1]|*{2}{S|}*{3}{S[table-format =1.2e1]|}*{2}{S|}*{2}{S[table-format =1.2e1]|}}
    3 & 3.20E+01 & 3.13E-02 & 1.25E-01 & 3.75E+08 & 5.07E+05 & 1.50E+01 & 6.67E-02 & 1.25E-01 & 3.75E+08 & 5.07E+05 \\
  \end{tabular}
\end{landscape}

\end{document} 

ここに画像の説明を入力してください

答え3

さらに別の提案があります: (a)tabular*環境 (ターゲット幅\textwidth) を使用する、(b) オプションtight-spacingとを設定するexponent-product={\mkern1mu\cdot}(スペースを節約するため)、(c) すべての垂直線を削除する (やはりスペースを節約するため)、(d) オプションを使用してtable-format各列の最小幅の書式を指定する。

この設定では、表をタイプセットするために横向きモードに切り替える必要がない場合があります。

ここに画像の説明を入力してください

\documentclass{article}
\usepackage[margin=2.5cm]{geometry}
\usepackage{array,siunitx}
\newcolumntype{T}[1]{S[tight-spacing,
                       exponent-product={\mkern1mu\cdot},
                       table-format=1.2e#1]}
\begin{document}
  \begingroup % localize the scope of the next instruction
  \setlength{\tabcolsep}{0pt}
  \noindent
  \begin{tabular*}{\textwidth}{@{\extracolsep{\fill}} 
          l T{1} *{2}{T{-1}} *{3}{T{1}} *{2}{T{-1}} *{2}{T{1}} }
    3 & 3.20E+01 & 3.13E-02 & 1.25E-01 & 3.75E+08 & 5.07E+05 
      & 1.50E+01 & 6.67E-02 & 1.25E-01 & 3.75E+08 & 5.07E+05 \\
  \end{tabular*}
  \endgroup
\end{document}

関連情報