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, 15:36

Cletus's gravatar image

Cletus
1.6k45566
Akzeptiert-Rate: 75%


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, 16:03

esdd's gravatar image

esdd
17.7k254256
Akzeptiert-Rate: 62%

bearbeitet 04 Nov '15, 15: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, 16: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, 11: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, 18:42) Cletus

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

(29 Mär '15, 12: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, 15: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, 15:49) esdd
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:

×254

gestellte Frage: 23 Mär '15, 15:36

Frage wurde gesehen: 12,919 Mal

zuletzt geändert: 06 Nov '15, 14:41