Seite 1 von 2

Tabellen, Kopfzeilen. ein Anfänger braucht Hilfe

Verfasst: Do 21. Nov 2013, 11:55
von wooosh
Hi,

ich habe die Schnauze voll von der Software des Marktführers :wink: und würde daher gerne einige Dokumente auf LaTeX umstellen. Allerdings stoße dabei schon früh an die Grenzen meines Wissens.

Ich muss leider bestimmte Design-Vorgaben einhalten, insbesondere was die Kopfzeile angeht. Hier findet ihr einen Screenshot wie die Kopfzeile auszusehen hat. Also nichts anderes als eine Tabelle mit vier Spalten.
Ich würde nun gerne erst einmal diese Tabelle in LaTeX nachbauen, ohne dass sie in der Kopfzeile auftaucht. Das scheint, laut Google, wohl noch mal eine weitere Hürde zu sein.


Ich habe mal ein Minimalbeispiel erstellt. Das Bild habe ich durch einen schwarzen Kasten ersetzt.
Compiler: pdflatex, Version pi :D, MikTeX 2.9
\documentclass[11pt]{scrartcl}

\usepackage{ucs}
\usepackage[utf8x]{inputenc}
\usepackage{ngerman}
\usepackage{amsmath,amssymb,amstext}
\usepackage{graphicx}
\usepackage[automark]{scrpage2}
\usepackage[svgnames]{xcolor}
\usepackage{array}

\pagestyle{scrheadings}

\title{Testing}
\author{Max Mustermann}

\pagestyle{scrheadings}

\begin{document}


\begin{table}
	\begin{tabular*}{\textwidth}{|c|c|c|@{\extracolsep{\fill}}c|}\hline%
		\rule{0.2\textwidth}{1cm} & Dokumententitel & \begin{tabular}{@{}l@{}}Project:\\Document No:\\Issue No:\\Issue Date:\\Page:\\Contents\end{tabular} & \begin{tabular}{@{}l@{}}Astra\\Langer Dokumententitel\\2\\22.11.2013\\1\\43\end{tabular}\\\hline
  \end{tabular*}
\end{table}

\end{document}
Wie man sieht gibt es noch einige Unterschiede zwischen Soll und Ist:
1. Das Bild ist nicht vertikal zentriert.
2. Der Text in der rechten Spalte ist zwar linksbündig, aber durch das
\extracolsep{\fill}
eben nicht linksbündig zur Zellenwand. Ziel des fills sollte eigentlich sein die gesamte Tabelle auf die Breite von \textwidth zu zwingen. Leider scheint das aber nur links vom Text in der Zelle zu funktionieren. Wenn ich das hinter die Zellenformatierung schreibe
\begin{tabular*}{\textwidth}|c|c|c|c@{\extracolsep{\fill}}|}\hline%
spielt die Tabelle rechts verrückt.

Hätte jemand ein paar Tipps wie ich dem gewünschten Ergebnis näher komme? Die Lösung mit den verschachtelten Tabellen finde ich auch irgendwie unschön. Ich hatte hier schon mit dem array Paket experimentiert, bin aber zu keinem guten Ergebnis gekommen.

Danke, Gruß
wooosh

Verfasst: Do 21. Nov 2013, 12:51
von u_fischer
Ich würde mich gar nicht erst mit extracolsep rumschlagen. Wenn man das spezifisch an einer Stelle haben will, braucht man meist eine dummy-Spalte. In deinen Fall scheint mir tabularx viel geeigneter:
\documentclass[11pt]{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{amsmath,amssymb,amstext}
\usepackage{graphicx}
\usepackage[automark]{scrpage2}
\usepackage[svgnames]{xcolor}
\usepackage{array,tabularx}

\pagestyle{scrheadings}

\title{Testing}
\author{Max Mustermann}

\pagestyle{scrheadings}

\begin{document}

\noindent\rule{\textwidth}{0.4pt}%für die Kontrolle

\noindent
\begin{tabularx}{\textwidth}{|c|c|c|X|}\hline%
       \raisebox{-0.5\height}{\rule{0.2\textwidth}{1cm}} & Dokumententitel & 
        \begin{tabular}{@{}l@{}}Project:\\Document No:\\Issue No:\\Issue Date:\\Page:\\Contents\end{tabular} & 
        \begin{tabular}{@{}l@{}}Astra\\Langer Dokumententitel\\2\\22.11.2013\\1\\43\end{tabular}\\\hline
\end{tabularx}


\end{document}

Verfasst: Do 21. Nov 2013, 13:16
von esdd
Die Tabelle kann man unterschiedlich formatieren. Das hängt zum Beispiel auch davon ab, ob einzelne Spalten eine vorgegebene Breite haben sollen. Neben Ulrikes Vorschlag sind hier noch zwei weitere, ebenfalls mit tabularx.
\documentclass{scrartcl} 
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc} 
\usepackage[ngerman]{babel}

