PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Spaltenbreite in Tabellen (mal wieder)



Katzenscheucher
01-06-2016, 20:19
Guten Tag!

Ich weiß, ich weiß, das Thema wurde auch hier schon zig mal beackert, aber mein spezifisches Problem konnte ich bisher nirgends finden. Sorry, falls es doch schon angesprochen worden sein sollte. Anyway: Ich möchte eine Tabelle mit fest definierter Spaltenbreite erstellen und das Problem, das sich mir ergibt ist: Das funktioniert nur, wenn in der betreffenden Tabelle mindestens eine leere Zeile sich befindet. Das sieht dann leider unschön aus, weil unnötig Platz gebraucht wird. Denn anders als im Minimalbeispiel werden mehrere Tabellen untereinander da sein.


% !TeX spellcheck = en_US
\documentclass[scrartcl,12pt]{article}
\usepackage[onehalfspacing]{setspace}
\usepackage[a4paper, portrait, margin=2.5cm]{geometry}
\usepackage{mathptmx}
\usepackage{amsmath}
\usepackage{graphicx}
\usepackage[backend=biber,style=authoryear,sorting=nyt]{biblatex}
\addbibresource{LitEssayEE.bib}
\usepackage{tabularx}
\setlength\extrarowheight{5.5pt}

\begin{document}
\begin{figure}[h]
\caption{Money creation by commercial bank via loan granting. Highly stylized balance sheets.} \label{credit_creation}
\centering
\begin{scriptsize}
\begin{tabular}{p{2cm} p{1cm} p{2cm} p{1cm}}
\multicolumn{4}{c}{\textbf{Commercial Bank}} \\
\hline
%
\multicolumn{1}{l}{Assets} &
\multicolumn{2}{c}{} &
\multicolumn{1}{r}{Liabilities} \\
\hline
%
\multicolumn{1}{l}{$\Delta$ Loan} &
\multicolumn{1}{r|}{+1,000} &
\multicolumn{1}{l}{$\Delta$ Deposits} &
\multicolumn{1}{r}{+1,000} \\
\hline \hline
% & & &
\end{tabular}
\begin{tabular}{p{2cm} p{1cm} p{2cm} p{1cm}}
\multicolumn{4}{c}{\textbf{Customer}} \\
\hline
%
\multicolumn{1}{l}{Assets} &
\multicolumn{2}{c}{} &
\multicolumn{1}{r}{Liabilities} \\
\hline
%
\multicolumn{1}{l}{$\Delta$ Deposits} &
\multicolumn{1}{r|}{+1,000} &
\multicolumn{1}{l}{$\Delta$ Loan} &
\multicolumn{1}{r}{+1,000} \\
\hline \hline
% & & &
\end{tabular}
\end{scriptsize}
\end{figure}
\end{document}

fig1.pdf im Anhang zeigt das Ergebnis, wie es im Minimalbeispiel angezeigt wird. Bei fig2.pdf habe ich in der ersten Tabelle die Leerzeile aktiviert und wie man sieht, wird die Spaltenbreite wie gewünscht dargestellt und nicht auf die Textbreite minimiert, wie es sonst der Fall zu sein scheint. Das ganze aus der figure-Umgebung herauszubefördern ändert am Ergebnis nichts. Auch tabularx zu benutzen, ändert nichts. Die Spaltenbreite wird nur wie gewünscht angezeigt, wenn sich eine leere Zeile in der Tabelle befindet.

Wo liegt mein Fehler?

u_fischer
01-06-2016, 23:03
Was sollen denn all die \multicolumn?

esdd
01-06-2016, 23:15
Wenn Du in einer Spalte bei jeder Zelle ein \mulitcolumn stehen hast, dann hast Du für die Spalte den falschen Typ gewählt. Wenn das Paket array geladen ist, bekommst Du zum Beispiel mit


>{\raggedleft\arraybackslash}p{1.2cm}

eine Spalte mit einer Breite von 1.2cm für den Inhalt, der dann rechts ausgerichtet wird. Man kann man sich aber auch neue Spaltentypen definieren.


\documentclass[12pt]{article}
\usepackage[onehalfspacing]{setspace}
\usepackage[a4paper, portrait, margin=2.5cm]{geometry}
\usepackage{mathptmx}
\usepackage{tabularx}% lädt auch array
\setlength\extrarowheight{5.5pt}

\newcolumntype{L}[1]{>{\raggedright\arraybackslash}p{#1}}
\newcolumntype{R}[1]{>{\raggedleft\arraybackslash}p{#1}}

\begin{document}
\begin{figure}[h]
\caption{Money creation by commercial bank via loan granting. Highly stylized balance sheets.} \label{credit_creation}
\centering
\begin{scriptsize}
\begin{tabular}{@{}L{2cm} R{1.2cm} | L{2cm} R{1.2cm}@{}}
\multicolumn{4}{c}{\textbf{Commercial Bank}} \\
\hline
%
Assets &
\multicolumn{2}{c}{} &
Liabilities \\
\hline
%
$\Delta$ Loan &
+1,000 &
$\Delta$ Deposits &
+1,000 \\
\hline \hline
% & & &
\end{tabular}%
\hfill
\begin{tabular}{@{}L{2cm} R{1.2cm} | L{2cm} R{1.2cm}@{}}
\multicolumn{4}{c}{\textbf{Customer}} \\
\hline
%
Assets &
\multicolumn{2}{c}{} &
Liabilities \\
\hline
%
$\Delta$ Deposits &
+1,000 &
$\Delta$ Loan &
+1,000 \\
\hline \hline
% & & &
\end{tabular}
\end{scriptsize}
\end{figure}
\end{document}

Übrigens ist scrartcl keine Option von article sondern selbst eine Dokumentenklasse.

Katzenscheucher
02-06-2016, 10:48
Was sollen denn all die \multicolumn?
Das hatte ich jetzt gar nicht mehr auf dem Schirm, dass ich ja überall multicolumn benutzt habe. :-D Das diente wohl der rechts- bzw. linksbündigen Ausrichtung.

Mit der Lösung von esdd klappt es nun. Herzlichen Dank. :)

Ach ja: Was bewirken die @{} gleich nochmal?

klops
02-06-2016, 11:45
→ Satz von Tabellen (http://mirrors.ctan.org/info/german/tabsatz/tabsatz.pdf), Seite 4

Allgemein kann man mit @{…} beliebigen Inhalt vor der ersten Spalte, zwischen den Spalten bzw. nach der letzten Spalte an Stelle des voreingestellten Spaltenabstandes einfügen.