Auf dem Deckblatt der Dokumentation von Till Tantau steht unter anderem sowas wie Tikz & PGF. Das suggeriert, dass Tikz und PGF unterschiedliche Dinge sind. Deswegen würde ich gerne wissen, worin sich beide Dinge unterscheiden. Was haben sie gemeinsam? Wann sollte was verwendet werden? Was ist mächtiger?

gefragt 17 Sep, 07:13

runix's gravatar image

runix
94124256
Akzeptiert: 56%

bearbeitet 17 Sep, 08:03

2

Nicht zu vergessen gibt es ja auch {pgfpicture}, im Unterschied zu {tikzpicture} (wäre auch mal ein interessanter Punkt). Ich glaube, es entspricht i.w.S. dem Unterschied TeX und LaTeX: TikZ fasst eine Menge von pgf-Objekten zu einer einheitlichen Syntax zusammen. Das war jetzt sehr unausführlich, daher nur als Kommentar.

(17 Sep, 12:51) cis

TikZ ist im Wesentlichen das "PR Department" von pgf, wie es percusse hier ausdrückt. D.h., es gibt nichts, was Du mit TikZ machen kannst, das Du nicht auch mit pgf hinbekommst. Die Umkehrung gilt nicht. Allerdings ist TikZ viel benutzerfreundlicher. D.h. es bietet sich an, TikZ zu benutzen, so weit das geht, und dann, falls nötig, den Rest mit pgf zu erledigen. Und man kann die beiden "mischen", ganz einfach weil TikZ auf pgf basiert. Dazu etwas mehr weiter unten. (Man kann auch pstricks und TikZ/pgf mischen, indem man beispielsweise ein tikzpicture in eine \rnode setzt, das hat aber andere Gründe.)

Wann muss man pgf verwenden? Das ist immer dann immer dann, wenn man selber ein "low-level" Element erstellen mag, das es so noch nicht gibt. Viele dieser Kommandos fangen mit \pgfdeclare an: \pgfdeclareplotmark, \pgfdeclareshape, \pgfdeclaredecoration, \pgfdeclaremetadecoration, \pgfdeclarearrow etc.) Die Syntax ist ein bisschen weniger gebräuchlich und tendenziell auch etwas umständlicher, aber direkter, was die codes schneller macht.

Was hat es mit dem "Mischen" auf sich? Hier ist ein möglicherweise dummes Beispiel. Wenn man einen Zylinder aus der Library shape.geometric einfärbt, gibt es standardmäßig nur die Optionen entweder die Wand und das Ende mit jeweils einer Farbe einzufärben, oder aber den gesamten Zylinder mit Gradienten auszufüllen. Alternativ kann man den Zylinder einfach komplett selber, d.h. ohne die Library, zeichnen, oder das Ende später draufsetzen. All das funktioniert wunderbar. Wenn man das jedoch in eine Node packen mag und nicht eigens eine neue shape deklarieren mag, kann man hier mischen.

Öffne in Overleaf
\documentclass[tikz,border=3.14mm]{standalone}
\usetikzlibrary{shapes.geometric}
\begin{document}
\tikzset{cylinder end fill/.style={path picture={
\pgftransformshift{\centerpoint}%
\pgftransformrotate{\rotate}%  
\pgfpathmoveto{\beforetop}%
\pgfpatharc{90}{-270}{\xradius and \yradius}%
\pgfpathclose
\pgfsetfillcolor{#1}%
\pgfusepath{fill}}
}}
\begin{tikzpicture}
\pgfmathsetmacro{\myaspect}{pi/4}
\node [draw,
  shape=cylinder,
  aspect=\myaspect,
  minimum height=3cm,
  minimum width=2cm,
  rotate=20,
  cylinder end fill=blue,
  left color=blue!30,
  right color=black,
  middle color=blue!80,
  shading angle=20,
  font=\sffamily,
  text width=pi*1cm,
  text=white]  {Hello world, ducks, koalas and marmots!};
\end{tikzpicture}
\end{document}

alt text

Ob es viele Situationen gibt, in denen das wirklich grosse Vorteile bringt, ist schwer zu sagen.

(Kein) Fazit. TikZ basiert auf/verwendet pgf. Für viele Anwendungen ist es nicht nötig, die etwas umständlichere pgf Syntax zu lernen. Und man macht m.E. nichts falsch, erst mal mit TikZ zu starten (da lernen die Meisten ja auch nicht Alles in den ersten 5 Minuten;-) und dann pgf dazu zu tun wenn immer es nötig ist oder die Dinge vereinfacht. Alles mit pgf zu machen ist möglich, aber m.E. auch etwas mühsam. Man wird da evtl. über kurz oder lang Macros schreiben, die Einem das Wiederholen etc. abnehmen, d.h. in gewisser Weise TikZ neu erfinden.

Permanenter link

beantwortet 17 Sep, 13:21

Murmeltier's gravatar image

Murmeltier
2.0k64

bearbeitet 18 Sep, 21:33

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:

×627
×24

Frage gestellt: 17 Sep, 07:13

Frage wurde angeschaut: 526 Mal

Zuletzt aktualisiert: 18 Sep, 21:33