\usepackage[top=5cm,headheight=3cm]{geometry}

\usepackage{graphicx} 
\usepackage{tabularx} %lädt auch das Paket array
\usepackage{lastpage}% zum Ermitteln der Gesamtseitenzahl

\usepackage[automark]{scrpage2}
\clearscrheadfoot
\chead[\Kopfzeile]{\Kopfzeile}
\setkomafont{pageheadfoot}{\normalfont\small}
\pagestyle{scrheadings}

%\newcommand\Kopfzeile{% mit „verschachtelten“ Tabellen
  %\begin{tabularx}{\textwidth}{|m{0.2\textwidth}|>{\bfseries\centering\hspace{0pt}}X|c|c|}\hline% 
    %\rule{\linewidth}{1cm} 
    %& Dokumententitel 
    %&\begin{tabular}{@{}>{\bfseries}l@{}}
      %Project:\\Document No:\\Issue No:\\Issue Date:\\Page:\\Contents:
      %\end{tabular}
    %&\begin{tabular}{@{}l@{}}
      %Astra\\Langer Dokumententitel\\2\\22.11.2013\\\pagemark\\\pageref{LastPage}
      %\end{tabular}
    %\\\hline 
  %\end{tabularx}%
%}

\newcommand\Kopfzeile{% mit fest vorgegebener Breite für die 3. und 4. Spalte
  \begin{tabularx}{\textwidth}{|m{0.2\textwidth}|
      >{\bfseries\centering\hspace{0pt}}X|>{\bfseries\raggedright\arraybackslash}m{2.8cm}|
      >{\raggedright\arraybackslash}m{4cm}|}
    \hline% 
    \rule{\linewidth}{1cm} 
    & Dokumententitel 
    & Project:\newline Document No:\newline Issue No:\newline
      Issue Date:\newline Page:\newline Contents:
    & Astra\newline Langer Dokumententitel\newline 2\newline
      22.11.2013 \newline \pagemark \newline \pageref{LastPage}
    \\\hline 
  \end{tabularx}%
}

\usepackage{blindtext}% für Fülltext zum Testen

\begin{document}
\blinddocument
\end{document}
Gruß
Elke

Verfasst: Do 21. Nov 2013, 13:17
von CollmDante
Hier noch ein anderer Weg mit dem Paket tabu und multirow, so kann man auf verschachtelte Tabellen verzichten:
\documentclass[11pt]{scrartcl}
\usepackage{ucs} %veraltet
\usepackage[utf8]{inputenc} %so besser
\usepackage[ngerman]{babel} %
\usepackage{amsmath,amssymb,amstext}
\usepackage{graphicx}
\usepackage[automark]{scrpage2}
\usepackage[svgnames]{xcolor}
\usepackage{booktabs,tabu} % Paket für Tabellen
\usepackage{multirow} % Zellen vertikal zusammenfassen 
\usepackage{array} 

\pagestyle{scrheadings}

\title{Testing}
\author{Max Mustermann}

\pagestyle{scrheadings}

\begin{document}
\begin{table}
   \begin{tabu} to \textwidth {|c|X[0.8]|X[0.8]|X[1.2]|} %siehe Dok zu tabu
   \hline%
   \multirow{6}{*}{\rule{0.2\textwidth}{1cm}} &\multirow{6}{*}{Dokumententitel}     & Project:& Astra\\
     & & Document No:& Langer Dokumententitel\\
     & & Issue No:& 2\\
     & & Issue Date:& 22.11.2013\\
     & & Page:& 1\\
     & & Contents & 43\\
     \hline
  \end{tabu}
