Ich benötige eine Tabelle mit folgenden Eigenschaften:

  1. Die Breite entspricht der vollen Textbreite.
  2. Alle Spalten sind gleich breit.
  3. Alle Zeilen sind gleich hoch, ca. 1 cm (da später handschriftliche Eintragungen in einige Zellen erfolgen sollen).
  4. In einigen Zellen steht mehrzeiliger, horizontal und vertikal zentrierter Text.

Die Anforderungen 1, 2 und 4 können mit Hilfe des Pakets „tabularx“ erfüllt werden. Für Punkt 3 habe ich bisher allerdings keine Lösung gefunden (Änderung von arraystretch hilft nicht, da Zeilen, in denen mehrzeiliger Text vorkommt, dann höher werden als andere).

Open in Online-Editor
\documentclass[DIV14,landscape,pagesize]{scrartcl}
\usepackage{ngerman}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{tabularx}

\begin{document}

\begin{tabularx}{\linewidth}{*{6}{|>{\centering}X}|}
\hline
Hier steht der Text der ersten Zelle. & In der zweiten Zelle steht auch Text. & In der dritten Zelle auch. & & & \\
\hline
& & & & & \\
\hline
& & & & & \\
\hline
\end{tabularx}
\end{document}

gefragt 23 Mär '15, 10:36

Cletus's gravatar image

Cletus
995226
Akzeptiert: 71%


Du könntest in den Zellen jeweils eine minipage mit der entsprechenden Höhe verwenden. Die Höhe muss dann aber ausreichend groß gewählt werden. Bei 1cm sind mit der Schriftgröße 11pt zum Beispiel nur zwei Zeilen in der Zelle möglich. Werden es mehr, dann ragen sie über den Rand der Zelle hinaus, wie Du in der fünften Zelle des unten stehenden Beispiels sehen kannst.

