PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PGF und Tabelle in subfloat



Phylax
18-03-2009, 15:50
Servus allerseits,

seit ich (dank der Hilfe von Stefan_K und mechanicus) nun mit meinem LaTeX auf Linux umsteigen konnte, habe ich auch eine neue Methode finden müssen, flowcharts in meine Dokumente einzubinden (unter WinXP nutzte ich das Programm Wizflow und druckte in ein PDF).

Meine Wahl fiel auf das Program Dia, das eine PGF-Exportfunktion bietet. Soweit so gut, allerding würde ich nun gerne eines meiner Flowcharts(siehe Affen.tex) neben einer Tabelle in eine subfloat-Umgebung intregrieren:



\begin{figure}[h]
\centering
\subfloat[tabellarisch]{\label{struktaba}
\begin{tabular}{rccc}
Name& Geschlecht & Alter & Kind von \\
Ada & w & 8 & Udo, Eda \\
Ida & w & 16 & ---\\
Eda & w & 16 & ---\\
Odo & m & 6 & Udo, Ida \\
Udo & m & 20 & ---\\
\end{tabular}}
\subfloat[schematisch]{\input{Grafiken/Affen.tex}}
% \subfloat[schematisch]{\includegraphics{Grafiken/Affen.png}}
\caption{eine Affenmeute}
\end{figure}



Dabei kommt das Ergebnis aus "mitTabelle.pdf" heraus: Das PGF_Bild ist nach oben verschoben.

Wenn ich die durch das gleiche PGF ersetze, dann klappt es: "ohneTabelle.pdf"

hat jemand eine Idee, woran das liegen könnte? Vielleicht ist es ja eine Einschränkung des subfig-pakets. Ich hab nämlich herausgefunden, dass der Float völlig verschwindet, wenn ich es anstelle des PGF mit einem PNG versuche. Vielleicht lässte subfig einfache keine Kombination von Grafiken mit Tabellen zu?

naja, für den Augenblick kann ich mir anders behelfen, abe es wäre trotzdem super, wenn euch was dazu einfällt.

beste Grüße und Dank im Voraus

Phylax

P.S.: kleine Zusatzfrage: Wenn ich ein PGF aus Dia exportiere, sind die Beschriftungen der Flowchartelemente nicht mehr richtig zentriert. Habe zwa im PGF-code die entsprechenden Variablen gefunden, um das zu korrigieren (suehe den Buchstaben "a"). ABer das kann ich nicht jedesmal manuell machen. Zur Not ist eshalt nicht so schön, aber LateX macht einen eben schnell zu einem ziemlichen Ästheten in diesen Dingen.

Phylax
18-03-2009, 15:54
...und hier die Anhänge

(Frage an den Admin: Wäre es nicht sinnvoll .tex-Dateien zum Upload zuzulassen... immerhin ist das LaTeX-Forum doch sehr dominant)

mechanicus
18-03-2009, 16:48
Hallo,





\begin{figure}[h]
\centering
\subfloat[tabellarisch]{\label{struktaba}
\begin{tabular}[t]{rccc}
Name& Geschlecht & Alter & Kind von \\
Ada & w & 8 & Udo, Eda \\
Ida & w & 16 & ---\\
Eda & w & 16 & ---\\
Odo & m & 6 & Udo, Ida \\
Udo & m & 20 & ---\\
\end{tabular}}
\subfloat[schematisch]{\input{Grafiken/Affen.tex}}
% \subfloat[schematisch]{\includegraphics{Grafiken/Affen.png}}
\caption{eine Affenmeute}
\end{figure}

ungetestet. Aber bitte nächstes Mal ein lauffähiges Minimalbeispiel. Andere Frage, bevor du dich für solche Grafiken mit Dia und mit solch einem Code quälst, willst du da nicht gleich tikz oder pstricks lernen.

Gruß
Marco

Phylax
18-03-2009, 18:23
das optionale Argument [t] hat die Situation noch veschärft. verbessert sie aber soweit, dass ich einstweilen damit leben kann. Danke also für den Hinweis.

Diesmal auch ein [B]Minimalbeispiel anbei, das aber wegen des - wie du richtig bemerkst - sehr chaotischen Dia-Codes recht unübersichtlich ist.

