Zwei Spalten so breit, wie die breiteste der beiden.

Tabellen und Grafiken erstellen und anordnen


pre
Forum-Newbie
Forum-Newbie
Beiträge: 3
Registriert: Mo 22. Aug 2022, 12:05

Zwei Spalten so breit, wie die breiteste der beiden.

Beitrag von pre »

Hallo zusammen,

ich versuche gerade ein T-Konto in Latex darzustellen. Dafür habe ich bereits eine Ausgabe, mit der ich noch nicht ganz zufrieden bin. Am Beispiel ist zu erkennen, dass die linke Spalte aufgrund des langen Wortes "Anfangsbestand (AB)" sehr viel breiter ist, als die rechte Spalte, in der "Abgänge" steht. Dadurch sieht nun das T-Konto unschön aus. Wie schaffe ich es, dass diese beiden Spalten immer genauso breit sind, wie das längste Wort in einer dieser beiden Spalten?
Ich möchte gerne auf feste Spaltenbreiten verzichten, damit ich das T-Konto nicht jedes Mal neu anpassen muss.

Hier ist mein Code soweit, vielen Dank schonmal für die die Hilfe!
\begin{tabular}{lrc|clr}
	\multicolumn{3}{l@{\protect\makebox[0pt]{\textbf{Bank} }}}{\textbf{S}}  &&&
	\multicolumn{1}{r}{\textbf{H}} \\
	\hline
	\ &    &&&   & \\ 
	Anfangsbestand (AB) &   &&&   Abgänge &  \\        
\end{tabular}

Gute*r Gȧst*in

Re: Zwei Spalten so breit, wie die breiteste der beiden.

Beitrag von Gute*r Gȧst*in »

Wenn du den breitesten Eintrag kennst, kannst du das mehr oder weniger manuell lösen:
\documentclass{article}

\begin{document}

\begin{tabular}{lrc|clr}
	\multicolumn{3}{l@{\makebox[0pt]{\textbf{Bank}}}}{\textbf{S}}  &&&
	\multicolumn{1}{r}{\textbf{H}} \\
	\hline
	\ &    &&&   & \\ 
	Anfangsbestand (AB) &   &&&  \makebox[0pt][l]{Abgänge}\hphantom{Anfangsbestand (AB)} &  \\        
\end{tabular}

\end{document}
Vorsorglich sei darauf hingewiesen, dass sich für Spalten mit Zahlenwerten das Paket siunitx anbietet. Bei Bedarf kann das Paket alle Zahlenwerte mit einer bestimmten Anzahl an Nachkommastellen anzeigen. Außerdem sind Tausendertrennzeichen, Dezimaltrenner (Punkt oder korrekt formatiertes Komma) etc. konfigurierbar.

pre
Forum-Newbie
Forum-Newbie
Beiträge: 3
Registriert: Mo 22. Aug 2022, 12:05

Re: Zwei Spalten so breit, wie die breiteste der beiden.

Beitrag von pre »

Den breitesten Eintrag kenne ich eben gerade nicht. Ich hätte gerne, dass sich die Tabelle flexibel in Bezug auf die Einträge verhält. Dann könnte ich sie später mit beliebigen Werten befüllen, ohne jedes Mal anpassen zu müssen.
Trotzdem aber vielen Dank für den Hinweis auf das Paket siunitx, das schaue ich mir gerne mal an! 8)

Benutzeravatar
KOMA
TeX-Entwickler
TeX-Entwickler
Beiträge: 2958
Registriert: Fr 4. Jul 2008, 17:28
Kontaktdaten:

Re: Zwei Spalten so breit, wie die breiteste der beiden.

Beitrag von KOMA »

pre hat geschrieben:
Mo 22. Aug 2022, 14:34
Den breitesten Eintrag kenne ich eben gerade nicht. Ich hätte gerne, dass sich die Tabelle flexibel in Bezug auf die Einträge verhält. Dann könnte ich sie später mit beliebigen Werten befüllen, ohne jedes Mal anpassen zu müssen.
Dazu müsste man die Tabelle mehrfach verarbeiten, um zunächst die breiteste Spalte bzw. das breiteste Element zu finden. Vermutlich könnte man eine Library für tabularray schreiben, die das tut. Das Paket arbeitet ja LaTeX3-basiert statt mit herkömmlichen Tabellen. Auf jeden Fall müsste man dazu recht tief einsteigen. Der Aufwand ist damit so hoch, dass es sich nur lohnt, wenn man das oft braucht und es nicht zumutbar ist, das Element, das die Breite bestimmt, selbst zu ermitteln. Für einen Helfer, der das überhaupt nicht braucht, lohnt sich das noch viel weniger. Sorry, aber da fehlt dann nicht nur mir die Motivation.

pre
Forum-Newbie
Forum-Newbie
Beiträge: 3
Registriert: Mo 22. Aug 2022, 12:05

Re: Zwei Spalten so breit, wie die breiteste der beiden.

Beitrag von pre »

Ja, das soll schon etwas umfangreicher sein. In einem nächsten Schritt möchte ich das Ganze über eine csv-Datei befüllen und massenhaft verarbeiten. Verständlich, dass da vielen hier die Motivation für meinen Sonderfall fehlt. Ich versuche mir das selbst mal anzuschauen. Trotzdem vielen Dank für Eure Hinweise!

ich meine ja nur

Re: Zwei Spalten so breit, wie die breiteste der beiden.

Beitrag von ich meine ja nur »

Bei einer CSV-Datei kannst du ja problemlos eine Vorverarbeitung z. B. mit datatool durchführen und dabei in einer Schleife über all Einträge den längsten mit Hilfe von \settowidth ermitteln. Den kannst du dann wie im Beispiel oben im Kopf aller relevanten Spalten einsetzen.

ich meine ja nur

Re: Zwei Spalten so breit, wie die breiteste der beiden.

Beitrag von ich meine ja nur »

Achso: Bei Verwendung von longtable kann man stattdessen des Konstrukts mit \makebox[0pt][l]{…}\hphantom{…} auch eine \kill-Zeile mit dem zuvor ermittelten breitesten Element als Musterzeile verwenden. Das ist dann eigentlich noch einfacher.

Antworten