PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Flussdiagramm in Latex importieren mit Dia



momo
26-10-2009, 21:37
Hallo zusammen,

ich möchte auf einfache Weise Flussdiagramme erzeugen und dabei auch den Latex-Schriftsatz verwenden können.

Mein Ansatz ist folgender:
Die freie Software Dia kann solche Flussdiagramme auf einfache Art erzeugen, und bietet hierzu dann auch eine Export-Schnittstelle an, die den Rumpf einer tex-Datei erzeugt. Ich würde dann ggfs. Latex-Texte in der Tex-Datei anpassen.
http://http://www.togaware.com/linux/survivor/Export_TeX.html
Könnte sich jemand mal mein Beispiel ansehen und sagen, warum das Layout so arg mies aussieht ? Kästchen sind nicht mehr als solche zu erkennen, Schriftstärke viel zu dick, Text wird gar nicht übernommen..

Hat jemand Erfahrung damit, bzw. eine andere, bessere Idee (..ohne direkt in Latex mit pstricks einzelne Koordinatenkästchen konstruieren zu müssen)

Ich wäre Euch sehr dankbar, wenn Ihr mir weiterhelfen könntet, probiere schon ewig lange herum und komme einfach nicht weiter.

Danke und Grüße
Annette

Minimalbeispiel: Flussdiagramm.tex:

\documentclass{article}
\usepackage{tikz}

\usepackage{pstricks}
\usepackage{pst-node}
\usepackage{pst-blur}
\pagestyle{empty}%

\begin{document}
\include{Diagramm7}
\end{document}


Diagramm7:


