KOMA-Script kontra longtable

Tabellen und Grafiken erstellen und anordnen


eckart

KOMA-Script kontra longtable

Beitrag von eckart »

Ich habe unter Verwednung des KOMA-Scripts (package scrlttr2) in einer Briefvorlage auf der ersten Seite einen abweichenden Dokumentenfuß vereinbart Er ist höher als auf den Folgeseiten, wodurch der Text auf der ersten Seite eher umbricht als auf den Folgeseiten. Verwende ich nun als Text eine Longtable, irgnoriert diese beim Umbruch auf der ersten Seite, dass der Umbruch eher erfolgen muss. Die Tabelle bricht am generellen Seitenende um. Damit ragt die Tabelle in den Fuß der ersten Seite hinein. Wie kann man das ändern?

Benutzeravatar
Johannes_B
Moderator
Moderator
Beiträge: 5079
Registriert: Do 1. Nov 2012, 14:55
Kontaktdaten:

Beitrag von Johannes_B »

Könntest du das eventuell in Form eines vollständigen Minimalbeispiels reproduzieren?

Momentan ist dein Problem, zumindest für mich, nicht nachvollziehbar.
TeXwelt - Fragen und Antworten Schaut vorbei und stellt Fragen.
LaTeX-Vorlagen?

Der Weg zum Ziel: Ruhe bewahren und durchatmen, Beiträge und unterstützende Links aufmerksam lesen, Lösungsansätze verstehen und ggf. nachfragen.

eckaart

Beitrag von eckaart »

ok, mache ich. Kann aber etwas dauern.

eckart

Hier das Minimalbeispiel

Beitrag von eckart »

\documentclass[visualize,						% Wird unbedinbgt für PDF/A-Erzeugung gebraucht!
	paper=a4, version=last,fontsize=12pt,	% Format A4, generelle Schriftgröße 12pt
	foldmarks=true,foldmarks=bmp,			% Faltmarken, nur links oben
	locfield=wide,							% location-Feld breit
	numericaldate=true]						% Datum voll numerisch darstellen
{scrlttr2}


\usepackage[ngerman]{babel}
\usepackage{ltxtable}

\usepackage{geometry}


% Oberer Rand generell auf 24 mm gesetzt
\geometry{top=24mm}
% Unteren Rand generell auf 20 mm gesetzt
\geometry{bottom=20mm}
% Linker Rand generell auf 24.1 mm gesetzt
\geometry{left=24.1mm}
% Rechter Rand generell auf 15.9 mm gesetzt
\geometry{right=15.9mm}

% Setzen von Pseudolängen (internen Abständen)
\makeatletter

%************ Die folgende Pseudolänge ändert den Fuß für die erste Seite.
%************ Diese Angabe scheint die Longtable zu irnorieren!
% Fuß der ersten Seite nach oben ziehen
\@setplength{firstfootvpos}{265mm}
\makeatother


%Anschriftenfeld
\newkomavar{addressblock}

% Variable für den Fuß vereinbaren
\newkomavar{fussspaltelinks}
\newkomavar{fussspaltemitte}
\newkomavar{fussspalterechts}

% Variable für den Briefinhalt
\newkomavar{brieftext}

% Variable für den Briefschluss
\newkomavar{briefschluss}

\begin{document}

\newkomavar{kostentabelleninhalt}
\newkomavar{testkostentabelle}


% Variable für den Fuß setzen
\setkomavar{fussspaltelinks}{%
Fußspalte links 1 \\
Fußspalte links 2 \\
Fußspalte links 3
}%
\setkomavar{fussspaltemitte}{%
Fußspalte mitte 1 \\
Fußspalte mitte 2 \\
Fußspalte mitte 3
}%

\setkomavar{fussspalterechts}{%
Fußspalte rechts 1 \\
Fußspalte rechts 2 \\
Fußspalte rechts 3
}%


%Anschriftenblock
\setkomavar{addressblock}{%
Anschrift
}%


% Datum rechts oberhalb der Anredefloskel leer setzen
\setkomavar{date}{}


% Abstand zwischen letzter Textzeile und Fußzeile
\setlength{\footskip}{5mm}

\setkomavar{firstfoot}{%
	\hrule	% horizontale Linie
		\begin{minipage}[t]{0.33\textwidth}
			\usekomavar{fussspaltelinks}	
		\end{minipage}
		\begin{minipage}[t]{0.33\textwidth}
			\usekomavar{fussspaltemitte}
		\end{minipage}
		\begin{minipage}[t]{0.33\textwidth}
			\usekomavar{fussspalterechts}
		\end{minipage}
}%


