PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Ein Problem mit Float-Umgebung



HaukeG
07-11-2007, 14:22
Hallo Leute,

ich habe ein großes Problem mit Float - Umgebungen. Ich kenn mich mit Latex nicht wirklich gut aus, daher habe ich das bei jemand anderen den Großteil abgeschaut und benutzt.

Ich habe das mal in ein Minimalbeispiel gepackt, sieht aber Dank der neuen Befehle die definiert worden sind, etwas sehr chaotisch aus :-(

\documentclass[11pt, a4paper,headsepline,footsepline]{scrreprt}
\usepackage[T1]{fontenc}
\usepackage[english, ngerman]{babel} % Englische und Deutsche Rechtschreibung
\usepackage{lmodern}
\usepackage[Lenny]{fncychap} % Das Kapitellayout
\usepackage[automark]{scrpage2} % Kopf- und Fusszeile
\usepackage{tabularx} % Die grafischen Tabellen
\usepackage[dvips]{graphicx} % Damit Grafiken und JPGs angezeigt werden
\usepackage{setspace} % Packet f¸r 1,5 oder 2 fachen
\usepackage[latin1]{inputenc}
\usepackage{mathpazo}
\usepackage{pstricks,pst-node}
\usepackage{listings}
\usepackage{color}
\usepackage{colortbl} % Farbige Tabellen koennen erstellt werden
\usepackage{floatrow} % Fliesobjekte
\usepackage{hyperref}
\usepackage{eurosym}
\usepackage{nicefrac}
\usepackage{picins}
\usepackage{array} % Fuer die dickeren Linien und fuer Arrays zum anzeigen
\usepackage{amsmath}
\usepackage{bibgerm}

\newfloat{def_table}{H}{lot}[subsection]
% Die dickeren Linien fuer vertikal ( I wie Iris ) und \whline fuer horizontal
\newcolumntype{I}{!{\vrule width 3pt}}
\newlength\savedwidth
\newcommand\whline{\noalign{\global\savedwidth\arr ayrulewidth\global\arrayrulewidth 2pt}\hline\noalign{\global\arrayrulewidth\savedwid th}}

\newcommand\mysize{3.5cm}
\newcommand\mysizeII{6.75cm}
\newcommand\mysizeIII{10.7cm}
\newcommand\mysizeIV{14.65cm}
\newcommand\mysizesmall{2.8cm}

\newcommand\initTab[3]{\label{#1}\begin{tabular}{|p{\mysize}|p{\mysize}| p{\mysize}|p{\mysize}|}\hline\multicolumn{3}{|>{\cellcolor{dunkelgrau}}p{\mysizeIII}}{\textbf{#2} } & \multicolumn{1}{>{\cellcolor{dunkelgrau}}p{\mysize}|}{\textbf{Def. Tabelle : \ref{#2}}} \\ [0.2cm] \multicolumn{1}{|>{\cellcolor{dunkelgrau}}p{\mysize}}{\textbf{Bemerk ung}} & \multicolumn{3}{>{\cellcolor{dunkelgrau}}p{\mysizeIII}|}{#3} \\[0.2cm] \hline \multicolumn{1}{|>{\cellcolor{dunkelgrau}}p{\mysize}|}{\textbf{Typ}} & \multicolumn{2}{|>{\cellcolor{dunkelgrau}}p{\mysizeII}|}{\textbf{Nam e}} & \multicolumn{1}{|>{\cellcolor{dunkelgrau}}p{\mysize}|}{\textbf{Betei l. Objekte}} \\ \whline}

\newcommand\evenRowIII[3]{\multicolumn{1}{|>{\cellcolor{hellgrau}}p{\mysize}}{#1} & \multicolumn{2}{|>{\cellcolor{hellgrau}}p{\mysizeII}}{#2} & \multicolumn{1}{|>{\cellcolor{hellgrau}}p{\mysize}|}{#3} \\ }
\newcommand\oddRowIII[3]{\multicolumn{1}{|p{\mysize}}{#1} & \multicolumn{2}{|p{\mysizeII}}{#2} & \multicolumn{1}{|p{\mysize}|}{#3} \\}

\newcommand\anforderung{\whline \multicolumn{4}{|>{\cellcolor{dunkelgrau}}p{\mysizeIV}|}{\textbf{Anf orderungen}}\\ [0.2cm] \hline \multicolumn{1}{|>{\cellcolor{dunkelgrau}}p{\mysize}|}{\textbf{Attri but}} & \multicolumn{1}{|>{\cellcolor{dunkelgrau}}p{\mysize}|}{\textbf{Daten typ}} & \multicolumn{1}{|>{\cellcolor{dunkelgrau}}p{\mysizesmall}|}{\textbf{ Einheit}} & \multicolumn{1}{|>{\cellcolor{dunkelgrau}}p{\mysize}|}{\textbf{Anmer kung}} \\ }

\newcommand\evenRowIV[4]{\multicolumn{1}{|>{\cellcolor{hellgrau}}p{\mysize}|}{#1} & \multicolumn{1}{|>{\cellcolor{hellgrau}}p{\mysize}|}{#2} & \multicolumn{1}{|>{\cellcolor{hellgrau}}p{\mysizesmall}|}{#3} & \multicolumn{1}{|>{\cellcolor{hellgrau}}p{\mysize}|}{#4} \\}
\newcommand\oddRowIV[4]{\multicolumn{1}{|p{\mysize}|}{#1} & \multicolumn{1}{|p{\mysize}|}{#2} & \multicolumn{1}{|p{\mysizesmall}|}{#3} & \multicolumn{1}{|p{\mysize}|}{#4} \\}

\newcommand\constraints{\whline\multicolumn{4}{|>{\cellcolor{dunkelgrau}}p{\mysizeIV}|}{\textbf{Int egritaetsbedingungen}}\\ \hline \multicolumn{1}{|>{\cellcolor{dunkelgrau}}p{\mysize}|}{\textbf{Name} } & \multicolumn{3}{|>{\cellcolor{dunkelgrau}}p{\mysizeIII}|}{\textbf{Be schreibung}}\\ }

\newcommand\evenRowII[2]{\multicolumn{1}{|>{\cellcolor{hellgrau}}p{\mysize}|}{#1} & \multicolumn{3}{|>{\cellcolor{hellgrau}}p{\mysizeIII}|}{#2} \\}
\newcommand\oddRowII[2]{\multicolumn{1}{|p{\mysize}|}{#1} & \multicolumn{3}{|p{\mysizeIII}|}{#2} \\}



\definecolor{dunkelgrau}{rgb}{0.8,0.8,0.8}
\definecolor{hellgrau}{rgb}{0.95,0.95,0.95}

% Einstellen der Seitenr‰nder
\setlength{\topmargin}{-1cm}
\setlength{\headsep}{1cm}
\setlength{\textheight}{23cm}
\setlength{\footskip}{2cm}


\onehalfspacing


\definecolor{listinggray}{gray}{0.9}



\begin{document}

\begin{def_table}[h]
\scriptsize{
\initTab{defTab:BundReg}{Bundesland / Regierungsbezirk}{Die Relationen Bundesland und Regierungsbezirk sind fast identisch. Daher sind diese hier zusammen gefasst.}
\evenRowIII{Attribut}{\textbf{Kennzahl (Bundesland)}}{---}
\oddRowIII{}{Name (Bundesland)}{---}
\evenRowIII{}{\textbf{Kennzahl (Regierungsbezirk)}}{---}
\oddRowIII{}{Name (Regierungsbezirk)}{---}
\evenRowIII{Obj. Attribut}{Bundesland(Regierungsbezirk)}{Bundesland }
\anforderung
\evenRowIV{Kennzahl (BL)}{number(2,0)}{---}{$1 \le kennzahl \le 16$}
\oddRowIV{Kennzahl (RB)}{number(3,0)}{---}{$kennzahl \ge 100$}
\evenRowIV{Name \textit{(bei beiden)}}{varchar2(150)}{---}{}
\constraints
\evenRowII{Bundesland\_CK1}{Kennzahl between 1 AND 16}
\oddRowII{Bundesland\_CK2}{Length(Name) $\ge$ 5}
\evenRowII{Regierungsbezirk\_CK1}{Kennzahl $\ge$ 100}
\oddRowII{Regierungsbezirk\_CK2}{Length(Name) $\ge$ 3}
\hline
\end{tabular}
}
\end{def_table}
\begin{def_table}[h]
\scriptsize{
\initTab{defTab:Kreis}{Kreis}{Diese Relation beschreibt den Stadt- bzw Landkreis}
\evenRowIII{Attribut}{\textbf{Kennzahl}}{---}
\oddRowIII{}{Name}{---}
\evenRowIII{}{Typ}{---}
\oddRowIII{}{Flaeche (optional)}{---}
\evenRowIII{}{LW\_Flaeche (optional)}{---}
\oddRowIII{}{Gruenland (optional)}{---}
\evenRowIII{}{Ackerland (optional)}{---}
\oddRowIII{}{Schmutzwasser (optional)}{---}
\evenRowIII{}{Regenwasser (optional)}{---}
\anforderung
\evenRowIV{Kennzahl}{number(5,0)}{---}{$10000\le Kz. \le16999$}
\oddRowIV{Name}{varchar2(150)}{---}{}
\evenRowIV{Typ}{varchar2(2)}{---}{}
\oddRowIV{Flaeche}{number(7,2)}{$km^{2}$}{}
\evenRowIV{LW\_Flaeche}{number(7,0)}{$km^{2}$}{}
\oddRowIV{Gruenland}{number(7,0)}{$km^{2}$}{}
\evenRowIV{Ackerland}{number(7,0)}{$km^{2}$}{}
\oddRowIV{Schmutzwasser}{number(6,0)}{$km$}{}
\evenRowIV{Regenwasser}{number(6,0)}{$km$}{}
\constraints
\evenRowII{Kreis\_CK1}{Kennzahl BETWEEN 10000 AND 16999}
\oddRowII{Kreis\_CK2}{Typ = 'SK' OR Typ = 'LK'}
\evenRowII{Kreis\_CK3}{Flaeche $\ge$ LW\_Flaeche}
\oddRowII{Kreis\_CK4}{Gruenland + Ackerland $\le$ LW\_Flaeche}
\hline
\end{tabular}
}
\end{def_table}
\end{document}

Wie kann ich beide Tabellen auf eine Seite bekommen? Wenn ich die tabelle kürze klappt es. Aber vom Platz her sollte es doch reichen. Könnte man theoretisch den Zeilenumbruch deaktivieren und dann manuell kürzen bzw per \newpage ein Seitenumbruch machen?

Sorry nochmal wegen dem Chaos.

Mfg Hauke


PS.: Irgendwie funktioniert diese CODE Umgebung nicht richtig ?!?

HaukeG
07-11-2007, 15:59
Okay, Problem gelöst

\renewcommand{\floatpagefraction}{.2}

edico
08-11-2007, 13:43
Wirklich?

Ich weiss nicht, was Du letztendlich 'gerichtet' haben willst.
Aber aus meinem Verstaendnis solltest Du nochmal ueberlegen, Deine Tabelle zu ueberarbeiten.

[1] Die Spaltenbreiten sind nicht schluessig. Sie addieren sich nicht immer zwingend zu 100 Prozent der Textbreite; die 'tabcolsep' werden ueberhaupt nicht beruecksichtigt.
[2] Wenn Du schon farbige Zeilen waehlst, sind vertikale Linien vollkommen obsolet.
[3] Die 'dicken' horizontalen Linien 'verschoenern' die Tabelle nicht im Geringsten, schon gar nicht in dem Sinne, dass sie die Lesbarkeit/Uebersichtlichkeit erhoehen. Das Augenmerk wird auf diese fetten Striche gelenkt statt auf Inhalte usw. An sich gilt auch das unter [2] Gesagte hier.
[4] Du definierst label ohne caption - geht das ueberhaupt? Keine Meldungen? Sehr merkwuerdig. Aber vielleicht kann Axel, wenn er mitliest, noch Anmerkungen machen.
[4] Wenn Du kein float haben willst, warum packst Du alles (aufwendig) in eine neue float-Umgebung? Koennen nicht beide 'Teil'-Tabellen in eine einzige Tabelle integriert werden? Zumindest hast Du einen richtigen Hebel mit \floatpagefraction bemueht; \textfraction haette ich vermutet ... aber Option [h] alleine fuehrt doch auch zu Fehlermeldungen / Warnungen - also zumindest [ht] waehlen.
[5] Ich koennte mir vorstellen, dass die konsequentere (insgesamt auch einfachere) Umsetzung Deiner Tabelle in der 'tabularx'-Umgebung (in Verbindung mit booktabs) liegt...

edico

sommerfee
08-11-2007, 14:35
[4] Du definierst label ohne caption - geht das ueberhaupt? Keine Meldungen? Sehr merkwuerdig. Aber vielleicht kann Axel, wenn er mitliest, noch Anmerkungen machen.

Ich? Ja, ähh... Also: \label geht eigentlich immer. Selbst
\documentclass{article}
\begin{document}
\label{test}\ref{test}
\end{document} wird ohne Fehlermeldung oder Warnung übersetzt.
Die Frage ist halt immer nur, ob ein passendes \ref das ergibt, was man haben möchte. ;) (In diesem Falle wohl eher nicht.)

Und wer überprüft schon all seine Referenzen beim Korrekturlesen? Als ich damals das Feature ins caption-Paket 3.1 eingebaut hatte, daß ein \label ohne vorheriges \caption in einer gleitenden Umgebung eine Warnung erzeugt, war ich selber ganz erstaunt, daß dies ein falsches \label in einem meiner eigenen Dokumente monierte. Nobody is perfect :cool:

Gruß,
Axel

edico
08-11-2007, 15:52
Versteh ich Dich richtig:
table- Umgebung mit label ohne caption?

edico

sommerfee
08-11-2007, 17:12
\label packt "lediglich" den Inhalt von \@currentlabel in die AUX-Datei, mit \ref zaubert man diesen Inhalt wieder hervor:



\documentclass{article}
\begin{document}
Ich mag \ref{test}!
\makeatletter\gdef\@currentlabel{Kaesekuchen}\make atother
\label{test}
\end{document}


Dies hat zur Folge, daß \label+\ref immer funktionieren, egal an welcher Stelle des Dokumentes, solange nur \@currentlabel definiert ist, und das ist es eigentlich immer.

Also "funktioniert" auch ein \label ohne \caption in einer figure-Umgebung, nur bekommt man dann beim dazugehörigen \ref natürlich nicht die figure-Nummer (wie denn auch, die hat ja ohne \caption gar keine), sondern das, was eben gerade in \@currentlabel steht, was in der Regel der letzte mit \refstepcounter erhöhte Zähler im Dokument ist.

Oder was genau wolltest du wissen?

Gruß,
Axel

edico
08-11-2007, 20:35
Danke für die Infos.

...beim dazugehörigen \ref natürlich nicht die figure-Nummer (wie denn auch, die hat ja ohne \caption gar keine), ...
und darum ging's m.E. ursächlich; denn - weil im posting des OP keine caption gesetzt ist, kann label (und ref) doch keinen Sinn machen. Deswegen meine Bemerkung(en) und nachgeschobene Frage ...

edico