% PSTricks TeX macro
% Title: C:\Dokumente und Einstellungen\annette\Desktop\LZMMI\Flussdigramm\b ilder\Diagramm7.dia
% Creator: Dia v0.96+svn
% CreationDate: Mon Oct 26 20:46:37 2009
% For: annette
% \usepackage{pstricks}
% The following commands are not supported in PSTricks at present
% We define them conditionally, so when they are implemented,
% this pstricks file will use them.
\ifx\setlinejoinmode\undefined
\newcommand{\setlinejoinmode}[1]{}
\fi
\ifx\setlinecaps\undefined
\newcommand{\setlinecaps}[1]{}
\fi
% This way define your own fonts mapping (for example with ifthen)
\ifx\setfont\undefined
\newcommand{\setfont}[2]{}
\fi
\pspicture(1.950000,-15.050000)(14.050000,-5.950000)
\psscalebox{1.000000 -1.000000}{
\newrgbcolor{dialinecolor}{0.000000 0.000000 0.000000}
\psset{linecolor=dialinecolor}
\newrgbcolor{diafillcolor}{1.000000 1.000000 1.000000}
\psset{fillcolor=diafillcolor}
\psset{linewidth=0.100000cm}
\psset{linestyle=solid}
\psset{linestyle=solid}
\setlinejoinmode{0}
\newrgbcolor{dialinecolor}{0.000000 0.000000 0.000000}
\psset{linecolor=dialinecolor}
\psline(2.000000,6.000000)(9.000000,6.000000)
\newrgbcolor{dialinecolor}{0.000000 0.000000 0.000000}
\psset{linecolor=dialinecolor}
\psline(2.000000,9.000000)(9.000000,9.000000)
\newrgbcolor{dialinecolor}{0.000000 0.000000 0.000000}
\psset{linecolor=dialinecolor}
\psclip{\pswedge[linestyle=none,fillstyle=none](2.000000,6.000000){0.000000}{180.000000}{270.0000 00}}
\psellipse(2.000000,6.000000)(0.000000,0.000000)
\endpsclip
\newrgbcolor{dialinecolor}{0.000000 0.000000 0.000000}
\psset{linecolor=dialinecolor}
\psclip{\pswedge[linestyle=none,fillstyle=none](9.000000,6.000000){0.000000}{270.000000}{360.0000 00}}
\psellipse(9.000000,6.000000)(0.000000,0.000000)
\endpsclip
\newrgbcolor{dialinecolor}{0.000000 0.000000 0.000000}
\psset{linecolor=dialinecolor}
\psline(2.000000,6.000000)(2.000000,9.000000)
\newrgbcolor{dialinecolor}{0.000000 0.000000 0.000000}
\psset{linecolor=dialinecolor}
\psline(9.000000,6.000000)(9.000000,9.000000)
\newrgbcolor{dialinecolor}{0.000000 0.000000 0.000000}
\psset{linecolor=dialinecolor}
\psclip{\pswedge[linestyle=none,fillstyle=none](2.000000,9.000000){0.000000}{90.000000}{180.00000 0}}
\psellipse(2.000000,9.000000)(0.000000,0.000000)
\endpsclip
\newrgbcolor{dialinecolor}{0.000000 0.000000 0.000000}
\psset{linecolor=dialinecolor}
\psclip{\pswedge[linestyle=none,fillstyle=none](9.000000,9.000000){0.000000}{0.000000}{90.000000} }
\psellipse(9.000000,9.000000)(0.000000,0.000000)
\endpsclip
\setfont{Helvetica}{0.800000}
\newrgbcolor{dialinecolor}{0.000000 0.000000 0.000000}
\psset{linecolor=dialinecolor}
\rput[l](3.320000,-7.698750){\psscalebox{1 -1}{Wurzel aus 9}}
\psset{linewidth=0.100000cm}
\psset{linestyle=solid}
\psset{linestyle=solid}
\setlinejoinmode{0}
\newrgbcolor{dialinecolor}{1.000000 1.000000 1.000000}
\psset{linecolor=dialinecolor}
\pspolygon*(10.000000,11.000000)(10.000000,15.0000 00)(14.000000,15.000000)(14.000000,11.000000)
\newrgbcolor{dialinecolor}{1.000000 1.000000 1.000000}
\psset{linecolor=dialinecolor}
\psclip{\pswedge[linestyle=none,fillstyle=none](10.000000,11.000000){0.000000}{180.000000}{270.00 0000}}
\psellipse*(10.000000,11.000000)(0.000000,0.000000 )
\endpsclip
\newrgbcolor{dialinecolor}{1.000000 1.000000 1.000000}
\psset{linecolor=dialinecolor}
\psclip{\pswedge[linestyle=none,fillstyle=none](14.000000,11.000000){0.000000}{270.000000}{360.00 0000}}
\psellipse*(14.000000,11.000000)(0.000000,0.000000 )
\endpsclip
\newrgbcolor{dialinecolor}{1.000000 1.000000 1.000000}
\psset{linecolor=dialinecolor}
\pspolygon*(10.000000,11.000000)(10.000000,15.0000 00)(14.000000,15.000000)(14.000000,11.000000)
\newrgbcolor{dialinecolor}{1.000000 1.000000 1.000000}
\psset{linecolor=dialinecolor}
\psclip{\pswedge[linestyle=none,fillstyle=none](10.000000,15.000000){0.000000}{90.000000}{180.000 000}}
\psellipse*(10.000000,15.000000)(0.000000,0.000000 )
\endpsclip
\newrgbcolor{dialinecolor}{1.000000 1.000000 1.000000}
\psset{linecolor=dialinecolor}
\psclip{\pswedge[linestyle=none,fillstyle=none](14.000000,15.000000){0.000000}{0.000000}{90.00000 0}}
\psellipse*(14.000000,15.000000)(0.000000,0.000000 )
\endpsclip
\newrgbcolor{dialinecolor}{0.000000 0.000000 0.000000}
\psset{linecolor=dialinecolor}
\psline(10.000000,11.000000)(14.000000,11.000000)
\newrgbcolor{dialinecolor}{0.000000 0.000000 0.000000}
\psset{linecolor=dialinecolor}
\psline(10.000000,15.000000)(14.000000,15.000000)
\newrgbcolor{dialinecolor}{0.000000 0.000000 0.000000}
\psset{linecolor=dialinecolor}
\psclip{\pswedge[linestyle=none,fillstyle=none](10.000000,11.000000){0.000000}{180.000000}{270.00 0000}}
\psellipse(10.000000,11.000000)(0.000000,0.000000)
\endpsclip
\newrgbcolor{dialinecolor}{0.000000 0.000000 0.000000}
\psset{linecolor=dialinecolor}
\psclip{\pswedge[linestyle=none,fillstyle=none](14.000000,11.000000){0.000000}{270.000000}{360.00 0000}}
\psellipse(14.000000,11.000000)(0.000000,0.000000)
\endpsclip
\newrgbcolor{dialinecolor}{0.000000 0.000000 0.000000}
\psset{linecolor=dialinecolor}
\psline(10.000000,11.000000)(10.000000,15.000000)
\newrgbcolor{dialinecolor}{0.000000 0.000000 0.000000}
\psset{linecolor=dialinecolor}
\psline(14.000000,11.000000)(14.000000,15.000000)
\newrgbcolor{dialinecolor}{0.000000 0.000000 0.000000}
\psset{linecolor=dialinecolor}
\psclip{\pswedge[linestyle=none,fillstyle=none](10.000000,15.000000){0.000000}{90.000000}{180.000 000}}
\psellipse(10.000000,15.000000)(0.000000,0.000000)
\endpsclip
\newrgbcolor{dialinecolor}{0.000000 0.000000 0.000000}
\psset{linecolor=dialinecolor}
\psclip{\pswedge[linestyle=none,fillstyle=none](14.000000,15.000000){0.000000}{0.000000}{90.00000 0}}
\psellipse(14.000000,15.000000)(0.000000,0.000000)
\endpsclip
\psset{linewidth=0.100000cm}
\psset{linestyle=solid}
\psset{linestyle=solid}
\setlinejoinmode{0}
\setlinecaps{0}
\newrgbcolor{dialinecolor}{0.000000 0.000000 0.000000}
\psset{linecolor=dialinecolor}
\psline(5.500000,9.000000)(5.500000,13.000000)(9.5 13197,13.000000)
\psset{linestyle=solid}
\setlinejoinmode{0}
\setlinecaps{0}
\newrgbcolor{dialinecolor}{0.000000 0.000000 0.000000}
\psset{linecolor=dialinecolor}
\pspolygon*(9.888197,13.000000)(9.388197,13.250000 )(9.513197,13.000000)(9.388197,12.750000)
\newrgbcolor{dialinecolor}{0.000000 0.000000 0.000000}
\psset{linecolor=dialinecolor}
\pspolygon(9.888197,13.000000)(9.388197,13.250000) (9.513197,13.000000)(9.388197,12.750000)
}\endpspicture

