Anzeige:
Ergebnis 1 bis 9 von 9

Thema: Longtable Formatierungsfehler

  1. #1
    Registrierter Benutzer
    Registriert seit
    11.04.2013
    Beiträge
    12

    Longtable Formatierungsfehler

    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?
    Bild1.jpg

    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.
    Bild-2.jpg

    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!!!!

  2. #2
    Registrierter Benutzer
    Registriert seit
    06.03.2010
    Ort
    St. Petersburg, Russland
    Beiträge
    2.436
    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.

  3. #3
    Registrierter Benutzer
    Registriert seit
    06.03.2010
    Ort
    St. Petersburg, Russland
    Beiträge
    2.436
    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.

    Code:
    \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.

  4. #4
    Registrierter Benutzer
    Registriert seit
    06.03.2010
    Ort
    St. Petersburg, Russland
    Beiträge
    2.436
    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.

    Code:
    \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}

  5. #5
    Registrierter Benutzer
    Registriert seit
    11.04.2013
    Beiträge
    12
    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?

    Bild3.jpg

  6. #6
    Registrierter Benutzer Avatar von rais
    Registriert seit
    18.07.2005
    Beiträge
    5.699
    Zitat Zitat von kimchi Beitrag anzeigen
    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
    Code:
    \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
    Rainer
    There's nothing a good whack with a hammer won't fix!

  7. #7
    Registrierter Benutzer
    Registriert seit
    06.03.2010
    Ort
    St. Petersburg, Russland
    Beiträge
    2.436
    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.

  8. #8
    Registrierter Benutzer
    Registriert seit
    11.04.2013
    Beiträge
    12
    Danke rais, das mache ich jetzt immer so!

  9. #9
    Registrierter Benutzer Avatar von rais
    Registriert seit
    18.07.2005
    Beiträge
    5.699
    `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
    Rainer
    There's nothing a good whack with a hammer won't fix!

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •