PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Zeilenumbruch in longtable in bestimmten Zeilen verhindern



Scotty
19-04-2012, 21:37
Servus allerseits!

Nachdem ich mich jetzt in den letzten 2 Monaten durch Latex durchgearbeitet habe und bisher noch zu jedem Problem irgendwo eine Lösung gefunden habe, bin ich jetzt an einem Punkt angelangt, an dem ich auf dem Schlauch stehe.

Ich bin gerade dabei, meinen Lebenslauf in Latex zu schreiben und habe da meine Daten in verschiedene Tabellen gepackt. Da ich den Lebenslauf gerne als Makro schreiben und nicht noch von Hand anpassen würde, wollte ich für alle Fälle den Zeilenumbruch zwischen Tabellenüberschrift (nicht in Form einer Caption, sondern als in der ersten Tabellenzeile eingefügte Schrift) und der ersten "richtigen" Tabellenzeile unterbinden.
In meinem ersten Entwurf (siehe zweite Tabelle im Beispiel) funktioniert das auch problemlos. Jetzt wollte ich aber den Abstand zwischen Überschrift und erster Zeile per Variable am Anfang des Dokuments festlegen und habe daher vspace eingefügt.
Leider scheint nopagebreak jetzt keine Wirkung mehr zu zeigen.

\documentclass[10pt,a4paper,oneside,ngerman]{scrartcl}
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc}
\usepackage{geometry}
\usepackage{longtable}

\geometry{a4paper, top=25mm, left=20mm, right=20mm, bottom=25mm, headsep=10mm, footskip=10mm}
\usepackage[singlespacing]{setspace}
\renewcommand{\arraystretch}{1.5}

\begin{document}
bla
\vspace{235mm}
\pagebreak[3]
\begin{longtable}{p{45mm}|p{120mm}}
\multicolumn{2}{l}{\Large \textbf{Interessen} \vspace{3mm}}\\ \nopagebreak[4]
aaaaaaaaaaaaaaa aaaaaaaaaa aaaa & aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\newline aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\newline aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaa\newline aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaa \\
\end{longtable}

\vspace{176mm}
\pagebreak[3]
\begin{longtable}{p{45mm}|p{120mm}}
\multicolumn{2}{l}{\Large \textbf{Interessen}} \\ \nopagebreak[4]
\multicolumn{2}{l}{} \\ \nopagebreak[4]
aaaaaaaaaaaaaaa aaaaaaaaaa aaaa & aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\newline aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\newline aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaa\newline aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaa \\
\end{longtable}

\end{document}
Wie kann ich es jetzt verhindern, dass bei der ersten Tabelle zwischen "Interessen" und der ersten Zeile der Zeilenumbruch auftritt? (zwischen späteren Zeilen ist er erwünscht, sollte es nötig sein!)
Setzt man vspace vor der zweiten Tabelle auf 175mm, so springt die gesamte Tabelle nach oben. So sollte es eigentlich funktionieren...

Da ich hier nicht mehr selbst weiter wusste... Vielen Dank schonmal für Eure Hilfe!

Viele Grüße

André25
19-04-2012, 22:31
Hallo Scotty!

Das sieht sehr kompliziert aus. Hast Du schon man was von diesem Paket gehört: http://www.ctan.org/pkg/moderncv

Das ergibt wirklich nette (und einfach gestaltete) Lebensläufe!


Viele Grüße,

André :)

ctansearch
19-04-2012, 22:41
Du versuchst mit der longtable, die dafür gemacht ist, Text automatisch über mehrere Seiten zu verteilen, das Gegenteil zu erreichen, nämlich Tabellen, die jeweils nur eine Seite füllen und manuell gesteuert sind.

Entweder nimmst Du andere Tabellen (tabular,item,list) oder beginnst und beendest die longtables so, daß sie auf die Seiten passen.

Das Herumzaubern mit Abständen und breaks brauchst Du dann nicht.

Scotty
19-04-2012, 23:02
@André25: Das Paket kenne ich, ich würde aber gerne meinen eigenen individuellen Lebenslauf erstellen...

@ctansearch: Longtables habe ich in diesem Fall absichtlich verwendet, da im Regelfall eines Lebenslaufs ein Seitenumbruch innerhalb der Auflistung ja meistens gegeben ist... Z.b. außerhalb des Minimalbeispiels brauche ich in meinem Lebenslauf diesen Seitenumbruch. Der Seitenumbruch zwischen den Unterpunkten ist ja auch erwünscht, nur zwischen der Überschrift und der nächsten Tabellenzeile würde ich ihn gerne vermeiden.

Dennoch vielen Dank schonmal für Eure Hilfe, über weitere Vorschläge würde ich mich freuen!

tral
19-04-2012, 23:08
Meinst du jetzt "Zeilenumbruch" oder "Seitenumbruch"? Bin etwas verwirrt...

Christian.

Scotty
19-04-2012, 23:31
Sorry, Seitenumbruch natürlich...

Viele Grüße

novata
20-04-2012, 22:12
Hallo!
Um den Seitenumbruch nach der Überschrift zu verhindern, musst du \endhead nach der Überschriftenzeile einfügen. Bei einer Longtable immer mindestens zweimal setzen.


\begin{longtable}{p{45mm}|p{120mm}}
\multicolumn{2}{l}{\Large \textbf{Interessen} \vspace{3mm}}\\
\endhead
aaaaaaaaaaaaaaa aaaaaaaaaa aaaa & aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\newline aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\newline aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaa\newline aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaa \\
\end{longtable}

ctansearch
20-04-2012, 22:24
Eine echte Lösung habe ich nicht gefunden, aber anscheinend benutzt Du die Überschrift "Interessen" als Kolumnenüberschrift, weshalb eine \multiculomn etc nicht nötig ist.