mechanicus
26-10-2009, 22:16
Hi,


ohne direkt in Latex mit pstricks einzelne Koordinatenkästchen konstruieren zu müssen
auch wenn du das scheinbar nicht hören möchtest, aber vergleiche mal meinen Code mit deinem:


\documentclass{article}
\usepackage{pstricks}
\pagestyle{empty}%
\usepackage{filecontents}
\begin{filecontents*}{Diagramm7.tex}
\begin{pspicture}(2,0)(14,15)
\psset{linewidth=1.5pt}
\psframe(2,6)(9,9)\rput(5.5,7.5){\bfseries Wurzel aus 9}
\psframe(10,0)(14,4)
\psline{->}(5.5,6)(5.5,2)(10,2)
\end{pspicture}
\end{filecontents*}
\begin{document}
\include{Diagramm7}
\end{document}


Ich glaube, du bist besser dran, dich ein wenig mit pstricks zu beschäftigen.

Gruß
Marco

bobmalaria
26-10-2009, 22:28
hi,

noch einfacher geht das mit dem paket tikz (meiner meinung nach) und damit lässt sich auch direkt mit pdflatex kompilieren.

ansonsten würde ich einfach aus DIA heraus ein pdf drucken und dieses als grafik einbinden.

gruss

mechanicus
26-10-2009, 22:44
Hi Bob,



noch einfacher geht das mit dem paket tikz (meiner meinung nach)
Lass mal kucken :D:D

Gruß
Marco

momo
26-10-2009, 22:51
Hi bobmalaria,

wie meinst Du das mit dem Paket tikz - kannst Du mal ein kleines Beispiel machen? Und: Ich wollte Latex Schriftsatz verwenden können, also so was wie \sqrt{9} in den Grafiken, funktioniert das?

Hi mechanicus,
stimmt, höre ich nicht gern ;-) .. also Ihr nehmt wirklich pstricks auch für komplexe Diagramme (20 und mehr Kästchen auf einer A4 Seite) Hast Du einen guten Starthilfe-Link ?

Dank' Euch und Gruß
Annette
....

mechanicus
26-10-2009, 23:09
Hi,

hatte oben was vergessen. Hier mal mathematisch:

\documentclass{article}
\usepackage{pstricks}
\pagestyle{empty}%
\usepackage{filecontents}
\begin{filecontents*}{Diagramm7.tex}
\begin{pspicture}(2,0)(14,15)
\psset{linewidth=1.5pt}
\psframe(2,6)(9,9)\rput(5.5,7.5){\bfseries $\sqrt{9}$}
\psframe(10,0)(14,4)\rput(12,2){\bfseries $3$}
\psline{->}(5.5,6)(5.5,2)(10,2)
\end{pspicture}
\end{filecontents*}
\begin{document}
\input{Diagramm7}
\end{document}




wie meinst Du das mit dem Paket tikz - kannst Du mal ein kleines Beispiel machen? Und: Ich wollte Latex Schriftsatz verwenden können, also so was wie \sqrt{9} in den Grafiken, funktioniert das?

tikz ist ebenfalls ein "Grafikprogramm" für Latex.



stimmt, höre ich nicht gern ;-)

Musste aber sein :D:D



.. also Ihr nehmt wirklich pstricks auch für komplexe Diagramme (20 und mehr Kästchen auf einer A4 Seite)

Das kommt auf den Anwender an. Ich nutze pstricks, andere tikz. Man kann auch Vektorgrafikprogramme nutzen und anschließend das pdf einbinden.



Hast Du einen guten Starthilfe-Link ?

pstricks:
Internet:
http://www.tug.org/PSTricks/
Buch:
http://www.lob.de/cgi-bin/work/suche?flag=enews&stich1=3865412807&id=1fZ5P0ws5fG92&frame=yes
Programm inkscape:
http://www.inkscape.org/?lang=de