\setkomavar{briefschluss}{%
	Unterzeichner \\
	Amtsbezeichnung
}%


\setkomavar{kostentabelleninhalt}{1&1234.2&Gegenstand 1&20,00&10,00&5,00\\ \hline2&1234.2&Gegenstand 1&20,00&10,00&5,00\\ \hline3&1234.2&Gegenstand 1&20,00&10,00&5,00\\ \hline4&1234.2&Gegenstand 1&20,00&10,00&5,00\\ \hline5&1234.2&Gegenstand 1&20,00&10,00&5,00\\ \hline6&1234.2&Gegenstand 1&20,00&10,00&5,00\\ \hline6&1234.2&Gegenstand 1&20,00&10,00&5,00\\ \hline7&1234.2&Gegenstand 1&20,00&10,00&5,00\\ \hline8&1234.2&Gegenstand 1&20,00&10,00&5,00\\ \hline9&1234.2&Gegenstand 1&20,00&10,00&5,00\\ \hline10&1234.2&Gegenstand 1&20,00&10,00&5,00\\ \hline11&1234.2&Gegenstand 1&20,00&10,00&5,00\\ \hline12&1234.2&Gegenstand 1&20,00&10,00&5,00\\ \hline13&1234.2&Gegenstand 1&20,00&10,00&5,00\\ \hline14&1234.2&Gegenstand 1&20,00&10,00&5,00\\ \hline15&1234.2&Gegenstand 1&20,00&10,00&5,00\\ \hline16&1234.2&Gegenstand 1&20,00&10,00&5,00\\ \hline16&1234.2&Gegenstand 1&20,00&10,00&5,00\\ \hline16&1234.2&Gegenstand 1&20,00&10,00&5,00\\ \hline16&1234.2&Gegenstand 1&20,00&10,00&5,00\\ \hline16&1234.2&Gegenstand 1&20,00&10,00&5,00\\ \hline16&1234.2&Gegenstand 1&20,00&10,00&5,00\\ \hline16&1234.2&Gegenstand 1&20,00&10,00&5,00\\ \hline16&1234.2&Gegenstand 1&20,00&10,00&5,00\\ \hline16&1234.2&Gegenstand 1&20,00&10,00&5,00\\ \hline16&1234.2&Gegenstand 1&20,00&10,00&5,00\\ \hline16&1234.2&Gegenstand 1&20,00&10,00&5,00\\ \hline16&1234.2&Gegenstand 1&20,00&10,00&5,00\\ \hline}


\setkomavar{testkostentabelle}{%
		\begin{longtable}{| c | c | c | c | c | c |}
			\usekomavar{kostentabelleninhalt}
		\end{longtable}
}%


% Briefinhalt
\setkomavar{brieftext}{%
	\usekomavar{testkostentabelle}
}%

\begin{letter}{%
	\usekomavar{addressblock}
}%

\opening{}

\usekomavar{brieftext}

\usekomavar{briefschluss}

\end{letter}

\end{document}

Noch so einer

Beitrag von Noch so einer »

Die overfull \vbox, die gemeldet wird, zeigt, dass das schon beachtet wird, aber ein Umbruch an entsprechender Stelle schlicht nicht möglich ist. Das hat vermutlich etwas damit zu tun, dass Du zu wenig Absätze machst. Mir ist ehrlich gesagt auch nicht klar, warum Du das Briefende nicht mit \closing{…} und ggf. mit signature statt mit einer eigenen Variable machst und warum Du überhaupt diese Variablenorgie anstellst. Wenn man das halbwegs normal macht, wie das in der KOMA-Script-Anleitung angegeben ist, dann funktioniert es nämlich:
\documentclass[visualize,                  % Wird unbedinbgt für PDF/A-Erzeugung gebraucht!
   paper=a4, version=last,fontsize=12pt,   % Format A4, generelle Schriftgröße 12pt
   foldmarks=true,foldmarks=bmp,         % Faltmarken, nur links oben
   locfield=wide,                     % location-Feld breit
   refline=nodate, % Kein automatisches Datum setzen
   numericaldate=true]                  % Datum voll numerisch darstellen
{scrlttr2}


\usepackage[ngerman]{babel}
\usepackage{ltxtable}