Was deinen Vorschlag anbelangt, lieber selber zu coden: Ich würde das wirklich gerne lernen, habe aber als Philosoph nicht den nötigen "Code-Blick", um das in angemessener Zeit hinzubekommen (ich brauch für sowas meistens recht lang und bin zeitlich etwas angespannt). Werde es mir aber trotzdem ansehen, zumal es gar nicht so schwer aussieht, und guter Code recht kompakt zu sein scheint (vgl. etwa http://www.texample.net/)

Auf jeden Fall erstmal danke

Phylax

mechanicus
18-03-2009, 19:13
Hallo,

eine Möglichkeit (nicht die beste) wäre:

\documentclass{article}

\usepackage{subfig}

\usepackage{enumitem}

\usepackage{tikz}
\newsavebox{\MyBoxA}
\sbox{\MyBoxA}{%
\ifx\du\undefined\newlength{\du}\fi\setlength{\du} {15\unitlength}
\begin{tikzpicture}[scale=0.4]
\pgftransformxscale{1.687086}\pgftransformyscale{-1.687086}\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}\definecolor{diali necolor}{rgb}{1.000000, 1.000000, 1.000000}\pgfsetfillcolor{dialinecolor}
\pgfsetlinewidth{0.100000\du}\pgfsetdash{{\pgfline width}{0.200000\du}}{0cm}\pgfsetdash{{\pgflinewidt h}{0.200000\du}}{0cm}
\pgfsetbuttcap
{\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}\pgfsetfillcolor{dialinecolor}\definecolo r{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}\pgfsetstrokecolor{dialinecolor}\draw (16.000000\du,-7.000000\du)--(16.000000\du,5.000000\du);}
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}\pgfsetstrokecolor{dialinecolor}\node[anchor=west] at (17.000000\du,5.000000\du){0};
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}\pgfsetstrokecolor{dialinecolor}\node[anchor=west] at (17.000000\du,0.000000\du){10};
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}\pgfsetstrokecolor{dialinecolor}\node[anchor=west] at (17.000000\du,-5.000000\du){20};
\definecolor{dialinecolor}{rgb}{1.000000, 1.000000, 1.000000}\pgfsetfillcolor{dialinecolor}\pgfpathell ipse{\pgfpoint{13.000000\du}{0.000000\du}}{\pgfpoi nt{1.000000\du}{0\du}}{\pgfpoint{0\du}{1.000000\du }}\pgfusepath{fill}\pgfsetlinewidth{0.100000\du}\p gfsetdash{}{0pt}\pgfsetdash{}{0pt}\pgfsetmiterjoin \definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}\pgfsetstrokecolor{dialinecolor}\pgfpathe llipse{\pgfpoint{13.000000\du}{0.000000\du}}{\pgfp oint{1.000000\du}{0\du}}{\pgfpoint{0\du}{1.000000\ du}}\pgfusepath{stroke}
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}\pgfsetstrokecolor{dialinecolor}\node[anchor=west] at (12.3\du,0.142500\du){a};
\definecolor{dialinecolor}{rgb}{1.000000, 1.000000, 1.000000}\pgfsetfillcolor{dialinecolor}\fill(9.000 000\du,-7.000000\du)--(9.000000\du,-5.000000\du)--(11.000000\du,-5.000000\du)--(11.000000\du,-7.000000\du)--cycle;
\pgfsetlinewidth{0.100000\du}\pgfsetdash{}{0pt}\pg fsetdash{}{0pt}\pgfsetmiterjoin\definecolor{dialin ecolor}{rgb}{0.000000, 0.000000, 0.000000}\pgfsetstrokecolor{dialinecolor}\draw(9.0 00000\du,-7.000000\du)--(9.000000\du,-5.000000\du)--(11.000000\du,-5.000000\du)--(11.000000\du,-7.000000\du)--cycle;
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}\pgfsetstrokecolor{dialinecolor}\node[anchor=west] at (9.815000\du,-5.857500\du){u};
\definecolor{dialinecolor}{rgb}{1.000000, 1.000000, 1.000000}\pgfsetfillcolor{dialinecolor}\fill(6.000 000\du,0.000000\du)--(6.000000\du,1.900000\du)--(8.000000\du,1.900000\du)--(8.000000\du,0.000000\du)--cycle;
\pgfsetlinewidth{0.100000\du}\pgfsetdash{}{0pt}\pg fsetdash{}{0pt}\pgfsetmiterjoin\definecolor{dialin ecolor}{rgb}{0.000000, 0.000000, 0.000000}\pgfsetstrokecolor{dialinecolor}\draw(6.0 00000\du,0.000000\du)--(6.000000\du,1.900000\du)--(8.000000\du,1.900000\du)--(8.000000\du,0.000000\du)--cycle;
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}\pgfsetstrokecolor{dialinecolor}\node[anchor=west] at (6.821250\du,1.092500\du){o};
\definecolor{dialinecolor}{rgb}{1.000000, 1.000000, 1.000000}\pgfsetfillcolor{dialinecolor}\pgfpathell ipse{\pgfpoint{13.000000\du}{-4.000000\du}}{\pgfpoint{1.000000\du}{0\du}}{\pgfpo int{0\du}{1.000000\du}}\pgfusepath{fill}\pgfsetlin ewidth{0.100000\du}\pgfsetdash{}{0pt}\pgfsetdash{} {0pt}\pgfsetmiterjoin\definecolor{dialinecolor}{rg b}{0.000000, 0.000000, 0.000000}\pgfsetstrokecolor{dialinecolor}\pgfpathe llipse{\pgfpoint{13.000000\du}{-4.000000\du}}{\pgfpoint{1.000000\du}{0\du}}{\pgfpo int{0\du}{1.000000\du}}\pgfusepath{stroke}\definec olor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}\pgfsetstrokecolor{dialinecolor}\node[anchor=west] at (12.820000\du,-3.857500\du){e};
\definecolor{dialinecolor}{rgb}{1.000000, 1.000000, 1.000000}\pgfsetfillcolor{dialinecolor}\pgfpathell ipse{\pgfpoint{7.000000\du}{-4.000000\du}}{\pgfpoint{1.000000\du}{0\du}}{\pgfpo int{0\du}{1.000000\du}}\pgfusepath{fill}\pgfsetlin ewidth{0.100000\du}\pgfsetdash{}{0pt}\pgfsetdash{} {0pt}\pgfsetmiterjoin\definecolor{dialinecolor}{rg b}{0.000000, 0.000000, 0.000000}\pgfsetstrokecolor{dialinecolor}\pgfpathe llipse{\pgfpoint{7.000000\du}{-4.000000\du}}{\pgfpoint{1.000000\du}{0\du}}{\pgfpo int{0\du}{1.000000\du}}\pgfusepath{stroke}\definec olor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}\pgfsetstrokecolor{dialinecolor}\node[anchor=west] at (6.918750\du,-3.857500\du){i};
\pgfsetlinewidth{0.100000\du}\pgfsetdash{}{0pt}\pg fsetdash{}{0pt}\pgfsetbuttcap{\definecolor{dialine color}{rgb}{0.000000, 0.000000, 0.000000}\pgfsetfillcolor{dialinecolor}\pgfsetarro wsend{to}\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}\pgfsetstrokecolor{dialinecolor}\draw (7.000000\du,-3.000000\du)--(7.000000\du,0.000000\du);}
\pgfsetlinewidth{0.100000\du}\pgfsetdash{}{0pt}\pg fsetdash{}{0pt}\pgfsetbuttcap{\definecolor{dialine color}{rgb}{0.000000, 0.000000, 0.000000}\pgfsetfillcolor{dialinecolor}\pgfsetarro wsend{to}\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}\pgfsetstrokecolor{dialinecolor}\draw (9.000000\du,-5.000000\du)--(8.000000\du,0.000000\du);}
\pgfsetlinewidth{0.100000\du}\pgfsetdash{}{0pt}\pg fsetdash{}{0pt}\pgfsetbuttcap{\definecolor{dialine color}{rgb}{0.000000, 0.000000, 0.000000}\pgfsetfillcolor{dialinecolor}\pgfsetarro wsend{to}\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}\pgfsetstrokecolor{dialinecolor}\draw (11.000000\du,-5.000000\du)--(12.292900\du,-0.707107\du);}
\pgfsetlinewidth{0.100000\du}\pgfsetdash{}{0pt}\pg fsetdash{}{0pt}\pgfsetbuttcap{\definecolor{dialine color}{rgb}{0.000000, 0.000000, 0.000000}\pgfsetfillcolor{dialinecolor}\pgfsetarro wsend{to}\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}\pgfsetstrokecolor{dialinecolor}\draw (13.000000\du,-3.000000\du)--(13.000000\du,-1.000000\du);}
\end{tikzpicture}
}
\newsavebox{\MyBoxB}
\sbox{\MyBoxB}{%
\begin{tabular}{rccc}
Name& Geschlecht & Alter & Kind von \\
Ada & w & 8 & Udo, Eda \\
Ida & w & 16 & ---\\
Eda & w & 16 & ---\\
Odo & m & 6 & Udo, Ida \\
Udo & m & 20 & ---\\
\end{tabular}%
}
\def\clap#1{\hbox to 0pt{\hss #1\hss}}
\begin{document}

