PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Longtable Formatierungsfehler



kimchi
17-08-2017, 15:18
Hallo,
ich habe eine lange Tabelle, daher longtable. In der ersten Spalte habe ich einige multirow-Einträge. Doch irgendwie stehen die Einträge immer in verschiedem Abstand zu der Linie dadrüber. Und noch komischer ist, dass die erste Spalte am Ende der Tabelle noch 2 vertikale Linien hat, die über den Rand hinausgehen. Warum? Liegt es vielleicht daran, dass ich in der Zeile ein multicolumn habe?
6238

Wenn ich versuche mithilfe von [\normalbaselineskip] die Einträge von Spalte 1 an die Linie dadrüber anzuordnen, verschieben die sich noch weiter und sind teilweise von der Linie verdeckt.
6239

Ich kann leider keine Minimalbeispiele, aber hier ist der Code meiner Tabelle (ohne [\normalbaselineskip]).

\setlongtables
\begin{longtable}{|p{75pt}|p{45pt}| p{75pt}|p{170pt}|}
\caption{\textbf{Einteilung der MMPs nach Gruppen mit Substratspezifit"at}}\\
\hline
\textbf{Gruppe} & \multicolumn{2}{|l|}{\textbf{Enzym}}& \textbf{Substrat}\\\hline
\multirow{4}{*}{Kollagenasen}&MMP-1&Interstitielle Kollagenase &Kollagen (Typ I, II, III, VII, VIII, X, XI), Gelatine, Aggrecan, Tenascin, Laminin, Fibronektin, Entactin, Vitronectin\\
&MMP-8& \makecell[l]{Neutrophile \\ Kollagenase} &Kollagen (Typ I, II, III), Aggrecan\\
&MMP-13&Kollagenase-3 &Kollagen (Typ I, II, III, IV, VI, IX, X, XIV)\\
&MMP-18& \makecell[l]{Xenopus \\ Kollagenase}&Kollagen (Typ I)\\\hline
\multirow{2}{*}{Gelatinase}&MMP-2&Gelatinase A&Kollagen (Typ I, II, III, IV, V, VII, X, XI), Gelatine, Elastin, Laminin, Fibronektin, Proteoglykane, Tenascin, Vitronectin, Entactin, Aggrecan\\
&MMP-9&Gelatinase B&Kollagen (Typ IV, V, XI, XIV), Gelatine, Elastin, Proteoglykane, Vitronectin, Laminin, Aggrecan\\\hline
\multirow{3}{*}{Stromelysine}&MMP-3&Stromelysin 1&Kollagen (Typ III, IV, V, VII, IX, X, XI), Proteoglykane, Laminin, Gelatine, Elastin, Fibronektin, Tenascin, Vitronectin, Entactin, Aggrecan\\
&MMP-10&Stromelysin 2&Kollagen (Typ III, IV, V), Gelatine, Proteoglykane, Elastin, Laminin, Fibronektin\\
&MMP-11&Stromelysin 3&Kollagen (Typ IV), Laminin, Gelatine, Fibronektin\\\hline
\multirow{2}{*}{Matrilysine}&MMP-7&Matrilysin 1&Kollagen (Typ I, IV), Gelatine, Fibronektin, Elastin, Proteoglykan, Laminin, Tenascin, Vitronectin, Entactin, Aggrecan\\
&MMP-26&Matrilysin 2&Gelatine, Fibronektin, Vitronectin\\\hline
\multirow{6}{*}{\makecell[l]{Membran- \\ st"andige MMPs}}&MMP-14&MT1-MMP&Kollagen (Typ I, II, and III), Laminin, Gelatine, Fibronektin, Tenascin, Vitronectin, Entactin, Aggrecan, Perlecan\\
&MMP-15&MT2-MMP&Laminin, Fibronektin, Tenascin, Entactin, Aggrecan, Perlecan \\
&MMP-16&MT3-MMP&Kollagen (Typ III), Gelatine, Fibronektin, Vitronectin, Laminin\\
&MMP-17&MT4-MMP&Gelatine\\
&MMP-24&MT5-MMP&Fibronectin, Gelatine\\
&MMP-25&MT6-MMP&Kollagen (Typ IV), Fibronectin, Gelatine\\\hline
\multirow{7}{*}{Andere}&MMP-12&Makrophagen Elastase&Kollagen (Typ I, IV, V), Gelatine, Elastin, Fibronektin, Entactin, Vitronectin, Osteonectin, Aggrecan\\
&MMP-19&RASI-1&Kollagen (Typ IV), Gelatine, Laminin, Fibronektin, Entactin, Aggrecan\\
&MMP-20&Enamelysin&Amelogenin, Aggrecan\\
&MMP-21&XMMP&Gelatine\\
&MMP-23&CA-MMP&Gelatine\\
&MMP-27&CMMP&Gelatine\\
&MMP-28&Epilysin&\\\hline
\label{MMP}
\end{longtable}


Danke an alle!!!!

rstuby
19-08-2017, 09:47
Was heißt du kannst keine Minimalbeispiele. Wenn du keine funktionierenden tex-Dokumente schreiben könntest, wärest du nicht hier. Es hapert also nur an der Minimalität. Entweder du bist einfach zu faul, auszuprobieren, welche Teile man rausschmeißen kann, um das Problem immer noch zu demonstrieren - in diesem Fall große Empfehlung: mach es trotzdem! In diesem Fall vielleicht nicht, aber in 90% der Fälle findet man dabei selber das Problem.
Oder aber du hast Angst, hier einen Anschiss zu bekommen, falls du doch zwei irrelevante Zeilen aus Versehen drin gelassen hast? Also von mir auf jeden Fall nicht. Mach ein Beispiel, das so minimal ist, wie es dir möglich ist.

rstuby
19-08-2017, 12:06
Hier ist das Minimalbeispiel. Aber wirklich nur einmal für den Neuling. Selber machen ist nicht nur fairer, sondern auch zielführender. Jetzt gucke ich mal, ob ich die Ursache für das Problem finden kann.


\documentclass{scrbook}
\usepackage{longtable}
\usepackage{multirow}
\usepackage{makecell}
\begin{document}

\setlongtables
\begin{longtable}{|p{75pt}|p{45pt}| p{75pt}|p{170pt}|}
\caption{\textbf{Einteilung der MMPs nach Gruppen mit Substratspezifit"at}}\\
\hline
\textbf{Gruppe} & \multicolumn{2}{|l|}{\textbf{Enzym}}& \textbf{Substrat}\\\hline
\multirow{4}{*}{Kollagenasen}&MMP-1&Interstitielle Kollagenase &Kollagen (Typ I, II, III, VII, VIII, X, XI), Gelatine, Aggrecan, Tenascin, Laminin, Fibronektin, Entactin, Vitronectin\\
&MMP-8& \makecell[l]{Neutrophile \\ Kollagenase} &Kollagen (Typ I, II, III), Aggrecan\\
&MMP-13&Kollagenase-3 &Kollagen (Typ I, II, III, IV, VI, IX, X, XIV)\\
&MMP-18& \makecell[l]{Xenopus \\ Kollagenase}&Kollagen (Typ I)\\\hline
\multirow{2}{*}{Gelatinase}&MMP-2&Gelatinase A&Kollagen (Typ I, II, III, IV, V, VII, X, XI), Gelatine, Elastin, Laminin, Fibronektin, Proteoglykane, Tenascin, Vitronectin, Entactin, Aggrecan\\
&MMP-9&Gelatinase B&Kollagen (Typ IV, V, XI, XIV), Gelatine, Elastin, Proteoglykane, Vitronectin, Laminin, Aggrecan\\\hline
\multirow{3}{*}{Stromelysine}&MMP-3&Stromelysin 1&Kollagen (Typ III, IV, V, VII, IX, X, XI), Proteoglykane, Laminin, Gelatine, Elastin, Fibronektin, Tenascin, Vitronectin, Entactin, Aggrecan\\
&MMP-10&Stromelysin 2&Kollagen (Typ III, IV, V), Gelatine, Proteoglykane, Elastin, Laminin, Fibronektin\\
&MMP-11&Stromelysin 3&Kollagen (Typ IV), Laminin, Gelatine, Fibronektin\\\hline
\multirow{2}{*}{Matrilysine}&MMP-7&Matrilysin 1&Kollagen (Typ I, IV), Gelatine, Fibronektin, Elastin, Proteoglykan, Laminin, Tenascin, Vitronectin, Entactin, Aggrecan\\
&MMP-26&Matrilysin 2&Gelatine, Fibronektin, Vitronectin\\\hline
\multirow{6}{*}{\makecell[l]{Membran- \\ st"andige MMPs}}&MMP-14&MT1-MMP&Kollagen (Typ I, II, and III), Laminin, Gelatine, Fibronektin, Tenascin, Vitronectin, Entactin, Aggrecan, Perlecan\\
&MMP-15&MT2-MMP&Laminin, Fibronektin, Tenascin, Entactin, Aggrecan, Perlecan \\
&MMP-16&MT3-MMP&Kollagen (Typ III), Gelatine, Fibronektin, Vitronectin, Laminin\\
&MMP-17&MT4-MMP&Gelatine\\
&MMP-24&MT5-MMP&Fibronectin, Gelatine\\
&MMP-25&MT6-MMP&Kollagen (Typ IV), Fibronectin, Gelatine\\\hline
\multirow{7}{*}{Andere}&MMP-12&Makrophagen Elastase&Kollagen (Typ I, IV, V), Gelatine, Elastin, Fibronektin, Entactin, Vitronectin, Osteonectin, Aggrecan\\
&MMP-19&RASI-1&Kollagen (Typ IV), Gelatine, Laminin, Fibronektin, Entactin, Aggrecan\\
&MMP-20&Enamelysin&Amelogenin, Aggrecan\\
&MMP-21&XMMP&Gelatine\\
&MMP-23&CA-MMP&Gelatine\\
&MMP-27&CMMP&Gelatine\\
&MMP-28&Epilysin&\\\hline
\label{MMP}
\end{longtable}
\end{document}

PS: Muss es unbedingt so eine "Gitter"-Tabelle mit senkrechten Linien sein? Die sind heutzutage eigentlich ziemlich verpönt und gelten als hässlich.

rstuby
19-08-2017, 12:22
Lösung für das erste Problem: nicht mit multirow arbeiten, sondern den Text einfach in die erste Zeile schreiben und die darunter leer lassen Das Makecell bei der Zelle mit Umbruch entsprechend auch weglassen, damit nicht beide Zeilen in die oberste gequetscht werden. Dann steht der Text oben.

Die senkrechten Linien, die über die untere \hline hinausgehen, kommen davon, dass du darunter noch eine Zeile hast, in der nur das Label in der ersten Spalte steht. Schreibe das Label woanders hin, nach der Longtable oder innerhalb einer gewollten Zeile nach dem Text.

Aber ich empfehle dir noch mal, die senkrechten Linien lieber ganz wegzulassen. Leerzeile nur mit Label ist trotzdem nicht zu empfehlen wegen des Abstandes, den sie erzeugt.


\documentclass{scrbook}
\usepackage{longtable}
\usepackage{multirow}
\usepackage{makecell}
\begin{document}

\setlongtables
\begin{longtable}{|p{75pt}|p{45pt}| p{75pt}|p{170pt}|}
\caption{\textbf{Einteilung der MMPs nach Gruppen mit Substratspezifit"at}}\\
\hline
\textbf{Gruppe} & \multicolumn{2}{|l|}{\textbf{Enzym}}& \textbf{Substrat}\\\hline
Kollagenasen&MMP-1&Interstitielle Kollagenase &Kollagen (Typ I, II, III, VII, VIII, X, XI), Gelatine, Aggrecan, Tenascin, Laminin, Fibronektin, Entactin, Vitronectin\\
&MMP-8& \makecell[l]{Neutrophile \\ Kollagenase} &Kollagen (Typ I, II, III), Aggrecan\\
&MMP-13&Kollagenase-3 &Kollagen (Typ I, II, III, IV, VI, IX, X, XIV)\\
&MMP-18& \makecell[l]{Xenopus \\ Kollagenase}&Kollagen (Typ I)\\\hline
Gelatinase&MMP-2&Gelatinase A&Kollagen (Typ I, II, III, IV, V, VII, X, XI), Gelatine, Elastin, Laminin, Fibronektin, Proteoglykane, Tenascin, Vitronectin, Entactin, Aggrecan\\
&MMP-9&Gelatinase B&Kollagen (Typ IV, V, XI, XIV), Gelatine, Elastin, Proteoglykane, Vitronectin, Laminin, Aggrecan\\\hline
Stromelysine&MMP-3&Stromelysin 1&Kollagen (Typ III, IV, V, VII, IX, X, XI), Proteoglykane, Laminin, Gelatine, Elastin, Fibronektin, Tenascin, Vitronectin, Entactin, Aggrecan\\
&MMP-10&Stromelysin 2&Kollagen (Typ III, IV, V), Gelatine, Proteoglykane, Elastin, Laminin, Fibronektin\\
&MMP-11&Stromelysin 3&Kollagen (Typ IV), Laminin, Gelatine, Fibronektin\\\hline
Matrilysine&MMP-7&Matrilysin 1&Kollagen (Typ I, IV), Gelatine, Fibronektin, Elastin, Proteoglykan, Laminin, Tenascin, Vitronectin, Entactin, Aggrecan\\
&MMP-26&Matrilysin 2&Gelatine, Fibronektin, Vitronectin\\\hline
Membran- \newline st"andige MMPs&MMP-14&MT1-MMP&Kollagen (Typ I, II, and III), Laminin, Gelatine, Fibronektin, Tenascin, Vitronectin, Entactin, Aggrecan, Perlecan\\
&MMP-15&MT2-MMP&Laminin, Fibronektin, Tenascin, Entactin, Aggrecan, Perlecan \\
&MMP-16&MT3-MMP&Kollagen (Typ III), Gelatine, Fibronektin, Vitronectin, Laminin\\
&MMP-17&MT4-MMP&Gelatine\\
&MMP-24&MT5-MMP&Fibronectin, Gelatine\\
&MMP-25&MT6-MMP&Kollagen (Typ IV), Fibronectin, Gelatine\\\hline
Andere&MMP-12&Makrophagen Elastase&Kollagen (Typ I, IV, V), Gelatine, Elastin, Fibronektin, Entactin, Vitronectin, Osteonectin, Aggrecan\\
&MMP-19&RASI-1&Kollagen (Typ IV), Gelatine, Laminin, Fibronektin, Entactin, Aggrecan\\
&MMP-20&Enamelysin&Amelogenin, Aggrecan\\
&MMP-21&XMMP&Gelatine\\
&MMP-23&CA-MMP&Gelatine\\
&MMP-27&CMMP&Gelatine\\
&MMP-28&Epilysin&\\\hline
\end{longtable}
\label{MMP}
\end{document}

kimchi
19-08-2017, 23:28
Super, vielen Dank rstuby!

Ja, ich muss zugeben, ich wollte nicht als Paket-Messi dastehen. Ich hab einfach meine Pakete aus der Studienarbeit genommen (hat ja funktioniert) und für die Diplomarbeit benutzt. Dann erweitert. Und dann für die Doktorarbeit genommen. Und erweitert. Der Mensch ist halt ein faules Tier.

Nun zu meiner Tabelle: Du hattest mit allem recht. Auch die veritkalen Linien sahen kacke aus. Jetzt ist alles sehr schön.
Aber seit wann kann das \label hinter \end{} stehen? Ich dachte, dass es immer innerhalb der Umgebung stehen muss, die es identifiziert. Muss ich jetzt das Label bei all meinen Bildern und Tabellen hinter \end{} schreiben und spare mir im Dokument vielleicht sogar Platz?

6240

rais
20-08-2017, 07:08
Aber seit wann kann das \label hinter \end{} stehen? Ich dachte, dass es immer innerhalb der Umgebung stehen muss, die es identifiziert.

Ja, muss es auch. Wenn Du bei rstuby's Beispiel einmal versuchst, auf das Label zu referenzieren, siehst Du, daß das ins Nirvana zeigt.
Ich würde das Label an die Caption setzen, etwa


\caption{\textbf{Einteilung der MMPs nach Gruppen mit Substratspezifit"at}}\label{MMP}\\

Beachte dabei ggf., daß \label dabei nicht in automatisch wiederholtem Text gesetzt sein darf, also z. B. nicht in einem \endhead-Kontext -- da dürfte das dann nur im \endfirsthead-Kontext auftauchen (im Gegensatz zu \caption).

VG

rstuby
20-08-2017, 19:54
Sorry für den Fehler mit dem Label. Ich habe noch nicht selbst mit Labeln für Tabellen und Abbildungen gearbeitet. Bloß halt gesehen, dass es sich in einer separaten Zeile nicht gut macht.

kimchi
21-08-2017, 16:39
Danke rais, das mache ich jetzt immer so!

rais
21-08-2017, 22:02
`immer' ist so ähnlich wie `nie' zu betrachten, IMHO.
Und da heißt es `sag niemals nie'...

Mein Code-Schnipsel bezieht sich auf die Verwendung von longtable -- mit der angegebenen Beschränkung. Innerhalb einer table- oder figure-Umgebung wäre der \\ am Ende eher störend.

@rstuby: IMHO halb so wild (wenn überhaupt). Wo so ein \label{} sich drauf bezieht, sieht man ja eh erst, wenn mit \ref{} oder artverwandt darauf Bezug genommen wird, was hier nicht der Fall war (wenn man sich nicht zufällig den entsprechenden \newlabel-Eintrag dazu in der .aux-Datei ansieht).

VG