Hallo,

ich würde gerne eine Stückliste in LaTeX erstellen. Ich habe mir gedacht das mit einer longtable-Umgebung zu machen, weil diese ja lang werden können und so der Seitenumbruch besser umgesetzt wird. Also ich weiss nicht ob meine Umsetzung die richtige ist. Darum habe ich sie mal hier reingestellt.

Open in writeLaTeX
\documentclass[paper=a4,DIV21,portait,12pt]{scrreprt}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{booktabs}
\usepackage{multirow}
\usepackage{longtable}
\usepackage{tabularx}

\newcolumntype{L}[1]{>{\raggedright\arraybackslash}p{#1}} % linksbündig mit Breitenangabe
\newcolumntype{C}[1]{>{\centering\arraybackslash}p{#1}} % zentriert mit Breitenangabe
\newcolumntype{R}[1]{>{\raggedleft\arraybackslash}p{#1}} % rechtsbündig mit Breitenangabe

\usepackage{longtable}
\begin{document}

\newcounter{pos}
\newcommand\pos{\textbf{\stepcounter{pos}\arabic{pos}}}

%\renewcommand{\arraystretch}{1.3}
\begin{center}
\tiny1
\begin{longtable}{
    C{0.3cm} % Spalte 1
    C{0.4cm} % Spalte 2
    C{0.5cm} % Spalte 3
    L{4cm} % Spalte 4
    L{4cm} % Spalte 5
    L{4cm} % Spalte 6
    L{4cm} % Spalte 7
    L{4cm} % Spalte 8
    L{4cm} % Spalte 9
    L{4cm} % Spalte 10
    L{4cm} % Spalte 11
    L{4cm} % Spalte 12
    L{4cm} % Spalte 13
    L{4cm} % Spalte 14
    L{4cm} % Spalte 15  
}
%\caption{Stückliste} 
%\label{Stückliste}

% 1 Kopfzeile

    \toprule[1.5pt] 
    Pos. & Anz. & Einheit 
    & \multicolumn{4}{c}{\centering{Benennung}} 
    & \multicolumn{4}{c}{\centering{Sachnummer/Norm - Kurzbezeichnung}} 
    & \multicolumn{4}{c}{\centering{Bemerkung}}

    \\ \toprule[1.5pt]

\endhead % Ende des Tabellenkopfes

%\toprule [1.5pt]

\endlastfoot % Ende des letzten Tabellenfusses

% Inhalt

\pos & 1 & Stk. & \multicolumn{4}{l}{Benennung} & \multicolumn{4}{l}{Benennung} & \multicolumn{4}{l}{Benennung}

\\ \bottomrule

\end{longtable}
\end{center}
\end{document}

alt text

gefragt 10 Jan '15, 20:45

Giovario's gravatar image

Giovario
413132126
Akzeptiert-Rate: 0%

bearbeitet 10 Jan '15, 21:06

saputello's gravatar image

saputello
11.1k174365

Sieht doch gut aus! Was stört Dich noch?

(10 Jan '15, 20:58) cis

@cis

das ist nicht meine Version sondern so wie es aussehen soll ;)

@saputello

Der obere und untere Teil soll auf jeder Seite sein. Der obere Teil mit den Spaltenbezeichnungen kann auch unten stehen. Also über den unterem Schriftfeld.

(10 Jan '15, 23:02) Giovario

Wenn ich Dich richtig verstehe, dann willst Du in folgende Richtung gehen:

Open in writeLaTeX
\documentclass[12pt,DIV=21]{scrartcl}
\usepackage{selinput}
\SelectInputMappings{
  adieresis={ä},
  germandbls={ß},
}
\usepackage[ngerman]{babel}
\usepackage{array}
\usepackage{longtable}
\usepackage{booktabs}
\newcommand*{\theadtext}[1]{{\tiny #1}}
\newcommand*{\thead}[1]{\multicolumn1{@{}c@{}}{\theadtext{#1}}}
\newcolumntype{C}[1]{>{\centering\arraybackslash\hspace{0pt}}p{#1}}% siehe array-Anleitung
\newcolumntype{L}[1]{>{\raggedright\arraybackslash\hspace{0pt}}p{#1}}% siehe array-Anleitung
\newcolumntype{R}[1]{>{\raggedleft\arraybackslash\hspace{0pt}}p{#1}}% siehe array-Anleitung
\newcounter{pos}
\newcommand*{\pos}{\refstepcounter{pos}\thepos}
\begin{document}
\setcounter{pos}{0}
\begin{longtable}{@{}*3{C{2em}}*3{L{\dimexpr(\textwidth-6em-10\tabcolsep)/3}}@{}}
\toprule% siehe booktabs-Anleitung
\thead{Pos.} & \thead{Menge} & \thead{Einheit} & \thead{Benennung} &
\thead{Sachnummer/Norm + Kurzbezeichnung} & 
\thead{Bemerkung}\tabularnewline
\midrule% siehe booktabs-Anleitung
\endhead% siehe longtable-Anleitung
\midrule
\multicolumn6{@{}p{\textwidth}@{}}{%
  \tiny
  \begin{tabular}{@{}C{3em}C{10em}C{4em}C{3em}C{4em}C{6em}C{6em}%
      *2{C{\dimexpr(\textwidth-40em-18\tabcolsep)/2}}C{4em}@{}}
    \multicolumn4{@{}c}{\normalsize\strut } &
    \multicolumn2{c}{\normalsize\strut } &
    \normalsize\strut & 
    \multicolumn2{c}{\normalsize\strut } &
    \normalsize\strut
    \tabularnewline
    & & & &        & Datum & Name & & &
    \tabularnewline
    & & & & Bearb. & xx    & xx   & & &
    \tabularnewline
    & & & & Gsp.   & xx    & xx   & & \multicolumn2{c@{}}{XXXXXXXXXX}
    \tabularnewline
    & & & & Norm.  & xx    & xx   & &
    \tabularnewline
    & & & & \multicolumn2{c}{} & & & &
    \tabularnewline
    & & & & & & & & & Blatt
    \tabularnewline
    & & & & & & & & xxxxxxx 0 & \hfill 1
    \tabularnewline
    & & & & & & & & & \hfill 2
    \tabularnewline
    \midrule
    Zust. & Änderung & Datum & Name 
    \tabularnewline
  \end{tabular}
}\tabularnewline
\bottomrule% siehe booktabs-Anleitung
\endfoot% siehe longtable-Anleitung
\pos & 1 & Stk. & & & \tabularnewline
\pos & 1 & Stk. & & & \tabularnewline
\pos & 1 & Stk. & & & \tabularnewline
\pos & 1 & Stk. & & & \tabularnewline
\pos & 1 & Stk. & & & \tabularnewline
\pos & 1 & Stk. & & & \tabularnewline
\pos & 1 & Stk. & & & \tabularnewline
\pos & 2 & Stk. & & & \tabularnewline
\pos & 2 & Stk. & & & \tabularnewline
\pos & 4 & Stk. & & & \tabularnewline
\pos & 2 & Stk. & & & \tabularnewline
\pos & 2 & Stk. & & & \tabularnewline
\pos & 12 & Stk. & & & \tabularnewline
\pos & 4 & Stk. & & & \tabularnewline
\pos & 8 & Stk. & & & \tabularnewline
\pos & 2 & Stk. & & & \tabularnewline
\pos & 4 & Stk. & & & \tabularnewline
\pos & 4 & Stk. & & & \tabularnewline
\pos & 1 & Stk. & & & \tabularnewline
\pos &   & Stk. & & & \tabularnewline
\pos &   & Stk. & & & \tabularnewline
\pos &   & Stk. & & & \tabularnewline
\pos &   & Stk. & & & \tabularnewline
\pos &   & Stk. & & & \tabularnewline
\pos &   & Stk. & & & \tabularnewline
\pos &   & Stk. & & & \tabularnewline
\pos &   & Stk. & & & \tabularnewline
\pos &   & Stk. & & & \tabularnewline
\pos &   & Stk. & & & \tabularnewline
\pos &   & Stk. & & & \tabularnewline
\pos &   & Stk. & & & \tabularnewline
\pos &   & Stk. & & & \tabularnewline
\pos &   & Stk. & & & \tabularnewline
\pos &   & Stk. & & & \tabularnewline
\pos &   & Stk. & & & \tabularnewline
\pos &   & Stk. & & & \tabularnewline
\pos &   & Stk. & & & \tabularnewline
\pos &   & Stk. & & & \tabularnewline
\pos &   & Stk. & & & \tabularnewline
\pos &   & Stk. & & & \tabularnewline
\pos &   & Stk. & & & \tabularnewline
\pos &   & Stk. & & & \tabularnewline
\pos &   & Stk. & & & \tabularnewline
\pos &   & Stk. & & & \tabularnewline
\pos &   & Stk. & & & \tabularnewline
\pos &   & Stk. & & & \tabularnewline
\pos &   & Stk. & & & \tabularnewline
\pos &   & Stk. & & & \tabularnewline
\pos &   & Stk. & & & \tabularnewline
\end{longtable}
\end{document}

Dabei habe ich einige Spaltenbreiten fest vorgegeben und für einige eine Berechnung der maximal noch verfügbaren Breite mit Hilfe von \dimexpr (siehe e-TeX-Manual) vorgenommen. Die verwendete Länge \tabcolsep ist der Anteil am Spaltenabstand, den jede Spalte hat. Da ich vor der ersten und nach der letzten Spalte keinen Spaltenabstand verwende muss \tabcolsep jeweils mit 2 * Spaltenanzahl - 2 multipliziert werden.

Damit das erste Wort in den Spalten ggf. ebenfalls getrennt werden kann, habe ich in die Spaltendefinitionen außerdem ein \hspace eingefügt, das dann quasi die Rolle des ersten Wortes einnimmt. C-Spalten sind letztlich zentrierten p-Spalten, L-Spalten entsprechend linksbündige p-Spalten und R-Spalten rechtsbündige p-Spalten.

Ein Trick besteht außerdem noch darin, dass der Fuß der Haupttabelle seinerseits aus einer Tabelle besteht. Damit kann ich für diese beiden Tabellen unabhängig voneinander eine Anzahl an Spalten festlegen. Man hätte diese untere Tabelle auch in weitere Teiltabellen aufteilen können.

Natürlich kann man auch nach Bedarf zusätzliche Linien hinzufügen und natürlich auch die Spaltenbreiten verändern.

Beachten muss man außerdem noch, dass der Fuß einer longtable unveränderlich für die gesamte Tabelle ist (man kann natürlich für die letzte Seite ggf. einen abweichenden Inhalt festlegen). Wenn also die untere Tabelle vom Inhalt der oberen abhängen und von Seite zu Seite anders sein soll, dann geht das nicht mit longtable. Stattdessen muss man dann die Tabelle manuell in mehrere Tabellen für mehrere Seiten aufteilen.

Viele nützliche Hinweise zum Tabellensatz findet man übrigens in der Anleitung zum Paket booktabs, im Tabellensatz-Vortrag und in Herbert Voss' Tabellensatz-Buch. Basiswissen findet sich auch in den meisten LaTeX-Einführungen, allerdings verwenden viele davon – didaktisch nicht sehr geschickt – Formulartabellen, wie man sie für das Ausfüllen benötigt, an Stelle von typografisch ansprechenden Tabellen.

Permanenter link

beantwortet 11 Jan '15, 15:14

saputello's gravatar image

saputello
11.1k174365
Akzeptiert-Rate: 51%

bearbeitet 14 Jan '15, 18:24

Das ist die richtung in der ich gehen wollte! Das mit den zwei verschiedenen Tabellen find ich gut...

Was ich jedoch noch nicht richtig verstehe ist, wo ich die ausrichtung für meine 6 Spalten ändern kann. Denn ich würde gerne die ersten 3 zentriert haben und danach linksbündig. Hatte ich bereits versucht aber wohl noch nciht richtig durchschaut.

Bei der unteren Tabelle würde ich auch gerne die horizontalen Linien einfügen. Brauch ich da auch da tabularnewline?

(12 Jan '15, 09:47) Giovario

@Gio Für linksbündige Spalten mit fester Breite verwendest Du einfach L{<Breite>} statt C{<Breite>} in der Spaltendeklaration. \tabularnewline ist nur ein anderes Makro für das Ende einer Tabellenzeile. Ich finde das übersichtlicher als die leicht zu übersehenden \\.

Horizontale Linien machst Du mit \midrule oder \cmidrule, wie in der Anleitung zu booktabs angegeben und in der Einführung Deines Vertrauens erklärt.

(12 Jan '15, 09:55) saputello

@saputello

das mit Spaltendeklaration kenne ich aber das funktioniert nicht. Ich habe sogar jedes C durch ein L zu ersetzen um zu schauen was passiert. Jedoch habe ich nicht das erreicht was ich wollte. Was mach ich verkehrt?

(14 Jan '15, 17:13) Giovario
1

@Giovario Da ist ein (vermutlich Kopier-)Fehler in der Spaltendefinition von L drin. Ändere dort \centering in \raggedright.

(14 Jan '15, 18:06) esdd
1

@esdd Danke, für den Hinweis.

@Gio Sorry, mein Fehler. Ich habe jetzt für alle Fälle auch noch R-Spalten hinzugefügt.

(14 Jan '15, 18:21) saputello

@esdd Dafür diskutieren wir hier ;)

Danke für die Hilfe so sieht das wie ich mir das vorgestellt habe ;)

(16 Jan '15, 14:22) Giovario
Ergebnis 5 von 6 show 1 more comments
Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs fügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×256
×39
×32
×4

gestellte Frage: 10 Jan '15, 20:45

Frage wurde gesehen: 14,436 Mal

zuletzt geändert: 16 Jan '15, 14:23