\end{table}

\end{document}
Es gibt halt viele Wege.
Gruß Jens

Verfasst: Do 21. Nov 2013, 13:50
von wooosh
Wow! Ich habe nicht damit gerechnet so schnell so tolle Antworten zu bekommen. Herzlichen Dank! Ich werde wohl eine Kombination aus euren Lösungen verwenden. :)

Verfasst: Do 21. Nov 2013, 14:51
von esdd
Bezüglich des eigentlich schönen Paketes tabu habe ich an verschiedenen Stellen gelesen, dass irgendwann eine neue Version herauskommen soll, die zumindest in Teilen nicht kompatibel zu der jetzigen sein soll.

Gruß
Elke

Verfasst: Do 21. Nov 2013, 15:05
von wooosh
Oh okay, gut zu wissen.

Elke, ich spiele gerade mit deiner Lösung rum. Ich würde die Kopfzeile gerne doch breiter als den Text machen. Zunächst habe ich ganz naiv die Tabellenbreite auf 1.2\textwidth gesetzt. Das funktioniert auch so halb. Leider wird die Tabelle nur nach rechts verlängert. Ich muss also den linken Rand verkleinern.
Ich habe dann versucht statt \chead einfach \ihead oder \ohead zu nutzen, aber das ändert leider auch nichts.

Und eine Frage noch:
Du vergrößerst ja mit
\usepackage[top=5cm,headheight=3cm]{geometry}
den Header. Ich habe irgendwo gelesen, dass man dann auch an anderer Stelle den Textbereich entsprechend verkleinern muss, da sich sonst Header und Text überschneiden. Dies geschieht aber bei dir nicht. Ist die Info falsch, oder wieso klappt das bei dir?

Verfasst: Do 21. Nov 2013, 15:27
von esdd
Bei Verwendung von scrpage2 kannst du mit \setheadwidth{1.2\textwidth} die Breite der Kopfzeile anpassen. Als Breitenangabe bei tabularx empfiehlt sich dann aber \linewidth, also \begin{tabularx}{\linewidth}{...}.
\setheadwidth{1.2\textwidth}

\newcommand\Kopfzeile{% mit fest vorgegebener Breite für die 3. und 4. Spalte 
   \begin{tabularx}{\linewidth}{|m{0.2\textwidth}| 
       >{\bfseries\centering\hspace{0pt}}X|>{\bfseries\raggedright\arraybackslash}m{2.8cm}| 
       >{\raggedright\arraybackslash}m{4cm}|} 
     \hline%  
     \rule{\linewidth}{1cm} 
     & Dokumententitel 
     & Project:\newline Document No:\newline Issue No:\newline 
       Issue Date:\newline Page:\newline Contents: 
     & Astra\newline Langer Dokumententitel\newline 2\newline 
       22.11.2013 \newline \pagemark \newline \pageref{LastPage} 
     \\\hline 
   \end{tabularx}% 
} 
Das Paket geometry passt die anderen Werte entsprechend an. Ich hab das Paket auch deshalb genommen, weil du eventuell auch Vorgaben für die Ränder hast. Nähere Infos dazu findest du in der Dokumentation zu geometry.

Gruß
Elke

Verfasst: Do 21. Nov 2013, 15:36
von wooosh
Aha! \setheadwidth klingt logisch. Hui, trotzdem nicht ganz einfach zum gewünschten Ergebnis zu kommen. Aber dranbleiben ist hier vermutlich die Devise. :)
Ich habe gerade noch mal nach tabu gesucht. Klingt echt so, als ob der Entwickler nicht vor hat die neue Version abwärtskompatibel zu gestalten.
Siehe hier.

Diese [url] und
 Tags sind ja etwas widerspenstig..

Verfasst: Do 21. Nov 2013, 15:56
von Johannes_B
[quote="wooosh"]Diese [url] und
 Tags sind ja etwas widerspenstig..[/quote]

Eigentlich nicht, nach ner Weile setzt du die ohne nachzudenken von Hand, genau wie bei LaTeX. 

Dranbleiben ist wirklich die Devise.