\multicolumn und \hfill

Antwort erstellen


Diese Frage dient dazu, das automatisierte Versenden von Formularen durch Spam-Bots zu verhindern.
Smilies
:D :) :( :o :shock: :? 8) :lol: :-x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:

BBCode ist eingeschaltet
[img] ist eingeschaltet
[flash] ist ausgeschaltet
[url] ist eingeschaltet
Smilies sind eingeschaltet

Die letzten Beiträge des Themas

Ich habe die Datenschutzerklärung gelesen und bin damit einverstanden.

   

Wenn du eine Datei oder mehrere Dateien anhängen möchtest, gib die Details unten ein.

Ansicht erweitern Die letzten Beiträge des Themas: \multicolumn und \hfill

von esdd » Mi 14. Mai 2014, 14:22

Dann mach bitte ein richtiges, lauffähiges Beispiel bei dem die Breite mit ltxtable nicht passt. Bei mir klappt das mit meinem Bespiel. Gut kontrollieren kann man das, wenn man das Paket showframe lädt, dass die Seitenaufteilung zeigt.

Gruß
Elke

von Schmecks » Mi 14. Mai 2014, 13:50

sorry das ich so spät antworte, leider konnte ich den Code nicht vorher testen.
Also das erste Beispiel funktioniert nicht, die Tabelle müsste eigentlich länger sein, warum kann ich mir leider nicht erklären (ich habe zu Vergleich eine Dummygrafik mit width=1\textwidth getestet.

Die zweite variante habe ich nicht getestet, da ich den Zeilenumbruch in der letzten Spalte unbedingt brauche.

Ansonsten kannst du noch den breitesten Inhalt jeder Spalte ausmessen und daraus unter Berücksichtigung der Spaltenabstände die Breite für die letzte Spalte ausrechnen lassen.
Es würde mir schon reichen, wenn man wie im letzten Satz beschrieben die letzte Spaltenbreite ausrechnen und ausgeben könnte. Dann übertrage ich sie händisch.

mfg der Schnmecks

von esdd » Do 8. Mai 2014, 15:43

Mit ltxtable:
\documentclass{article} 
\usepackage{ltxtable}
\usepackage{ragged2e}
\usepackage{filecontents}

\newcolumntype{L}{>{\RaggedRight}X}

\usepackage{showframe}% zeigt Seitenaufteilung
\usepackage{blindtext}% für Fülltext

\begin{document}
\blindtext

\begin{filecontents}{LTXtab0.tex}
  \begin{longtable}{@{}|l|l|l|L|@{}} 
    \caption*{The Table Caption}\\ 
    \hline 
     F-Head1 & F-Head2 & F-Head3 & F-Head4\\ 
    \hline
    test&test&test&\blindtext\\
    \hline
  \end{longtable}
\end{filecontents}
\LTXtable{\linewidth}{LTXtab0}

\blindtext
\end{document}
Falls nur die letzte Spalte gedehnt werden soll und in dieser kein Zeilenumbruch nötig ist, dann kannst du auch folgendes probieren
\documentclass{article} 
\usepackage{longtable}

\usepackage{showframe}% zeigt Seitenaufteilung
\usepackage{blindtext}% für Fülltext

\begin{document}
\blindtext

\begin{longtable}[c]{@{}|l|l|l|l|@{}} 
\caption*{The Table Caption}\\ 
\hline 
 F-Head1 & F-Head2 & F-Head3 & F-Head4\\ 
\hline
test&test&test&test\\[\dimexpr-\ht\strutbox-\dp\strutbox\relax]
\multicolumn{4}{@{}c@{}}{\rule{\linewidth}{0pt}}\\
\hline
\end{longtable}

\blindtext
\end{document}
Die letzte Spalte wird dabei gedehnt, ist aber trotzdem nur eine l Spalte.

Ansonsten kannst du noch den breitesten Inhalt jeder Spalte ausmessen und daraus unter Berücksichtigung der Spaltenabstände die Breite für die letzte Spalte ausrechnen lassen.

Gruß
Elke

von Schmecks » Do 8. Mai 2014, 13:46

Schmecks hat geschrieben:[...] 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}|}
[...]
Folgendes aus dem Beispiel im Paket ltablex:
\documentclass{article}
\usepackage{ltablex}
\textheight=4in

\begin{document}
\begin{tabularx}{\linewidth}
{
|>{\setlength{\hsize}{.5\hsize}\raggedright\arraybackslash}X|
c|
>{\setlength{\hsize}{1.5\hsize}\raggedleft\arraybackslash}X|
l|}

\caption*{The Table Caption}\\
\hline
F-Head1 & F-Head2 & F-Head3 & F-Head4\\
\hline
\end{tabularx}
\end{document}
Mein Problem stellt sich so dar das ich gerne longtable verwenden möchte und nicht dieses andere Tebellenumgebung.
Deswegen meine Frage!
Und soweit ich gelesen habe ist ltxtable veraltet.

Meine Frage bezieht sich immer noch darauf, wie kann ich die letzte Spalte (p{3.7cm}|) immer auf die restliche Seitenbreite ausdehnen.

Ich habe mehrere Tabnellen bei denen ich das nicht immer händisch erproben möchte.

mfg der Schmecks

von Besserwisser » Do 8. Mai 2014, 08:49

Was genau hast du an Elkes Absatz, der mit »Falls du weitere Hilfe brauchst« beginnt, nicht verstanden?

Was genau hast du mit den beiden genannten Paketen bisher probiert und was genau hast du an deren Anleitung nicht verstanden bzw. welche Probleme sind dabei aufgetreten?

von Schmecks » Do 8. Mai 2014, 08:41

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

von esdd » Mi 7. Mai 2014, 15:12

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.

von Schmecks » Mi 7. Mai 2014, 14:57

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

von esdd » Mi 7. Mai 2014, 14:45

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

von Schmecks » Mi 7. Mai 2014, 14:35

\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

Nach oben