Dies ist eine statische Kopie unseres alten Forums. Es sind keine Interaktionen möglich.
This is a static copy of our old forum. Interactions are not possible.

Nagezahn

Junior Schreiberling

  • "Nagezahn" is male
  • "Nagezahn" started this thread

Posts: 198

Date of registration: Feb 9th 2010

Location: Nordstadt

1

Sunday, September 2nd 2012, 2:50am

Latex und Klassendiagramme

Hallo Leute,

habe mal wieder ne Latex-Frage.

Ich möchte Klassendiagramme einbinden - entweder direkt als Tex-Code oder als Vektorgrafik. Meine Versuche sind bisher allesamt gescheitert. Der beste Versuch war, Dia zum Erstellen der Diagramme zu benutzen, das eine Exportfunktion nach Tex hat. Wird dort mit tikzpicture gelöst. Blöderweise ist die Beschriftung, die ich anbringe, aber viel zu weit unten. Beispielcode:

Source code

1
2
3
4
5
\begin{figure}
\input{Figures/enhanceast} % Export von Dia
\caption{Struktur der Klasse \textit{EnhanceAST}\ (ohne Attribute)}
\label{uml:EnhanceAST}
\end{figure}


Was habe ich sonst noch versucht? Zum einen das hier:
http://laclaro.wordpress.com/2011/07/30/…ente-einbinden/

Es gibt zwar keine Ausführungsprobleme, allerdings ist die Grafik überskaliert, so dass nur die letzten paar Zeilen überhaupt auf dem Dokument zu sehen sind. Der Rest verschwindet ins Nirvana außerhalb der Seite.

Dann gab es noch den Tip, MetaUML zu verwenden. Problem dabei ist, in den Anleitungen und dergleichen ist der zweite Schritt immer, mptopdf aufzurufen, aber das gibt's bei mir nicht, obwohl ich Context installiert habe, wo es angeblich dabei sein soll. Scheint ein ubuntu-Problem zu sein.

Auch pstricks habe ich schon ausprobiert. Dazu gibt's eine Ergänzung pst-uml, die nett aussieht, habe ich aber nicht zum Laufen bekommen. Und irgendwann ging mir dann die Lust aus. Wäre ja nicht so, als hätte ich noch eine Bachelorarbeit fertig zu stellen. :rolleyes:

Also, wenn mir einer sagen kann, wie ich die Beschriftung richtig hinbekomme, wenn ich den Dia-Export benutze, wäre ich schon super glücklich. Ansonsten wäre ich auch für andere funktionierende Tips offen und dankbar.

Hier noch jeweils ein paar Zeilen vom Anfang und vom Ende aus dem Dia-Export:

Source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
\ifx\du\undefined
  \newlength{\du}
\fi
\setlength{\du}{15\unitlength}
\begin{tikzpicture}
\pgftransformxscale{1.000000}
\pgftransformyscale{-1.000000}
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
%%
% ... viele hoffentlich irrelevante Anweisungen ...
%%
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\node[anchor=west] at (3.750000\du,13.550000\du){-checkAST(): bool};
% setfont left to latex
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\node[anchor=west] at (3.750000\du,14.350000\du){-clear(): void};
\end{tikzpicture}


Grüße!

hamena314

Zerschmetterling

  • "hamena314" is male

Posts: 2,032

Date of registration: Aug 31st 2003

Location: Hannover