\usepackage{geometry}

\geometry{% Das macht man alles in einer geometry-Anweisung!
  top=24mm,% Oberer Rand generell auf 24 mm gesetzt
  bottom=20mm,% Unteren Rand generell auf 20 mm gesetzt
  left=24.1mm,% Linker Rand generell auf 24.1 mm gesetzt
  right=15.9mm,% Rechter Rand generell auf 15.9 mm gesetzt
  footskip=5mm,% Abstand zwischen Textende und Fuß-Grundlinie!
}

% Setzen von Pseudolängen (internen Abständen)
\makeatletter

%************ Die folgende Pseudolänge ändert den Fuß für die erste Seite.
%************ Diese Angabe scheint die Longtable zu irnorieren!
% Fuß der ersten Seite nach oben ziehen
\@setplength{firstfootvpos}{264mm}
\makeatother

% Variable für den Fuß vereinbaren
\newkomavar{fussspaltelinks}
\newkomavar{fussspaltemitte}
\newkomavar{fussspalterechts}

\begin{document}

\newkomavar{kostentabelleninhalt}
\newkomavar{testkostentabelle}


% Variable für den Fuß setzen
\setkomavar{fussspaltelinks}{%
Fußspalte links 1 \\
Fußspalte links 2 \\
Fußspalte links 3
}%
\setkomavar{fussspaltemitte}{%
Fußspalte mitte 1 \\
Fußspalte mitte 2 \\
Fußspalte mitte 3
}%

\setkomavar{fussspalterechts}{%
Fußspalte rechts 1 \\
Fußspalte rechts 2 \\
Fußspalte rechts 3
}%

\setkomavar{firstfoot}{%
   \hrule   % horizontale Linie
      \begin{minipage}[t]{0.33\textwidth}
         \usekomavar{fussspaltelinks}  
      \end{minipage}
      \begin{minipage}[t]{0.33\textwidth}
         \usekomavar{fussspaltemitte}
      \end{minipage}
      \begin{minipage}[t]{0.33\textwidth}
         \usekomavar{fussspalterechts}
      \end{minipage}
}%


\setkomavar{signature}{%
   Unterzeichner \\
   Amtsbezeichnung
}%
\let\raggedsignature\raggedright

\begin{letter}{%
    Anschrift
}%

\opening{Hallo,}
\begin{longtable}{| c | c | c | c | c | c |}
1&1234.2&Gegenstand 1&20,00&10,00&5,00\\ \hline
2&1234.2&Gegenstand 1&20,00&10,00&5,00\\ \hline
3&1234.2&Gegenstand 1&20,00&10,00&5,00\\ \hline
4&1234.2&Gegenstand 1&20,00&10,00&5,00\\ \hline
5&1234.2&Gegenstand 1&20,00&10,00&5,00\\ \hline
6&1234.2&Gegenstand 1&20,00&10,00&5,00\\ \hline
6&1234.2&Gegenstand 1&20,00&10,00&5,00\\ \hline
7&1234.2&Gegenstand 1&20,00&10,00&5,00\\ \hline
8&1234.2&Gegenstand 1&20,00&10,00&5,00\\ \hline
9&1234.2&Gegenstand 1&20,00&10,00&5,00\\ \hline
10&1234.2&Gegenstand 1&20,00&10,00&5,00\\ \hline
11&1234.2&Gegenstand 1&20,00&10,00&5,00\\ \hline
12&1234.2&Gegenstand 1&20,00&10,00&5,00\\ \hline
13&1234.2&Gegenstand 1&20,00&10,00&5,00\\ \hline
14&1234.2&Gegenstand 1&20,00&10,00&5,00\\ \hline
15&1234.2&Gegenstand 1&20,00&10,00&5,00\\ \hline
16&1234.2&Gegenstand 1&20,00&10,00&5,00\\ \hline
16&1234.2&Gegenstand 1&20,00&10,00&5,00\\ \hline
16&1234.2&Gegenstand 1&20,00&10,00&5,00\\ \hline
16&1234.2&Gegenstand 1&20,00&10,00&5,00\\ \hline
16&1234.2&Gegenstand 1&20,00&10,00&5,00\\ \hline
16&1234.2&Gegenstand 1&20,00&10,00&5,00\\ \hline
16&1234.2&Gegenstand 1&20,00&10,00&5,00\\ \hline
16&1234.2&Gegenstand 1&20,00&10,00&5,00\\ \hline
16&1234.2&Gegenstand 1&20,00&10,00&5,00\\ \hline
16&1234.2&Gegenstand 1&20,00&10,00&5,00\\ \hline
16&1234.2&Gegenstand 1&20,00&10,00&5,00\\ \hline
16&1234.2&Gegenstand 1&20,00&10,00&5,00\\ \hline
\end{longtable}
\closing{Bis dann}