\begin{figure}[h]
\centering
\subfloat[tabellarisch\label{struktaba}]{\parbox[b][\ht\MyBoxA][c]{\wd\MyBoxB}{\usebox{\MyBoxB}}}
\hspace*{2em}
\subfloat[schematisch]{\usebox{\MyBoxA}}
\caption{eine Affenmeute}
\end{figure}
\end{document}

Ich denke, dass das Paket subcaption da bessere Möglichkeiten bereit hält. Aber ohne Gewähr.

Aber noch mal zu den Programmen tikz bzw. pstricks: Wenn du mit Latex arbeiten kannst, kannst du dich auch in die Syntax von pstricks einarbeiten.

Gruß
Marco

Phylax
18-03-2009, 20:21
Habe mir was sagen lassen und es jetzt manuell zu tikzen versucht ... bin eigentlich ganz zufrieden, für den Anfang.



\documentclass{article}

\usepackage{subfig}

\usepackage{enumitem}

\usepackage{tikz}
\usetikzlibrary{arrows,matrix}

\begin{document}

\begin{figure}[h]
\centering
\subfloat[tabellarisch]{\label{struktaba}
\begin{tabular}{|rccc|}\hline
Name& Geschlecht & Alter & Kind von \\\hline
Ada & w & 8 & Udo, Eda \\
Ida & w & 16 & ---\\
Eda & w & 16 & ---\\
Odo & m & 6 & Udo, Ida \\
Udo & m & 20 & ---\\\hline
\end{tabular}}
\subfloat[schematisch]{
\parbox{0.4\textwidth}{
\centering
\begin{tikzpicture}[scale=1.2]
\draw (-0.1,0) -- (-0.2,0);
\draw (-0.1,1) -- (-0.2,1);
\draw (-0.1,2) -- (-0.2,2);

\draw (0,0)--(0,2); %Strich
\path (0.4,1.6) node[draw,shape=circle] (Ida) {i};
\path (1.6,1.6) node[draw,shape=circle] (Eda) {e};
\path (1.4,0.8) node[draw,shape=circle] (Ada) {a};

\path (1,2) node[draw,shape=rectangle] (Udo) {u};
\path (0.6,0.6) node[draw,shape=rectangle] (Odo) {o};
\path (-0.3,0) node (0) {0};
\path (-0.37,1) node (0) {10};
\path (-0.37,2) node (0) {20};

\draw [->](Udo) -- (Ada);
\draw [->](Udo) -- (Odo);
\draw [->](Ida) -- (Odo);
\draw [->](Eda) -- (Ada);
\end{tikzpicture}}
}
\caption{eine Affenmeute}
\end{figure}

\end{document}


Das ursprüngliche Problem habe ich zwar nicht gelöst, aber die parbox führt dazu, dass es abhängig von der Größe der Grafik wird. Mit dem scale-Faktor 1.2 wird es bei mir dann genau richtig. Ist zwar nur ein Trick, aber manchmal kann man keine prinzipielle Lösung erwarten.

Dir jedenfalls vielen Dank... auch fürs Mutmachen bezüglich TikZ

Phylax

mechanicus
18-03-2009, 21:22
Habe mir was sagen lassen und es jetzt manuell zu tikzen versucht ... bin eigentlich ganz zufrieden, für den Anfang.
Und du siehst der Code ist viel übersichtlicher. Gratuliere dazu.



Ist zwar nur ein Trick
Wieso Trick. Ist ein Befehl, den du für dich gewinnbringend eingesetzt hast ;)



Dir jedenfalls vielen Dank... auch fürs Mutmachen bezüglich TikZ

Gern geschehen, Hast aber mit dem Bild meiner Vermutung bestätigt.

Gruß
Marco