Wie erstelle ich mehrere unabhängige Spalten und fülle sie dann horizontal?

Wie erstelle ich mehrere unabhängige Spalten und fülle sie dann horizontal?

Ich setze eine Idee zur Darstellung von Autoren um. Soweit ich sehen konnte, konnte das kein anderes Paket für mich tun, aber ich lasse mich gerne korrigieren. Die Idee ist, Autoren in mehreren unabhängigen Spalten zu platzieren, aber meine aktuelle Frage bezieht sich speziell auf die Fehler, die ich in MWE bekomme.

Als ersten Schritt wollte ich drei unabhängige Spalten erstellen und diese mit Inhalt füllen. Ich habe etwas Klebstoff hinzugefügt, um die Spalten zu trennen, falls die Zeilen zu nah beieinander liegen. Es funktioniert, was ich wollte, aber ich erhalte eine Warnung, dass die Spalten übervoll sind.

\documentclass{article}

\begin{document}

\makebox[\textwidth][c]{
  \parbox[t]{0.3\textwidth}{
    \noindent{}Item 1

    Item 4

    Item 7
  }
  \hskip 10pt plus 5pt minus 5pt\relax
  \parbox[t]{0.3\textwidth}{%
    \noindent{}Item 2

    Item 5 is a little bit longer

    Item 8
  }
  \hskip 10pt plus 5pt minus 5pt\relax
  \parbox[t]{0.3\textwidth}{%
    \noindent{}Item 3

    Item 6
  }
}

\end{document}

Ich kann es verschwinden lassen, indem ich mein horizontales Feld zentriere oder seine Breite verringere, aber kann mir jemand erklären, warum? Ich habe das Gefühl, dass ich die Makros immer noch missbrauche, anstatt sie zu verwenden.

Wenn es eine bessere Möglichkeit gibt, diesen Effekt zu erzielen, lassen Sie es mich bitte wissen. Ich habe mich für Boxen statt Tabellen entschieden, aber ich werde es gerne noch einmal versuchen. Ich dachte, Boxen sähen natürlicher aus, wenn man die Anzahl der Spalten und Zeilen nicht im Voraus kennt.

Antwort1

Du erhältst

Overfull \hbox (15.0pt too wide) in paragraph at lines 5--28

da Ihre äußere Liste \makeboxeingerückt ist, würde \parindentdies \noindentdas Problem beheben, aber Sie erhalten möglicherweise auch überfüllte Felder aus der inneren Liste.

Sie haben eine \textwidthKiste mit

SPACE .3\textwidth SPACE 10pt  .3\textwidth SPACE 10pt .3\textwidth SPACE

es kann also passen oder nicht, je nachdem, ob 4 Wortabstände + 20 pt größer sind als 0,1\Textbreite.

\documentclass{article}

\begin{document}

\noindent\makebox[\textwidth][c]{%%%%
  \parbox[t]{0.3\textwidth}{%
    Item 1

    Item 4

    Item 7
  }\hfill
  \parbox[t]{0.3\textwidth}{%
    Item 2

    Item 5 is a little bit longer

    Item 8
  }\hfill
  \parbox[t]{0.3\textwidth}{%
   Item 3

    Item 6
  }%%%%
}

\end{document}

Die Enden markierter Zeilen %müssen nicht kommentiert werden, aber es ist eine gute Praxis. Diese Markierungen %%%%sind erforderlich, um unzulässige Leerzeichen zu vermeiden.


Ein Grund dafür, dass für diese Art von Layout häufig Tabellen verwendet werden, besteht darin, dass drei gleich breite Felder zwar technisch gesehen gleichmäßig verteilt sind und sich über die gesamte Breite erstrecken, aber bei der Möglichkeit kurzer Einträge nach links verschoben erscheinen.

Bildbeschreibung hier eingeben

\documentclass{article}

\begin{document}

\hrule

\noindent X\dotfill X

\noindent\makebox[\textwidth][c]{%%%%
  \parbox[t]{0.3\textwidth}{
    Item 1

    Item 4

    Item 7
  }\hfill
  \parbox[t]{0.3\textwidth}{%
    Item 2

    Item 5 is a little bit longer

    Item 8
  }\hfill
  \parbox[t]{0.3\textwidth}{%
   Item 3

    Item 6
  }%%%
}

\bigskip

\hrule

\noindent X\dotfill X

\noindent\makebox[\textwidth][c]{%%%%
  \begin{tabular}[t]{@{}l@{}}
    Item 1\\
    Item 4\\
    Item 7
   \end{tabular}\hfill
   \begin{tabular}[t]{@{}l@{}}
    Item 2\\
    Item 5 is a little bit longer\\
    Item 8
   \end{tabular}\hfill
   \begin{tabular}[t]{@{}l@{}}
   Item 3\\
    Item 6
   \end{tabular}%%%
}


\end{document}

verwandte Informationen