Seite 1 von 2

\multicolumn und \hfill

Verfasst: Sa 3. Mai 2014, 18:52
von jho64
Guten Abend zusammen!

Ich versuche gerade eine Bilanz zusammenzubauen. Hier ein Muster:
\documentclass{scrartcl}
\usepackage{german}
\usepackage[utf8]{inputenc}
%===============================================================================
\usepackage[right]{eurosym}
%===============================================================================
\voffset-1in
\hoffset-1in
\pagestyle{empty}
\topmargin0.5cm
\headheight1cm\headsep1cm
\footskip2cm
\topskip1cm
\oddsidemargin2cm
\setlength{\textwidth}{17cm}
\textheight24cm
\parindent0cm
\parskip4ex

\usepackage{fibutest1}
%
\begin{document}
\subsection*{Eröffnungsbilanz}
\begin{bilanz}{Eröffnungs}{01.12.01}{6.681.050,00}%
\multicolumn{2}{l||}{\bf Anlagevermögen}&\multicolumn{2}{l}{\bf
Eigenkapital}\\%
Grundstücke& 1.300.600,00&Eigenkpital&2.260.550,00\\%
Gebäude& 5.000.000,00&&\\%
Fuhrpark& 265.000,00&\multicolumn{2}{l}{\bf Fremdkapital}\\%
Büroeinrichtung&65.000,00&Hypothek&3.600.000,00\\%
Bürogeräte& 35.000,00&Darlehen&820.500,00\\%
&&\hbbnase\\%
\multicolumn{2}{l||}{\bf Umlaufvermögen}&&\\%
Kasse& 950,00&&\\%
Postbank& 2.500,00&&\\%
Dresdner Bank& 12.000,00&&\\%
\end{bilanz}%
%
\end{document}
Und hier die fibutest1.sty:
%Allgemeine Definitionen
%=======================
%
\RequirePackage{longtable}
\RequirePackage{colortbl}
\RequirePackage{ifthen}

\newcounter{JournalZeile}

