Benutzer-Werkzeuge

Webseiten-Werkzeuge


asymptote

Asymptote

Asymptote ist eine Vektorgrafik-Sprache. Zum Setzen von Texten und Labeln wird LaTeX benutzt.

Falsche Seitengröße bei Umwandlung von EPS -> PDF

Asymptote Version < 2.24 hat einen Bug beim Erzeugen von EPS-Dateien. Zum Beispiel führen folgende Befehle mit Asymptote 2.23

import graph;
size(4cm, 4cm, false);
real f(real x) {
  return x^2;
}
draw(graph(f, 1, 5));
yaxis( L = Label("$f(x)$", position=Relative(1)), autorotate=false, Left, arrow=Arrow(TeXHead));
xaxis( L = Label("$x$", position=Relative(1)), Bottom, arrow=Arrow(TeXHead));

zu einer EPS-Datei, die

%%BeginPaperSize: Letter
/setpagedevice where
{ pop << /PageSize [612 792] >> setpagedevice }
{ /letter where { pop letter } if }
ifelse
%%EndPaperSize

enthält. (Das Problem tritt nicht auf, wenn keine Achsen im Asymptote-Code enthalten sind.) Dadurch bekommt die PDF-Datei, die daraus mit epstopdf erzeugt wird, das Letter-Format. Ein ähnliches Problem mit anderem Code tritt auch unter Version 2.31, aber nicht in 2.32 auf. Der empfohlene Workaround ist direkt den PDF-Output von Asymptote zu benutzen. Eine andere Möglichkeit ist der automatische Aufruf von pdfcrop in der automatischen eps→pdf-Umwandlung. Dies war im zweiten Fall jedoch nicht erfolgreich und wird daher nicht empfohlen.

Fill verdeckt Achsen

Mit dem Befehl fill gezeichnete Füllungen überdecken standardmäßig die Achsen (unabhängig von der Aufrufreihenfolge). Möchte man dies nicht, können die Achsen mit above = true nach vorne geholt werden.

fill((0,0)--(0,1)--(1,1)--(1,0)--cycle);
xaxis(L = Label("$x$"), above = true);

Text mit Umlauten

Um Texte mit Umlauten in Asymptote zu schreiben, die korrekt durchsuchbar und kopierbar (d.h. T1 ohne Customcodierung) sind, werden folgende Befehle benötigt:

import unicode;
usepackage("fontenc", "T1");
usepackage("lmodern");

Dateien includieren

Andere Asymptote-Dateien lassen sich mit import inkludieren. Das ist zum Beispiel hilfreich um gemeinsame Definitionen in eine einzige Datei auszulagern. Die Datei common.asy wird so includiert:

import common;

Filltype

Die verschiedenen Filltypes (z.B. von Label) werden hier in der Dokumentation beschrieben.

Grenzen (limits) der Zeichnung bestimmen

Mit den Funktionen

min(currentpicture, true)
max(currentpicture, true)

lässt sich das Minimum/Maximum der aktuellen Zeichnung bestimmen. Das ist z.B. praktisch um die Achsen etwas länger als benötigt zu machen:

import graph;
size(4cm);
path unitcircle=E..N..W..S..cycle;
draw(unitcircle);
xaxis("$x$", xmax=max(currentpicture,true).x + 0.5);
yaxis("$y$");

Schar von Funktionen plotten

Eine Schar oder Familie von Funktionen lässt sich wie hier plotten.

Definierte Farbnamen

Asymptote kennt standardmäßig diese Farbnamen. Weitere Farben können durch Importieren von texcolor.asy oder x11colors.asy verwendet werden.

Debugging

Mit dem Befehl write() können Debugausgaben auf die Konsole geschrieben werden.

asymptote.txt · Zuletzt geändert: 2023/03/20 20:44 von olli