\end{letter}

\end{document}
Übrigens ist ein \footskip-Wert von 5mm sehr wenig. Das ist nämlich der Abstand zwischen der letzten Grundlinie des Textbereichs und der ersten Grundlinie des Fußes. Die Seitenzahl liegt dann also in diesen 5mm, nicht darunter. Du siehst das, wenn Du mal auf der zweiten Seite mit Hilfe des Pakets lipsum ein \lipsum vor \closing einfügst. Auch auf der ersten Seite täte mehr Abstand Not (min. 10mm).

eckart

Beitrag von eckart »

Ich habe mal in deinem Vorschlag die Longtable durch Auskommentieren 6 Zeilen kürzer gemacht und der anfangs beschriebene Effekt des Hineinschreibens in den Fußbereich ist wieder da.
\documentclass[paper=a4, version=last,fontsize=12pt,   % Format A4, generelle Schriftgröße 12pt 
   foldmarks=true,foldmarks=bmp,         % Faltmarken, nur links oben 
   locfield=wide,                     % location-Feld breit 
   refline=nodate, % Kein automatisches Datum setzen 
   numericaldate=true]                  % Datum voll numerisch darstellen 
{scrlttr2} 


\usepackage[ngerman]{babel} 
\usepackage{ltxtable} 

\usepackage{geometry} 

\geometry{% Das macht man alles in einer geometry-Anweisung! 
  top=24mm,% Oberer Rand generell auf 24 mm gesetzt 
  bottom=20mm,% Unteren Rand generell auf 20 mm gesetzt 
  left=24.1mm,% Linker Rand generell auf 24.1 mm gesetzt 
  right=15.9mm,% Rechter Rand generell auf 15.9 mm gesetzt 
  footskip=5mm,% Abstand zwischen Textende und Fuß-Grundlinie! 
} 

% Setzen von Pseudolängen (internen Abständen) 
\makeatletter 

%************ Die folgende Pseudolänge ändert den Fuß für die erste Seite. 
%************ Diese Angabe scheint die Longtable zu irnorieren! 
% Fuß der ersten Seite nach oben ziehen 
\@setplength{firstfootvpos}{264mm} 
\makeatother 

% Variable für den Fuß vereinbaren 
\newkomavar{fussspaltelinks} 
\newkomavar{fussspaltemitte} 
\newkomavar{fussspalterechts} 

\begin{document} 

\newkomavar{kostentabelleninhalt} 
\newkomavar{testkostentabelle} 


% Variable für den Fuß setzen 
\setkomavar{fussspaltelinks}{% 
Fußspalte links 1 \\ 
Fußspalte links 2 \\ 
Fußspalte links 3 
}% 
\setkomavar{fussspaltemitte}{% 
Fußspalte mitte 1 \\ 
Fußspalte mitte 2 \\ 
Fußspalte mitte 3 
}% 

\setkomavar{fussspalterechts}{% 
Fußspalte rechts 1 \\ 
Fußspalte rechts 2 \\ 
Fußspalte rechts 3 
}% 

\setkomavar{firstfoot}{% 
   \hrule   % horizontale Linie 
      \begin{minipage}[t]{0.33\textwidth} 
         \usekomavar{fussspaltelinks}   
      \end{minipage} 
      \begin{minipage}[t]{0.33\textwidth} 
         \usekomavar{fussspaltemitte} 
      \end{minipage} 
      \begin{minipage}[t]{0.33\textwidth} 
         \usekomavar{fussspalterechts} 
      \end{minipage} 
}% 


\setkomavar{signature}{% 
   Unterzeichner \\ 
   Amtsbezeichnung 
}% 
\let\raggedsignature\raggedright 

\begin{letter}{% 
    Anschrift 
}% 