Open in Online-Editor
\documentclass[DIV=14,landscape,pagesize]{scrartcl}
\usepackage{ngerman}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{tabularx}
\newcolumntype{H}[1]{
  >{\begin{minipage}[c][#1][c]{\linewidth}\centering%
  \strut%
  }
  X
  <{%
  \strut%
  \end{minipage}}
}

\begin{document}

\begin{center}
\begin{tabularx}{\linewidth}{*{6}{|H{1cm}}|}
  \hline
  ggAAAAAgg ......a...... 
    & ......a...... ggAAAAAgg
    & In der dritten Zelle auch. 
    & Text
    & In der fünften Zelle steht Text, der über drei Zeilen geht.
    & In der sechsten Zelle steht auch Text.\tabularnewline
  \hline
  & & & & & \tabularnewline
  \hline
  & & & & & \tabularnewline
  \hline
\end{tabularx}
\end{center}
\end{document}

alt text


Will man \\ statt \tabularnewline für eine neue Tabellenzeile verwenden, muss man ein \arraybackslash in der Definition des neuen Spaltentypes ergänzen:

Open in Online-Editor
\newcolumntype{H}[1]{
  >{\begin{minipage}[c][#1][c]{\linewidth}\centering%
  \strut\arraybackslash% <- hier
  }
  X
  <{%
  \strut%
  \end{minipage}}
}

Da in einem Kommentar nach der Notwendigkeit der \strut Befehle gefragt wurde, sei zum einen auf Was macht der Befehl strut? verwiesen und zum anderen ist hier noch ein Beispiel, was den Unterschied mit und ohne diesen Befehlen sichtbar macht:

Open in Online-Editor
\documentclass[DIV=14,landscape,pagesize]{scrartcl}
\usepackage{ngerman}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{tabularx}
\newcolumntype{H}[1]{
  >{\begin{minipage}[c][#1][c]{\linewidth}\centering%
  \strut\arraybackslash%
  }
  X
  <{%
  \strut%
  \end{minipage}}
}

\begin{document}

\begin{center}
\begin{tabularx}{\linewidth}{*{6}{|H{1cm}}|}
  \hline
  ggAAAAAgg ......a...... 
    & ......a...... ggAAAAAgg
    & In der dritten Zelle auch. 
    & Text
    & In der fünften Zelle steht Text, der über drei Zeilen geht.& \\
  \hline
  & & & & & \\
  \hline
  & & & & & \\
  \hline
\end{tabularx}
\end{center}
\end{document}

liefert

alt text

Kommentiert man die beiden \strut aus, erhält man

alt text

Permanenter link

beantwortet 23 Mär '15, 11:03

esdd's gravatar image

esdd
14.2k53251

bearbeitet 04 Nov '15, 09:44

Danke, das löst das Problem. Dass dreizeiliger Text nicht passt, ist klar; den benötige ich auch nicht. Allerdings kommt mir die Lösung doch etwas sehr „getrickst“ vor. Gibt es kein Paket, das so etwas ohne Minipage kann?

(23 Mär '15, 11:26) Cletus
1

Ich kenne keins, aber vielleicht wirst Du unter dem topic table auf CTAN fündig. Die Verwendung von minipage empfinde ich eigentlich auch nicht als getrickst.

(24 Mär '15, 06:28) esdd

Ein Paket, das gleiche Zeilenhöhen ermöglicht, ist „easytable“. Damit sind allerdings nicht ohne Weiteres die o.g. Anforderungen 1 und 4 erfüllbar, sodass die Verwendung dieses Pakets hier nicht in Frage kommt. Die beiden strut-Befehle im Lösungsvorschlag scheinen übrigens nicht nötig zu sein; jedenfalls kann ich keinen Unterschied im Ergebnis erkennen. Oder sollte man die aus irgendwelchen Gründen dennoch setzen?

(28 Mär '15, 13:42) Cletus

@Cletus Ich habe ein Beispiel ergänzt, das die Wirkung der \strut Befehle zeigt.

(29 Mär '15, 06:17) esdd

Hm, ich habe noch ein kleines Problem mit dem ansonsten sehr feinen Beispiel. Wenn ich die sechste Spalte fülle, dann bekomme ich den Fehler:

! Misplaced \noalign. \hline ->\noalign {\ifnum 0=}fi hrule @height arrayrulewidth futurelet... l.27 end{tabularx} I expect to see noalign only after the cr of`

(04 Nov '15, 09:28) pberg
1

@pberg Ich habe Deinen Beitrag in einen Kommentar umgewandelt, da er sich auf diese Antwort bezieht und die eigentliche Frage nicht beantwortet.

Verwende \tabularnewline für eine neue Tabellenzeile statt \\ oder ergänze ein \arraybackslash in der Definition des neuen Spaltentyps. Ich habe meine Antwort entsprechend geändert.

(04 Nov '15, 09:49) esdd
Ergebnis 5 von 6 Alle anzeigen

Vielleicht einfach durch Ergänzung von [1cm] am Tabellenzeilenende?

Open in Online-Editor
\documentclass[DIV14,landscape,pagesize]{scrartcl}
\usepackage{ngerman}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{tabularx}

\begin{document}

\begin{tabularx}{\linewidth}{*{6}{|>{\centering}X}|}
\hline
Hier steht der Text der ersten Zelle. & In der zweiten Zelle steht auch Text. & In der dritten Zelle auch. & & & \\[1cm]
\hline
& & & & & \\[1cm]
\hline
& & & & & \\[1cm]
\hline
\end{tabularx}
\end{document}
Permanenter link

beantwortet 04 Nov '15, 15:10

feynman's gravatar image

feynman
9671431

bearbeitet 04 Nov '15, 15:14

Dieser Vorschlag verletzt die oben genannten Anforderungen 3 und 4 und ist daher nicht brauchbar.

(05 Nov '15, 06:18) Cletus

Dann habe ich die Anforderungen in der Frage nicht richtig verstanden. So wie ich das sehe, werden alle Zeilen so etwa 1cm hoch, auch wenn es vielleicht etwas umständlich ist, das an jedes Zeilenende schreiben zu müssen.

(05 Nov '15, 10:40) feynman

Diese Lösung ist zwar in der Tat naheliegend, aber dadurch wird nach dem Zeilenumbruch ein Zusatzabstand von 1 cm eingefügt, sodass in einer Zeile mit mehrzeiligem Text der Zeilenhöhe größer wird als in einer Zeile mit nur einzeiligem Text.

(05 Nov '15, 17:17) Cletus

Wenn ich mir die Ausgabe des von mir angepassten Codes anschaue, kann ich dies nicht erkennen. Für mich sehen die Zeilen auch bei zweiligem Inhalt noch gleich groß aus. Erst wenn der eine Centimeter nicht ausreicht für mehrere Zeilen, wird bei mir die Höhe angepasst, was ich auch für sinnvoll halte.

(06 Nov '15, 08:41) feynman
Deine Antwort auf die Frage (nicht auf andere Antworten)
Knebel-Vorschau

Folge dieser Frage

Per E-Mail:

Wenn Du Dich anmeldest, kannst Du Updates hier abonnieren

Per RSS:

Antworten

Antworten und Kommentare

Aktuelle Buch-Infos

LaTeX Cookbook

LaTeX Beginners Guide

Limitierter Rabatt ebook
50% Coupon code tDRet6Y

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üge einfach zwei Leerzeichen an die Stelle ein, an der die neue Zeile sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Zugeordnete Themen:

×185

Frage gestellt: 23 Mär '15, 10:36

Frage wurde angeschaut: 2,502 Mal

Zuletzt aktualisiert: 06 Nov '15, 08:41