Ich verwende generierte dot-Dateien, die ich mit LaTeX weiter verarbeiten möchte. Die Dateien verwenden das style-Attribute von dot, wie im folgenden Beispiel:

Öffne in Overleaf
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{shapes,arrows}
\usepackage[shell,outputdir={diagrams/},tikz]{dot2texi}
\usepackage{graphicx}

\begin{document}
\begin{dot2tex}[dot]
digraph G {
node [shape="box",style="rounded"];
a_1 -> a_2 -> a_3 -> a_4 -> a_1;
}
\end{dot2tex}

\end{document}

Ich erhalte dann folgende Fehlermeldung:

Öffne in Overleaf
! Package pgfkeys Error: I do not know the key '/tikz/rounded' and I am going t
o ignore it. Perhaps you misspelled it.

See the pgfkeys package documentation for explanation.
Type  H <return>  for immediate help.
 ...

l.4 ...at (54.0bp,18.0bp) [draw,rectangle,rounded]
                                                   {a\_4};
?

Was ist die Ursache? Muss ich noch weitere tikz-Bibliotheken einbinden? Vielen Dank im Voraus

Dieser Frage ist "Community-Wiki" markiert.

gefragt 10 Jul, 11:59

dordow's gravatar image

dordow
436
Akzeptiert: 75%

Was soll rounded sein? Meinst Du vielleicht rounded corners? Ich kann es leider selbst nicht testen, da ich dot2tex nicht zum Laufen bekomme.

(10 Jul, 13:11) saputello

Aus der Doku von dot2tex: »The style attribute is passed to the rendering backend [...]« Das heißt, der Inhalt von style muss ein TikZ-Style sein, also rounded corners statt nur rounded.

(10 Jul, 19:27) Henri

Das Problem ist schlicht, dass es keine tikz Option rounded gibt. Ich vermute, Du meinst den Stil rounded corners:

Öffne in Overleaf
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{shapes,arrows}
\usepackage[shell,tikz]{dot2texi}
\usepackage{graphicx}

\begin{document}
\begin{dot2tex}[dot]
digraph G {
node [shape="box",style="rounded corners"];
a_1 -> a_2 -> a_3 -> a_4 -> a_1;
}
\end{dot2tex}

\end{document}

Graph

Ich vermute stark, dass außerdem Option mathmode für die Umgebung gewünscht ist:

Öffne in Overleaf
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{shapes,arrows}
\usepackage[shell,tikz]{dot2texi}
\usepackage{graphicx}

\begin{document}
\begin{dot2tex}[dot,mathmode]
digraph G {
node [shape="box",style="rounded corners"];
a_1 -> a_2 -> a_3 -> a_4 -> a_1;
}
\end{dot2tex}

\end{document}

mit mathmode

Wenn Du unbedingt einen Stil rounded benötigst, kannst Du den quasi als Alias für rounded corners definieren:

Öffne in Overleaf
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{shapes,arrows}
\usepackage[shell,tikz]{dot2texi}
\usepackage{graphicx}

\tikzset{rounded/.style={rounded corners}}

\begin{document}
\begin{dot2tex}[dot,mathmode]
digraph G {
node [shape="box",style="rounded"];
a_1 -> a_2 -> a_3 -> a_4 -> a_1;
}
\end{dot2tex}

\end{document}

Ergebnis ist dabei dasselbe wie zuvor. Dabei kannst Du dann wahlweise auch gleich die Stärke der Rundung ändern, beispielsweise:

Öffne in Overleaf
\tikzset{rounded/.style={rounded corners=1pt}}
Permanenter link

beantwortet 11 Jul, 03:44

saputello's gravatar image

saputello
19.7k22757

bearbeitet 11 Jul, 06:26

Ich habe im dot2texi Manual gesehen, dass es dort eine Mischung von dot und tikz Befehlen gibt. Meine dot-Dateien sind aber zum Teil generiert und daher pure dot. Ich müsste sie dann nachbearbeiten, was mir eigentlich nicht taugt.

(11 Jul, 05:29) dordow

@dordow Dann hilft nur mit graphviz als PDF rendern und mit \includegraphics einbinden.

(11 Jul, 05:46) Henri

@dordow: Wenn die generiert sind, dann fügt man eben in den Generierungsworkflow irgendwo ein sed -e 's/style="rounded"/style="rounded corners"/' ein und gut ist. Alternativ könnte man in pgf einen Stil rounded definieren, der letztlich rounded corners ausführt. Aber das finde ich vergleichsweise unschön.

(11 Jul, 06:11) saputello

@dordow: Ich habe im dritten Beispiel mal gezeigt, wie man eine neue Stil-Option definieren kann, so dass es auch mit style="rounded" funktioniert.

(12 Jul, 01:52) saputello

Sehr elegante Lösung! Funktioniert auch mit Kombinationen (style="rounded,filled").

(12 Jul, 13:58) dordow

Zwar keine direkte Antwort, aber alternativ kann man den Graph auch mit TikZ graphdrawing erstellen.

Öffne in Overleaf
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{graphs,graphdrawing}
\usegdlibrary{layered}
\begin{document}

\begin{tikzpicture}
  \graph[layered layout,nodes={draw,rounded corners},math nodes] {
    a_1 -> a_2 -> a_3 -> a_4 -> a_1;
  };
\end{tikzpicture}

\end{document}

alt text

Permanenter link

beantwortet 10 Jul, 17:23

Henri's gravatar image

Henri
11.3k42232

Ich habe schon mit tikz gearbeitet, es ergibt die besten Graphiken, sieht man ja auch an diesem Beispiel. Es ist mir aber einfach zu kompliziert. Die graphdrawing Bibliothek kenne ich aber noch nicht, scheint ja so etwas wie dot in tikz zu sein. Werde ich mir anschauen, danke für den Tipp.

(11 Jul, 05:35) dordow

@dordow: Danke geht bei uns übrigens mit Upvote (Klick auf den Daumen hoch). Das kann jeder für beliebig viele Fragen und Antworten, die er gut findet. Wenn eine Antwort diejenige ist, die Deiner Meinung nach Deine Frage beantwortet, gibt es außerdem auch noch den Haken. Auf den kann nur der Fragestelle bei einer einzigen Antwort klicken. Das alles hilft ggf. anderen Fragestellern mit ähnlichen Fragen bei der Orientierung (bewahrt sie aber auch nicht davor ihr Hirn einzuschalten).

(11 Jul, 06:29) saputello
Deine Antwort auf die Frage (nicht auf andere Antworten)
Knebel-Vorschau

Folge dieser Frage

Per E-Mail:

Wenn Du Dich anmeldest, kannst Du Updates hier abonnieren

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs füge einfach zwei Leerzeichen an die Stelle ein, an der die neue Zeile sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Zugeordnete Themen:

×529
×21
×3
×2

Frage gestellt: 10 Jul, 11:59

Frage wurde angeschaut: 125 Mal

Zuletzt aktualisiert: 12 Jul, 13:58