Zeilenhöhe berechnen in Tabellen.

Tabellen und Grafiken erstellen und anordnen


derfc
Forum-Newbie
Forum-Newbie
Beiträge: 1
Registriert: Do 23. Aug 2012, 10:40

Zeilenhöhe berechnen in Tabellen.

Beitrag von derfc »

Hallo GoLaTeX Forum,

ich habe das folgende Problem:

ich möchte Tabellen erstellen, die genau ein Quadrat sein sollten und möchte deshalb die höhe als Funktion der Breite berechnen. Diese Tabellen enthalten immer genauso viele Zeile wie Spalten und zwar 3, 4, ..., bis 11. Allerdings, unabhängig von der Spalten- (und Zeilenanzahl) sollte die Breite, und deshalb die Höhe, immer gleich bleiben. Die Spalten werden einfach schmaler.

Ich habe versucht, das zu tun, in dem ich extra Abstand zwischen dem Text und den Rändern der Zellen eingefügt habe und dieser Abstand kalkuliert das "\newcommand" Kommando. Damit war meine Absicht, dass der extra Raum als Funktion der Anzahl der Spalten (die als Parameter zum Kommando übertragen wird) berechnet wird.

Nun, wie vom Ergebnis zu sehen ist, habe ich das Problem, dass die Breite tatsächlich immer gleich bleibt (zumindest in den 2 Tabellen, die ich probiert habe. Es kann sein, dass die Breite für höhere Anzahl von Spalten nicht ausreicht, aber diese kann ich bearbeiten) aber die höhe ist nicht genau so groß wie die Breite und ist auch nicht gleich in den 2 Tabellen.

Ich vermute, das liegt daran, dass ich in dem "\newcommand" noch extra abstand subtraieren muss, und zwar den NATÜRLICHEN Abstand zwischen Text und Zellenrand. Diese kann man gut in der unveränderten Tabelle am Ende des Beispiels sehen. Etwas Abstand ist doch da, und wahrscheinlich käme auch noch die höhe des "Rules" dazu zu subtraieren. Ich weiß aber leider nicht, wie dieser Abstand heißt und habe es auch nicht in den Dokus (von Tabu u.ä.) gefunden. Ich habe mit "\abovetabulinesep" und "\belowtabulinesep" probiert, aber es funktioniert nicht.
\documentclass[a4paper,12pt]{article}

\usepackage[T1]{fontenc}
\usepackage[utf8x]{inputenc}
\usepackage{lmodern}
\usepackage[ngerman]{babel}
%\usepackage{wasysym}
%\usepackage{textcomp}
%\usepackage{cjhebrew}
%\usepackage{xcolor}
\usepackage[left=1cm,top=1cm,right=1cm,nohead]{geometry}
\usepackage{calc}
\usepackage{array}
\usepackage{tabularx}
\usepackage{tabu}
%\usepackage{graphicx}
%\usepackage{flafter}
%\usepackage{subfig}
%\usepackage{rotating}
\usepackage{interfaces}
%\usepackage{eurosym}

\usetikz{all}

\newlength{\larg}

\setlength{\larg}{0.5\textwidth}
\addtolength{\larg}{-1ex}

\newcommand{\calcolaltezza}[1]{\setlength{\extrarowsep}{(\larg-\heightof{2}*#1-\abovetabulinesep*#1-\belowtabulinesep*#1)/(2*#1)}}

%\newcommand{\calcolaltezza}[1]{\setlength{\extrarowsep}{(\larg-\heightof{2}*#1)/(2*#1)}}

\begin{document}

\papergraduate

%\tabulinesep=0pt

\pagestyle{empty}

%\begin{table}
\begin{minipage}[t]{\larg}
\calcolaltezza{3}
\begin{tabu} to \larg {|X[cm]|X[cm]|X[cm]|}
 \hline
 2 & 3 & 4 \tabularnewline
 \hline
 5 & 6 & 7 \tabularnewline
 \hline
 8 & 9 & 10 \tabularnewline
  \hline
\end{tabu}
\end{minipage}
\hspace{2ex}
\begin{minipage}[t]{\larg}
\calcolaltezza{4}
\begin{tabu} to \larg {|X[cm]|X[cm]|X[cm]|X[cm]|}
 \hline
 2 & 3 & 4 & 10 \tabularnewline
 \hline
 5 & 6 & 7 & 11 \tabularnewline
 \hline
 8 & 9 & 10 & 12 \tabularnewline
 \hline
 8 & 9 & 10 & 13 \tabularnewline
 \hline
\end{tabu}
\end{minipage}
%\end{table}

\begin{tabu} to \larg {|X[cm]|X[cm]|X[cm]|X[cm]|}
 \hline
 2 & 3 & 4 & 10 \tabularnewline
 \hline
 5 & 6 & 7 & 11 \tabularnewline
 \hline
 8 & 9 & 10 & 12 \tabularnewline
 \hline
 8 & 9 & 10 & 13 \tabularnewline
 \hline
\end{tabu}

\pagebreak

\end{document}
(Entschuldigung, dieser Code sieht zwar nicht so ganz sauber aus, aber ich glaube es ist verständlich).

Hat jemand eine Idee, wie das gehen könnte?

Vielen Dank für Eure Mühe.