\begin{longtable}{p{45mm}|p{120mm}}
\Large \textbf{Interessen} \vspace{3mm}\\ \nopagebreak[4]
aaaaaaaaaaaaaaa aaaaaaaaaa aaaa & aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\newline aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\newline aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaa\newline aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaa \\
\end{longtable}

André25
21-04-2012, 13:23
Hallo Scotty!

Hast Du Lust, wenn Du fertig bist, eine Lebenslauf-Vorlage (LaTeX-Code) hier zu posten (mit abgeänderten Einträgen versteht sich ;)).

Würde mich mal interessieren -- sieht soweit ganz nett aus...


Grüße, André :cool:

Scotty
02-05-2012, 03:28
Hallo!

Vielen Dank schonmal soweit!
Tut mir leid, dass ich so lange nicht geantwortet habe... Mit dem Update auf das neue Ubuntu hat es mir leider meinen MBR total zerschossen, Windows bekomme ich noch immer nicht wieder zum Laufen (und derzeit keine Zeit die Daten zu sichern und neu aufzusetzen) und unter Ubuntu habe ich die letzten Tage mit der Einrichtung von Latex gekämpft...

Sobald alles wieder richtig läuft werde ich Eure Vorschläge ausprobieren, nochmals vielen Dank dafür!

@André25: Mein Plan war es eigentlich eine Vorlage in der Art von moderncv zu schreiben (nicht dass ich gut in sowas wäre, aber ich dachte mir das könnte ein ganz guter Ansporn zur Vertiefung von Latex sein) und das dann frei zur Verfügung zu stellen.
Kann noch ein klein wenig dauern bis ich zufrieden damit bin, aber sobald es soweit ist, stelle ich das dann natürlich gerne rein!

Viele Grüße


//edit:
Auch wenn es jetzt schon spät ist, es hat mich jetzt gerade doch ziemlich gereizt Eure Vorschläge auszuprobieren...

@novata: Super! Das macht genau das, was ich gesucht habe!
Vielen Dank!
Da dadurch jedoch die Überschrift zentriert wird, habe ich jetzt ein \hfill hintendran gesetzt. Oder wäre ein \hspace{165mm} durch den fest definierten Abstandswert ein besserer Stil?
Und was soll ich wo immer zwei mal setzen?

@ctansearch: Danke auch für deine Hilfe, aber dadurch bleibt weiterhin der Zeilenumbruch zwischen der ersten Zeile (bzw. "Überschriftenzeile") und der ersten Zeile mit Inhalt bestehen.
Das multicolumn verwende ich, da dadurch der Strich abgeschnitten wird, bei längeren Tabellentiteln sieht das sonst schnell sehr eng aus...

u_fischer
02-05-2012, 10:51
Wie kann ich es jetzt verhindern, dass bei der ersten Tabelle zwischen "Interessen" und der ersten Zeile der Zeilenumbruch auftritt? (zwischen späteren Zeilen ist er erwünscht, sollte es nötig sein!)


Der Zeilenumbruch wird mit \\* verhindert (siehe Dokumentation von longtable). Aber unterlass bloß diese \vspace-Befehle innerhalb der Tabelle. Abstände zwischen den Zeilen werden wie auch sonst mit \\*[20pt] oder \\[20pt] eingefügt.

novata
02-05-2012, 17:03
Hi Scotty!


Da dadurch jedoch die Überschrift zentriert wird, ... Und was soll ich wo immer zwei mal setzen?

Du musst es zweimal setzen, sprich zweimal in ein pdf umwandeln. Dann ist das Problem behoben.
Ich hoffe, du verstehst mich jetzt. Ich habe nicht viel Ahnung von Latex und weiß daher nicht wie man das korrekt ausdrückt.

Viele Grüße
novata

Scotty
03-05-2012, 01:58
@u_fischer: Vielen Dank, das funktioniert ebenfalls super!
\\* hatte ich zuvor auch versucht, jedoch funktionierte das in Kombination mit den vspace nicht mehr, aber die bin ich dann jetzt ja (zumindest da) auch los. :)

Um jedoch innerhalb einer Tabellenspalte einen Zeilenumbruch mit größerem Abstand zu machen, füge ich sie an anderer Stelle dennoch weiterhin hinzu:


\begin{longtable}{p{45mm}|p{120mm}}
bla & bla1 \vspace{\HoeheTabellenzeilenIn}\newline bla2 \\
abc & def \\
\end{longtable}

Dazu konnte ich bisher auch keine andere Lösung als vspace finden, habe in verschiedenen Tutorials bisher jedoch auch keine nicht-Empfehlungen dafür gefunden.


@novata: Ach ok, tut mir leid, dachte da irgendwie daran den Befehl zwei Mal in der longtable setzen zu müssen... :D


Viele Grüße und vielen Dank nochmals an Euch!

u_fischer
03-05-2012, 10:26
Dazu konnte ich bisher auch keine andere Lösung als vspace finden,

Innerhalb einer p-Zelle (parbox) ist es auch ok. In deinem ersten Beispiel hattest du es in einer l-Zelle, da hat es erstens keinen Sinn und zweitens "bricht es aus" und fügt dadurch eine (Seiten)-Umbruchstelle ein, die du gar nicht haben willst.

Ich würde übrigens den Abstand mit \par + \vspace erzeugen:


\documentclass{article}
\begin{document}
\begin{tabular}{p{45mm}|p{120mm}}
bla & bla1 \par\vspace{1cm} bla2 \\
\end{tabular}
\end{document}

Scotty
08-05-2012, 23:40
Ok, gut zu wissen!
Das mit par habe ich jetzt auch übernommen.
Vielen Dank nochmals!

Viele Grüße