Gruß
Marco

localghost
26-10-2009, 23:21
Hi Bob,


Lass mal kucken :D:D

Gruß
Marco

\documentclass{minimal}
\usepackage{tikz}

\pagestyle{empty}

\begin{document}
\begin{tikzpicture}[thick,>=latex]
\path (0,0) node[draw,rectangle,inner sep=5mm] (a) {Wurzel aus 9}
(4,-3) node[draw,rectangle,minimum size=2cm] (b) {};
\draw[->] (a) |- (b);
\end{tikzpicture}
\end{document}


MfG
Thorsten¹

mechanicus
26-10-2009, 23:34
Hallo Thorsten,

das hat natürlich auch was. Ich würde jetzt sagen: Remis :D

Gruß
Marco

localghost
26-10-2009, 23:49
Hallo Thorsten,

das hat natürlich auch was. Ich würde jetzt sagen: Remis :D

Gruß
Marco
Noch nicht ganz. Wenn Du deinen Code noch optimierst, indem Du auch Knoten (nodes) benutzt, dann ja.

mechanicus
26-10-2009, 23:51
Noch nicht ganz. Wenn Du deinen Code noch optimierst, indem Du auch Knoten (nodes) benutzt, dann ja.
OK :D:D


\documentclass{article}
\usepackage{pstricks-add}

\begin{document}
\begin{pspicture}(-1,-4)(7,1)
\rnode{A}{\psframebox[framesep=5mm]{\large$\sqrt{9}$}}
\rput(4,-3){\rnode{B}{\psframebox[framesep=5mm]{\large$3$}}}
\ncangle[angleA=-90,angleB=180]{->}{A}{B}
\end{pspicture}
\end{document}

Gruß
Marco

momo
27-10-2009, 00:02
Hallo Ihr zwei,

vielen Dank für Eure Hilfe! Das sieht gut aus mit "tikz", gibt es hierzu auch einen "Starthilfe -Link" ?

Noch was: Wenn ich für die Datei ("Flussdiagramm") das Paket tikz verwende, erzeuge ich doch zuerst immer eine ps-Datei, und dann aus der ps-Datei eine pdf-Datei.
Nun kommen meine anderen Dateien ("P1","P2","P3") ohne tikz aus und man kann daraus direkt eine pdf-Datei erzeugen. Kann ich trotzdem weiterhin mit der Hauptdatei (unten) irgendwie direkt eine lauffähige pdf-Datei erzeugen, oder muß ich nun die Datei
Flussdiagramm herausnehmen? Dann könnte ich auch keine gemeinsame Seitennummerierung mehr verwenden, oder?

Danke und Gruß
Annette


\documentclass[10pt,a4paper,landscape]{article}
\input {../header}
\usepackage{tikz}
%
\begin{document}
\input {../definitions}
\input{P1}
\input{P2}
\input{P3}
%...
\input{Flussdiagramm1}
%
\end{document}

mechanicus
27-10-2009, 00:07
Das sieht gut aus mit "tikz",

:(:(:(:(:(:(

Gruß
Marco

momo
27-10-2009, 00:18
.. Marco, also wir :) hatten doch nur :rolleyes: die Möglichkeit der Optimierierung nicht bedacht, stimmts?

.. es fängt mir ja an richtig Spaß zu machen, hier ;)

.. hast Du noch eine Idee für meine letzte Frage, bzw. weißt Du was ich meine? :(

mechanicus
27-10-2009, 10:55
Noch was: Wenn ich für die Datei ("Flussdiagramm") das Paket tikz verwende, erzeuge ich doch zuerst immer eine ps-Datei, und dann aus der ps-Datei eine pdf-Datei.
Das ist so nicht richtig. tikz erlaubt es ohne Zusatzpakete direkt mit pdflatex zu kompilieren. Eigentlich ist tikz für die Kompilierung latex->ps->pdf ungeeignet, weil diverse Features dann nicht mehr funktionieren.
Hingegen benötigt pstricks diese Kompilierung. Es ist zwar auch pdflatex möglich, allerdings nur mit Zusatzpaketen, welche hier (http://www.tug.org/PSTricks/main.cgi?file=pdf/pdfoutput) beschrieben sind.


Der Vorteil von tikz und pstricks ist einfach, dass sich der Code einfach in die tex-Struktur einbauen lässt. So kannst du dir sicher sein, dass überall die aktuelle Schriftart verwendet wird. Natürlich kannst du auch die Grafiken mittels input einbinden.

Eine Alternative wäre, du erstellst deine latex-Grafiken separat und arbeitest dann mit der Ergebnis-pdf. Dieses kannst du einfach mittels pdfcrop zurechtschneiden und mit includegraphics einbinden.

Ich hoffe das beantwortet deine Fragen.

Gruß
Marco