\opening{Hallo,} 
\begin{longtable}{| c | c | c | c | c | c |} 
1&1234.2&Gegenstand 1&20,00&10,00&5,00\\ \hline 
2&1234.2&Gegenstand 1&20,00&10,00&5,00\\ \hline 
3&1234.2&Gegenstand 1&20,00&10,00&5,00\\ \hline 
4&1234.2&Gegenstand 1&20,00&10,00&5,00\\ \hline 
5&1234.2&Gegenstand 1&20,00&10,00&5,00\\ \hline 
6&1234.2&Gegenstand 1&20,00&10,00&5,00\\ \hline 
6&1234.2&Gegenstand 1&20,00&10,00&5,00\\ \hline 
7&1234.2&Gegenstand 1&20,00&10,00&5,00\\ \hline 
8&1234.2&Gegenstand 1&20,00&10,00&5,00\\ \hline 
9&1234.2&Gegenstand 1&20,00&10,00&5,00\\ \hline 
10&1234.2&Gegenstand 1&20,00&10,00&5,00\\ \hline 
11&1234.2&Gegenstand 1&20,00&10,00&5,00\\ \hline 
12&1234.2&Gegenstand 1&20,00&10,00&5,00\\ \hline 
13&1234.2&Gegenstand 1&20,00&10,00&5,00\\ \hline 
14&1234.2&Gegenstand 1&20,00&10,00&5,00\\ \hline 
15&1234.2&Gegenstand 1&20,00&10,00&5,00\\ \hline 
16&1234.2&Gegenstand 1&20,00&10,00&5,00\\ \hline 
16&1234.2&Gegenstand 1&20,00&10,00&5,00\\ \hline 
16&1234.2&Gegenstand 1&20,00&10,00&5,00\\ \hline 
16&1234.2&Gegenstand 1&20,00&10,00&5,00\\ \hline 
16&1234.2&Gegenstand 1&20,00&10,00&5,00\\ \hline 
16&1234.2&Gegenstand 1&20,00&10,00&5,00\\ \hline 
%16&1234.2&Gegenstand 1&20,00&10,00&5,00\\ \hline 
%16&1234.2&Gegenstand 1&20,00&10,00&5,00\\ \hline 
%16&1234.2&Gegenstand 1&20,00&10,00&5,00\\ \hline 
%16&1234.2&Gegenstand 1&20,00&10,00&5,00\\ \hline 
%16&1234.2&Gegenstand 1&20,00&10,00&5,00\\ \hline 
%16&1234.2&Gegenstand 1&20,00&10,00&5,00\\ \hline 
\end{longtable} 
\closing{Bis dann} 

\end{letter} 

\end{document}

eckart

Beitrag von eckart »

Das erneute Auftreten der Misslichkeit lag im Verwenden von 'signature'. Dessen Inhalt wurde in den Fußbereich geschoben. Wenn ich alle drei Unterschriftenzeilen ins 'closing' lege. funktioniert der Umbruch einwandfrei. Damit ist der Fall erst mal erledigt. Nochmals vielen Dank und vielleicht bis zum nächsten Mal.

Besserwisser

Beitrag von Besserwisser »

Du musst einfach lernen, dass es Situationen gibt, in denen TeX nicht genug Freiheiten hat, um eine nach den Einstellungen passable Lösung zu finden. Beispielsweise müssen Gruß und Signatur immer eine Einheit bilden. Wenn nun mitten darin ein Umbruch erfolgen müsste, dann gibt es je abhängig von den weiteren Umständen entweder einen zu frühen Umbruch oder einen zu späten. Normalerweise gibt es bei Briefen eher einen zu frühen. Bei einem Zusammentreffen mit besonderen Umgebungen wie einer longtable kann es aber auch einen zu späten Umbruch geben. Das geschieht aber nicht stillschweigend, sondern mit einer entsprechenden Meldung, wie die bereits genannte "overfull \vbox". In dem Fall sollte man dann gezielt eingreifen. Mittel dafür gibt es angefangen von einem \newpage an geeigneter Stelle bis hin zu einer Umformulierung des Textes eine ganze Menge.

Andere Fälle, in denen solche Meldungen auftreten sind beispielsweise zu große Boxen oder allgemein Boxen im Bereich des Seitenumbruchs im doppelseitigen Satz.

Übrigens gibt es auch "underfull \vbox", "overfull \hbox" und "underfull \hbox". Siehe auch »Was bedeuten \underfull/\overfull \hbox?«

Noch so einer

Beitrag von Noch so einer »

Im konkreten Fall wäre eine Anpassung von footskip=5mm in einen tauglicheren (siehe frühere Anmerkungen) eine Möglichkeit des Eingriffs gewesen.

Antworten