Zeilenhöhe berechnen in Tabellen.

Antwort erstellen


Diese Frage dient dazu, das automatisierte Versenden von Formularen durch Spam-Bots zu verhindern.
Smilies
:D :) :( :o :shock: :? 8) :lol: :-x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:

BBCode ist eingeschaltet
[img] ist eingeschaltet
[flash] ist ausgeschaltet
[url] ist eingeschaltet
Smilies sind eingeschaltet

Die letzten Beiträge des Themas

Ich habe die Datenschutzerklärung gelesen und bin damit einverstanden.

   

Wenn du eine Datei oder mehrere Dateien anhängen möchtest, gib die Details unten ein.

Ansicht erweitern Die letzten Beiträge des Themas: Zeilenhöhe berechnen in Tabellen.

Zeilenhöhe berechnen in Tabellen.

von derfc » Do 23. Aug 2012, 11:15

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.

Nach oben