\newlength{\ZahlenSpalte}
\newlength{\PNrSpalte}
\newlength{\KtoSpalte}
\newlength{\DatumSpalte}
\newlength{\TxtKtoSpalte}
\newlength{\JournalTxtSpalte}
\newlength{\BilanzTxtSpalte}
\newlength{\KontoTxtSpalte}
%
\settowidth{\ZahlenSpalte}{00.000.000,00}%
\settowidth{\PNrSpalte}{M.00}%
\settowidth{\KtoSpalte}{M00000}%
\settowidth{\DatumSpalte}{00.00.00}%
\setlength{\TxtKtoSpalte}{\textwidth}
\setlength{\JournalTxtSpalte}{\textwidth}
\setlength{\BilanzTxtSpalte}{\textwidth}
\setlength{\KontoTxtSpalte}{\textwidth}
%
\addtolength{\TxtKtoSpalte}{-2\ZahlenSpalte}%
\addtolength{\TxtKtoSpalte}{-\DatumSpalte}%
\addtolength{\TxtKtoSpalte}{-\PNrSpalte}%
\addtolength{\TxtKtoSpalte}{-12\tabcolsep}%
%
\addtolength{\JournalTxtSpalte}{-2\ZahlenSpalte}%
\addtolength{\JournalTxtSpalte}{-2\KtoSpalte}%
\addtolength{\JournalTxtSpalte}{-\DatumSpalte}%
\addtolength{\JournalTxtSpalte}{-\PNrSpalte}%
\addtolength{\JournalTxtSpalte}{-14\tabcolsep}%
%
\addtolength{\BilanzTxtSpalte}{-2\ZahlenSpalte}%
\addtolength{\BilanzTxtSpalte}{-8\tabcolsep}%
%
\addtolength{\KontoTxtSpalte}{-2\PNrSpalte}%
\addtolength{\KontoTxtSpalte}{-2\ZahlenSpalte}%
\addtolength{\KontoTxtSpalte}{-13\tabcolsep}%
%
%
%
\newcommand{\sbbnase}{\multicolumn{2}{c||}{======\hfill ===============}}%
\newcommand{\hbbnase}{\multicolumn{2}{c}{======\hfill ===============}}%
%
\newcommand{\sbbbnase}{\multicolumn{3}{c||}{======\hfill ===============}}%
\newcommand{\hbbbnase}{\multicolumn{3}{c}{======\hfill ===============}}%
%
%
%
\newsavebox{\KontoSumme}
%
%
%
%Bilanz
%======
%
\newenvironment{bilanz}[3]%Eröffnungs/Schluss, Stichtag, Summe
{%
\small
\sbox{\KontoSumme}{#3}
\begin{center}%
\begin{tabular}[t]{lr||lr}%
\multicolumn{4}{c}{#1bilanz}\\%
\multicolumn{4}{c}{A\hspace*{\fill} #2\hspace*{\fill} P}\\%
\hline%
\hline%
}%
{%
\hline%
\makebox[0.5\BilanzTxtSpalte]{}&\makebox[\ZahlenSpalte][r]{\underline{\underbar{\usebox{\KontoSumme}}}}&%
\makebox[0.5\BilanzTxtSpalte]{}&\makebox[\ZahlenSpalte][r]{\underline{\underbar{\usebox{\KontoSumme}}}}\\%
\end{tabular}
\end{center}
}%
Eigentlich wollte ich das Ergebnis als PDF angehängen, das hat leider nicht funktioniert (oder ich habe ees nicht hinbekommen).

Jedenfalls sollte in der Bilanz das Datum zentriert und "A" und "P" ganz außen stehen, was bei mir nicht der Fall ist. Das Datum ist zwar zentriert, aber "A" und "P" haben noch einen recht großen Abstand nach außen.

Bisher hat es mit \multicolumn und \hfill immer funktioniert und ich kann nicht erkennen, warum es plötzlich nicht mehr klappt. Vielleicht bin ich schon betriebsblind.

Habt Ihr einen Tip?

Jörg

Verfasst: Sa 3. Mai 2014, 21:33
von esdd
Ändere
\multicolumn{4}{c}{A\hspace*{\fill} #2\hspace*{\fill} P}\\% 
in
A&\multicolumn{2}{c}{#2}&P\\%
Gruß
Elke

PS: Ersetze in deinem Code die \bf durch \bfseries.

Verfasst: Sa 3. Mai 2014, 21:57
von jho64
@Elke: Danke für Deine Antwort. Leider löst dies mein Problem nicht, da die linksbündigen Spalten deutlich breiter als die rechtsbündigen sind. Das Datum steht dann zu weit rechts.

Inzwischen habe ich "den Übeltäter" identifiziert, wenn man in fibutest1.sty das Paket "colortbl" auskommentiert, funktioniert alles wie es soll. Stellt sich die Frage, was wird in "colortbl" geändert?

Verfasst: Sa 3. Mai 2014, 22:17
von esdd
Ok, das habe ich übersehen. Dann setz den Inhalt in eine parbox der Breite \linewidth
\multicolumn{4}{c}{\parbox{\linewidth}{A\hspace*{\fill}#2 \hspace*{\fill} P}}\\% \\%


Gruß
Elke

Verfasst: So 4. Mai 2014, 13:40
von jho64
Danke, das funktioniert!

Schönen Sonntag noch
Jörg

Verfasst: Mi 7. Mai 2014, 14:35
von Schmecks
\multicolumn{4}{c}{\parbox{\linewidth}{A\hspace*{\fill}#2 \hspace*{\fill} P}}\\% \\%
Könntet ihr mir bitte mal die genannte Codezeile genauer erläutern?

Das {4}{c} erzeugt doch 4 mal eine zentrierte Spalte, aber der Rest?
Aber was bedeuten die weiteren geschweiften Klammern {\parbox{\linewidth} und {A\hspace*{\fill}#2 \hspace*{\fill} P}}? Evtl. das über eine par-Box der komplette restliche Raum der Spalte genutzt wird? Aber welcher Spalte?

mfg der Schmecks

Verfasst: Mi 7. Mai 2014, 14:45
von esdd
Mit \multicolumn kann man mehrere Zellen einer Tabellenzeile zu einer Zelle mit eigenständiger Spaltendefinition zusammenfassen. In dem Fall werden alle vier Zellen der Zeile zu einer mit der Spaltendefinition c zusammengefasst. Im letzten Argument steht dann der Inhalt dieser Zelle. In dem Fall ist das eine parbox über die gesamte Zellenbreite. Siehe dazu auch Worin besteht der Unterschied zwischen \textwidth und \linewidth?

Gruß
Elke

Verfasst: Mi 7. Mai 2014, 14:57
von Schmecks
Hallo,

ok, ich habe folgendes Problem. Ich habe eine Tabelle mit 6 Spalten erzeugt mit longtable. Dabei sollen die ersten 5 Spalten ja nach Breite des Inhalts berechnet werden und die letzte soll bis auf die restliche Seitenbreite ausgedehnt werden. Aktuell mache ich das händisch, wie automatisiere ich das?

Ein weiteres Problem habe ich nach \multicolumn. Es sollen die Spalte 4 und 5 miteinander verbunden werden. In meiner Tabelle habe ich nach Spalte 5 aber keine vertikale Linie mehr. Warum ist mir nicht klar, siehe \begin{Longtable}...?
{
\small
\begin{longtable}[l]{|l|l|l|l|l|p{3.7cm}|}
\caption{\textbf{Gegenüberstellung}} \\
%
\hline
Nr. & BBBBBBBB & HHHHHHH & \multicolumn{2}{c}{01234567890} & Xxxxxxxxxxx- \\
	 & XX XXXX  &		 &	xxx 0000	&	xx 0000		    & xxxxxxxx xxxx \\ 
\endfirsthead
%
\multicolumn{6}{|r|}{{Fortsetzung auf der nächsten Seite ...}} \\ \hline
\endfoot
%
\hline
\endlastfoot
%
\hline
Nr. & BBBBBBBB & HHHHHHH & \multicolumn{2}{c}{01234567890} 	& Xxxxxxxxxxx- \\
	& XX XXXX  &		 &	xxx 0000	&	xx 0000			& xxxxxxxx xxxx\\ \endhead
\hline
1. 	& xxxxx 							&									& 					&					&	xxxxxe \\
\hline

30. & Xxx. Xxxx Xxxxxxxx & Xxxxxx & 00 & 000 & X. Xxxxxxxxxx 
\end{longtable}
} % small beenden
mfg der Schmeckls

Verfasst: Mi 7. Mai 2014, 15:12
von esdd
Die Linie gehört zur Spaltendefinition der zusammengefassten Zelle
\multicolumn{2}{c|}{01234567890}
Wenn du in longtable eine X Spalte möchtest, die den verbleibenden Platz füllt, dann sieh dir das Paket ltablex oder ltxtable an.

Falls du weitere Hilfe brauchst, dann erstelle bitte ein vollständiges Minimalbeispiel und eröffne bei neuen Fragen einen neuen Thread statt dich an einen schon beantworteten dranzuhängen.

Gruß
Elke

PS: Und schau bitte, was der Status "Rückfrage" bedeutet.

Verfasst: Do 8. Mai 2014, 08:41
von Schmecks
Hallo,

ich glaube für diese beschriebenen Pakete ltablex und ltxtable bräuchte ich doch Hilfe.

Ich möchte in der Codezeile unten die letzte Spalte rechts immer auf die verbleibende Seitenbreite ausgedehnt haben.
\begin{longtable}[l]{|l|l|l|l|l|p{3.7cm}|}
Wie setzte ich das um?

mfg der Schmecks