Reduzierung der siunitx-Spaltenbreite

Reduzierung der siunitx-Spaltenbreite

Ich versuche, mithilfe des siunitxPakets eine Tabelle zu erstellen. Allerdings ist jede Spalte mit einer großen Menge an Leerzeichen aufgefüllt. Durch Ändern tabcolsepkann ich die Menge an Leerzeichen rechts in jeder Spalte reduzieren, aber ich kann die Menge an Leerzeichen links nicht ändern. Durch das Ändern table-column-widthwird nur ein Hbox-Überlauf verursacht, während die überschüssigen Leerzeichen erhalten bleiben.

Hier ist ein 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}

Und hier ist die Version mit table-column-widthexplizitem Satz:

\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}

Bitte geben Sie an, wie Sie das Leerzeichen links neben jeder Zahl entfernen können, damit die Tabelle auf eine Seite passt. Vielen Dank.

Antwort1

Im Folgenden habe ich für alle Spalten das gleiche Format verwendet, wodurch es an kürzeren Zahlen wie den nichts Überflüssiges gibt 3. Wenn du sie noch näher haben möchtest, passe das Format für jede Spalte einzeln an.

Das aktuelle Format 1.2e-1bedeutet

  • 1Ziffer vor dem Dezimalzeichen
  • 2Ziffern hinter dem Dezimalzeichen
  • ebraucht Platz
  • -braucht Platz
  • 1Ziffer im Exponenten

AlsMico hat vorgeschlagenin Kommentaren: Um noch kleinere Abstände zu erhalten, können Sie diese tight-spacing=trueentweder als Option des siunitxPakets oder in der SSpalte verwenden.

\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}

Bildbeschreibung hier eingeben

Antwort2

Wir können auch mit den verschiedenen Zahlenformaten experimentieren: Einige haben einen negativen Exponenten, andere nicht. Wenn jeder Zelleninhalt repräsentativ für seine Spalte ist, führt dies zur zweiten Tabelle:

\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} 

Bildbeschreibung hier eingeben

Antwort3

Hier ist noch ein weiterer Vorschlag: (a) Verwenden Sie eine tabular*Umgebung (mit einer Zielbreite von \textwidth), (b) legen Sie die Optionen tight-spacingund fest exponent-product={\mkern1mu\cdot}(um Platz zu sparen), (c) entfernen Sie alle vertikalen Linien (immer noch um Platz zu sparen) und (d) verwenden Sie die table-formatOption, um die Mindestbreite für die Formatierung jeder Spalte festzulegen.

Bei dieser Konfiguration ist es möglicherweise nicht erforderlich, in den Querformatmodus zu wechseln, um die Tabelle zu setzen.

Bildbeschreibung hier eingeben

\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}

verwandte Informationen