Seite 1 von 1

Kein Freiraum für TikZ-Grafik

Verfasst: Do 6. Mai 2010, 10:12
von Polis Tyrol
Liebe Leute!

Ich bin mir sicher, dass dieses Problem, mit dem ich micht seit Stunden herumschlage in Wahrheit gar keines ist, schnell gelöst ist und wahrscheinlich schon drei andere Leute hier angesprochen haben.
Ich hab allerdings nirgendwo ein Thema gefunden, dass mein Problem gelöst hätte, deswegen frage ich nun selbst:

Ich habe ein großes Dokument, in dem ich auch einige TikZ-Bilder eingefügen möchte. Das funktioniert normal auch - nach genug rumkämpfen - auch tadellos. Bei dieser einen Grafik allerdings macht LaTeX keinen Freiraum und überschreibt alles, was davor steht. Die Befehle schauen genau gleich aus wie bei den anderen Grafiken. Was ist da los?!
\documentclass[]{scrreprt}

\usepackage{tikz}
\usepackage{subfig}

\begin{document}

Hier ein wenig Text.

\begin{figure}[htbp]
	\subfloat[Die Linien]		% Zeichnet 7 vertikale Linien
	{	\setlength{\unitlength}{7mm}
		\begin{tikzpicture}[domain=0:1.1]
			\linethickness{0.075mm}
			\multiput(0,1)(1,0){7}{\line(0,1){6}}
		\end{tikzpicture}
	}\quad
	\subfloat[Die Zahl]		% Schreibt die Zahl 9 hin
	{	\begin{tikzpicture}[domain=0:1.1]
			\linethickness{0.075mm}
			\draw[y=-1cm] (2, 2) node{$9$};
		\end{tikzpicture}
	}
	\caption{Some lines (a) and a number (b) in a figure.}
\end{figure}

Wieso erstellt \LaTeX\ nicht die richtigen Freir\"aume f\"ur diese figure?

\end{document}
Kann mir jemand helfen?

Verfasst: Do 6. Mai 2010, 10:38
von bloodworks
Wenn du bei tikz Syntax bleibst dann tut das auch!
Zumindest legt bei mir Folgende Lösung da nichts mehr irgendwo drüber...
(multiput und line sind LaTeX Anweisungen und keine tikz Anweisungen. Dass es da zu einem Clash kommt wundert mich nicht. )
\documentclass[]{scrreprt} 

\usepackage{tikz} 
\usepackage{subfig} 

\begin{document}
Hier ein wenig Text. 

\begin{figure}[htbp] 
   \subfloat[Die Linien]      % Zeichnet 7 vertikale Linien 
   {   \setlength{\unitlength}{7mm} 
      \begin{tikzpicture}
      
      \foreach \x in {1,2,3,4,5,6,7,8,9}  {
     
        \draw (\x,0)--(\x,3);}
            \end{tikzpicture} 
   }\quad 
   \subfloat[Die Zahl]      % Schreibt die Zahl 9 hin 
   {   \begin{tikzpicture}
         
         \draw[y=-1cm] (2, 2) node{$9$}; 
      \end{tikzpicture} 
   } 
   \caption{Some lines (a) and a number (b) in a figure.} 
\end{figure}
\end{document}
BTW: subfig wäre hier nicht nötig. Die Beschriftung kannst du auch ganz gut von Hand machen (mit Tikz).

Nachfrage

Verfasst: Do 6. Mai 2010, 11:02
von localghost
Zunächst einmal sei die Frage gestattet, warum Du in der Umgebung tikzpicture normale Bildbefehle (\line, \linethickness, \multiput) aus LaTeX benutzt. So kann die Platzreservierung nicht funktionieren. Die haben da also nichts zu suchen. Weiterhin fraglich ist die Angabe eines Wertebereichs, obwohl keine mathematische Funktion geplottet wird (schadet zwar nicht, ist dann aber unnötig). Ein Beispiel aus alten Tagen.
\documentclass[11pt,a4paper,ngerman]{article}
\usepackage[T1]{fontenc}
\usepackage{selinput}
\SelectInputMappings{%
  adieresis={ä},
  germandbls={ß},
  Euro={€}
}
\usepackage{babel}
\usepackage[includeheadfoot,margin=2cm]{geometry}
\usepackage[font=small,labelfont=bf,tableposition=top]{caption}
\usepackage[font=footnotesize]{subfig}
\usepackage{tikz}
\usetikzlibrary{decorations.pathreplacing}

\begin{document}
  \begin{figure}[!ht]
    \centering
    \subfloat[Direkter Übergang\label{subfig-1:uebergang}]{
      \begin{tikzpicture}[>=stealth,thick,font=\small]
%      \draw[help lines] (-3,-0) grid (3,4);
        \draw[->] (-3,0)--(3,0) node[above left] {$k$};
        \draw[->] (0,0)--(0,4) node[below right] {$E$};
        \draw (-2,0.5) parabola[bend pos=0.5] bend +(0,1) +(4,0);
        \draw (-2.5,3.5) parabola[bend pos=0.5] bend +(0,-1) +(5,0);
        \draw (-3,0) node[anchor=south west] {Valenzband};
        \draw (3,4) node[anchor=north east] {Leitungsband};
        \draw[thin] (0,1.5)--(1,1.5);
        \draw[thin] (0,2.5)--(1,2.5);
        \draw[<->,thin] (0.8,1.5)--(0.8,2.5) node[midway,right] {$E_\text{g}$};
      \end{tikzpicture}
    }
    \hspace{5mm}
    \subfloat[Indirekter Übergang\label{subfig-2:uebergang}]{%
      \begin{tikzpicture}[>=stealth,thick,font=\small]
%        \draw[help lines] (-2,0) grid (6,4);
        \draw[->] (-2,0)--(6,0) node[anchor=south east] {$k$};
        \draw[->] (0,0)--(0,4) node[anchor=north west] {$E$};
        \draw (-2,0.5) parabola[bend pos=0.5] bend +(0,1) +(4,0);
        \draw (0.5,3.5) parabola[bend pos=0.5] bend +(0,-1) +(5,0);
        \draw[thin,dotted] (0,1.5)--(3,1.5)--(3,2.5);
        \draw[thin,decorate,decoration={brace,amplitude=5pt}] (0,1.5)--(3,1.5) node[midway,above=2pt] {$\vec{q}$};
        \draw (-2,0) node[anchor=south west] {Valenzband};
        \draw (6,4) node[anchor=north east] {Leitungsband};
        \draw[thin] (3,1.5)--(4,1.5) (3,2.5)--(4,2.5);
        \draw[<->,thin] (3.8,1.5)--(3.8,2.5) node[midway,right] {\small $E_\text{g}$};
      \end{tikzpicture}
    }
    \caption{Übergänge zwischen Valenzband und Leitungsband}\label{fig:uebergang}
  \end{figure}
\end{document}

MfG
Thorsten


Notiz an mich selbst:
Manchmal sollte man mal aktualisieren, damit man nicht das Gleiche schreibt wie der Vorgänger.

Verfasst: Do 6. Mai 2010, 13:28
von Polis Tyrol
Vielen Dank für die Antworten! Schätze, damit wär das geklärt!