Occupation: Informatikstudent (d'uh)

2

Sunday, September 2nd 2012, 10:26am

Es gibt zwar keine Ausführungsprobleme, allerdings ist die Grafik überskaliert, so dass nur die letzten paar Zeilen überhaupt auf dem Dokument zu sehen sind. Der Rest verschwindet ins Nirvana außerhalb der Seite.


Haste schonmal \include mit dem Parameter [scale=X] probiert? Kann sein dass er Seitenumbrüche einfügt, aber immerhin hättest du so eine Skalierung drin.
Nicht der Wind bestimmt die Richtung, sondern das Segel! (Lao Xiang, China)

SammysHP

Forenwolf

  • "SammysHP" is male

Posts: 712

Date of registration: Oct 11th 2010

Location: Celle

Occupation: Informatiker

3

Sunday, September 2nd 2012, 10:30am

Könntest du bitte ein PDF anhängen, wo man sich das anschauen kann? Und vielleicht dort markieren, um welchen Abstand es dir genau geht. Der Abstand zwischen Grafik und Bildunterschrift? Minimalbeispiel? Welche Dokumentenklasse verwendest du? Welche Einstellungen? Kurz gesagt: Minimalbeispiel.

Nagezahn

Junior Schreiberling

  • "Nagezahn" is male
  • "Nagezahn" started this thread

Posts: 198

Date of registration: Feb 9th 2010

Location: Nordstadt

4

Sunday, September 2nd 2012, 4:55pm

Haste schonmal \include mit dem Parameter [scale=X] probiert?

Die SVG-Grafik wird ja über den definierten Befehl in Tex-Code konvertiert und dann mit \input eingebunden. Wenn ich da [schale=irgendwas] einbaue, gibt's nur nen Fehler, er könne die Datei "[scale=1]{Figures/beispiel.pdf_tex}" nicht finden. \include kann ich nicht verwenden, da das Kapitel, wo ich das Diagramm haben möchte, bereits selbst includiert wird.

Der Abstand zwischen Grafik und Bildunterschrift?

Ja, genau der.

Habe mal ein Beispiel zusammengebastelt und dabei festgestellt, dass der Abstand bei den mit Dia erzeugten Diagrammen geringer wird, wenn auch die Breite des Diagramms abnimmt.

Source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
\documentclass[12pt, a4paper, DIV8, BCOR50mm, twoside]{scrartcl}
\usepackage[T1]{fontenc}
\usepackage{ngerman}
\usepackage{tabularx}
\usepackage{colortbl}
\usepackage{subfig}
\usepackage{amssymb}
\usepackage{graphicx}
\usepackage{geometry}

\usepackage{url}
\usepackage{Packages/Kommandos}
\usepackage[german]{minitoc}
\usepackage{listings}
\usepackage{keyval}
\usepackage{color}
\usepackage[usenames,dvipsnames,svgnames,table]{xcolor}
\usepackage{fancyhdr}
\usepackage{booktabs}
\usepackage{rotating}
\usepackage{lscape}
\usepackage{multicol}
\usepackage{pdfpages}
\usepackage{amsmath}
\usepackage{setspace}
\usepackage{makeidx}
\usepackage{Packages/todonotes}

\geometry{bottom={4cm}}

\newcommand{\executeiffilenewer}[3]{%
\ifnum\pdfstrcmp{\pdffilemoddate{#1}}%
{\pdffilemoddate{#2}}>0%
{\immediate\write18{#3}}\fi%
}
\newcommand{\includesvg}[1]{%
\executeiffilenewer{#1.svg}{#1.pdf}%
{inkscape -z -D --file=#1.svg %
--export-pdf=#1.pdf --export-latex}%
\input{#1.pdf_tex}%
}

\onehalfspacing  % anderthalbzeilig

\bibliographystyle{unsrtwolfram}
\setlength{\topmargin}{0in}
\setlength{\topskip}{0in}    % between header and text
\setlength{\textheight}{22cm} % height of main text
\setlength{\textwidth}{14cm}    % temporär, original: 6.5in
\setlength{\oddsidemargin}{2.5mm} % odd page left margin
\setlength{\evensidemargin}{27.5mm} % temporär, original: 0.1in - even page left margin
\setlength{\marginparwidth}{3cm} % temporär, so lange Notizen drin sind
\lstset{
	tabsize=4,
	frame=single,
	captionpos=b,
	literate={ö}{{"o}}1
		{ä}{{"a}}1
		{ü}{{"u}}1
}

\begin{document}
\dosecttoc

\pagestyle{fancy}
\lhead{\thepage}
\rhead{\leftmark}
\cfoot{\empty}
\pagenumbering{arabic}

\newpage
\begin{figure}[htb]
   \centering
   \includesvg{Figures/beispiel}
\end{figure}

\newpage
\begin{figure}[htb]
   \centering
   \includesvg{Figures/schmalklasse}
\end{figure}

\newpage
\begin{figure}
\input{Figures/beispiel}
\caption{Struktur der Klasse \textit{Beispielklasse}}
\label{uml:EnhanceAST}
\end{figure}

\begin{figure}
\input{Figures/schmalklasse}
\caption{Struktur der Klasse \textit{Beispielklasse}}
\label{uml:EnhanceAST}
\end{figure}

\end{document}


Das Ganze sieht dann so aus. Auf den ersten beiden Seiten sieht man zwei verschiedene Diagramme, die sich nicht um Seitenbegrenzungen kümmern. Auf der letzten Seite dann zwei mit Dia erzeugte Diagramme.

SammysHP

Forenwolf

  • "SammysHP" is male

Posts: 712

Date of registration: Oct 11th 2010

Location: Celle

Occupation: Informatiker

5

Sunday, September 2nd 2012, 5:10pm

  • Was spricht gegen EPS als Grafikformat? Einfach mit \includegraphics{Dateiname.eps} einbinden und fertig.
  • Das Problem mit den ersten beiden Beispielen könnte mit der schrecklichen Längenveränderung liegen. Längen in LaTeX sind äußerst komplex zusammengesetzt. Ändert man da welche, ohne die Zusammenhänge zu kennen, kann es zu solchen Resultaten kommen.

Nagezahn

Junior Schreiberling

  • "Nagezahn" is male
  • "Nagezahn" started this thread

Posts: 198

Date of registration: Feb 9th 2010

Location: Nordstadt

6

Sunday, September 2nd 2012, 5:35pm

Auf EPS bin ich bei meiner Suche nach einer Lösung nur insofern gestoßen, als dass es hieß, das ginge nicht mit Latex. War aber nicht faul und habe nochmal gesucht. Wenn ich es richtig verstanden habe, trifft das auf pdflatex zu, da ging es auch tatsächlich nicht. Habe als Treiber dann xelatex eingestellt, damit geht's. Da konnte ich auch den Tip mit scale=X einbauen, denn die Dinger waren viel zu groß. Mit EPS (per Dia exportiert) und der Skalierung zusammen bin ich nun zufrieden. Vielen Dank euch beiden! :)

SammysHP

Forenwolf

  • "SammysHP" is male

Posts: 712

Date of registration: Oct 11th 2010

Location: Celle

Occupation: Informatiker

7

Sunday, September 2nd 2012, 5:44pm

Gut, ich mache es immer über latex --> dvips --> ps2pdf, aber wenn es geht, ist's ja ok.

Quoted

als dass es hieß, das ginge nicht mit Latex

EPS ist eines der ersten Grafikformate (wenn nicht sogar das erste), welches LaTeX unterstützt. Das ist nämlich lediglich PostScript in einem Container und braucht von LaTeX deswegen gar nicht weiter verarbeitet werden.

Nagezahn

Junior Schreiberling

  • "Nagezahn" is male
  • "Nagezahn" started this thread

Posts: 198

Date of registration: Feb 9th 2010

Location: Nordstadt

8

Sunday, September 2nd 2012, 9:28pm

Ja, vielleicht habe ich es im Eifer des Gefechtes auch nur falsch verstanten oder interpretiert.

Noch eine kleine Frage am Rande:
Ich arbeite mit TeXworks und verwende für die einzelnen Kapitel separate Dateien, die in der Hauptdatei eingebunden werden. Nun ist es so, dass ich für das Kompilieren immer zum Fenster der Hauptdatei wechseln muss, woran ich nicht immer denke. Komfortabler wäre es, wenn ich dem Programm mitteilen könnte, dass es das Kompilieren, wenn ich es aus einer der Kapitel aufrufe, die Hauptdatei nimmt. Es weiß nicht zufällig jemand, ob bzw. wie das geht?

9

Sunday, September 2nd 2012, 9:57pm

Pack einfach "% !TeX root = main.tex" an den Anfang von den Kapitel-Dateien. (ohne " natürlich) Unter Windows soll man trotzdem / statt \ benutzen, falls man ein anderes Verzeichnis angeben muss.

Quelle: http://ftp.ctex.org/pub/tex/tools/editor…orks/manual.pdf (Kapitel 4.4)
٩(͡๏̯͡๏)۶

Nagezahn

Junior Schreiberling

  • "Nagezahn" is male
  • "Nagezahn" started this thread

Posts: 198

Date of registration: Feb 9th 2010

Location: Nordstadt

10

Sunday, September 2nd 2012, 10:30pm

Cool, funktioniert wunderbar. Besten Dank! :)

Rick

Mädchen

  • "Rick" is male

Posts: 1,266

Date of registration: Mar 17th 2004

Location: ::1/128

Occupation: Forentroll

11

Sunday, September 2nd 2012, 11:47pm

Ein makefile wäre auch eine Variante ;)

Sometimes you've got to ask yourself: Is xkcd shitty today?

SammysHP

Forenwolf

  • "SammysHP" is male

Posts: 712

Date of registration: Oct 11th 2010

Location: Celle

Occupation: Informatiker

12

Monday, September 3rd 2012, 10:39am

Ich arbeite immer mit latexmk: ftp://ftp.tu-chemnitz.de/pub/tex/support/latexmk/