«

»

Apr 15

Die picture-Umgebung

Über die [cci]picture[/cci]-Umgebung wurde in LaTeX die Möglichkeit geschaffen, einfache Bilder direkt zu erstellen. Die Möglichkeiten dieser Graphikumgebung sind sehr begrenzt, jedoch für viele einfache Abbildungen ist sie vollkommen ausreichend. Dabei werden die einzelnen Elemente der Abbildungen über Kommandos gesetzt.

Der größte Vorteil ist die Angabe aller Elemente über relative Positionsangaben und Maßeinheiten, wobei der Faktor für die Maßeinheit zentral oder für jede Abbildung einzelnd gesetzt werden kann. Hiermit hat man die Möglichkeit, Graphiken im nachhinein einfach über Änderung des Faktors zu skalieren.

Koordinatensystem

Um die Graphikelemente zu positionieren, wird ein Koordinatensystem verwendet – mit einer waagerechten x-Achse und einer senkrechten y-Achse. Der Bezugspunkt ist der Schnittpunkt dieser beiden Achsen, also der Punkt (0,0). Über dieses Koordinatensystem können alle Graphikelemente eindeutig positioniert werden.

Die angebenen werden können auch als Dezimalzahl geschrieben werden – mit einem Punkt als Dezimaltrennzeichen, also in der angloamerikanischen Schreibweise.

Längeneinheit

Für die Koordinaten muß noch eine Längeneinheit definiert werden. Diese Längeneinheit erfolgt über eine Längenerklärung der Form
[cc_latex]\setlength{\unitlength}{Maßangabe}[/cc_latex]
Die Maßangabe kann in den TeX-üblichen Maßangaben durchgeführt werden, z.B. in cm, mm, pt… Diese Angabe kann im LaTeX-Dokument irgendwo stehen und gilt ab diesem Punkt bis sie überschrieben wird. Somit besteht die Möglichkeit, diese zentral zu setzen (z.B. in der Preämbel) und ggf. für einzelne Abbildungen zu modifizieren.

Definition der picture-Umgebung

Die Abbildungen werden innerhalb der Umgebung
[cc_latex]
\begin{picture}(x_dimen,y_dimen)
bildbefehle
\end{picture}
[/cc_latex]
erzeugt. Die Größe wird über das Zahlenpaar [cci lang=’latex‘](x_dimen,y_dimen)[/cci] festgelegt – in der gültigen Längeneinheit. Dieser Platz wird von LaTeX für die Abbildung reserviert. Innerhalb der [cci]picture[/cci]-Umgebung sind als [cci]bildbefehle[/cci] nur die Befehle für die Zeichnung von Graphikelementen (s.u.), Schriftstil- und -größenbefehle sowie Angaben über die dicke der Linien vorkommen (s.u.).

Positionierung

Für die Positionierung von Graphikelementen innerhalb der [cci]picture[/cci]-Umgebung stehen die beiden Befehle
[cc_latex]
\put(x_coord,y_coord){graphikelement}
[/cc_latex]
und
[cc_latex]
\multiput(x_coord,y_coord)(x_incr,y_incr){num}{graphikelement}
[/cc_latex]
zur Verfügung. Über den [cci lang=’latex‘]\put[/cci]-Befehl wird das angegebene Graphikelement an die Koordinaten [cci](x_coord,y_coord)[/cci] gesetzt. Der [cci lang=’latex‘]\multiput[/cci]-Befehl eignet sich besonders für den Satz von mehreren Elementen des angegebenen Graphikelements an verschiedenen Positionen. Dabei wird das Graphikelement zuerst an [cci](x_coord,y_coord)[/cci] gesetzt und anschließend die Koordinatenposition um [cci](x_incr,y_incr)[/cci] geändert und das Graphikelement wiederum gesetzt. Dies erfolgt [cci]num[/cci] mal. Als Veränderungswerte können sowohl positive wie auch negative Werte verwendet werden.

Graphikelemente

Als Graphikelemente stehen zur Verfügung:

  • Text
    • normaler Text
    • [cci lang=’latex‘]\shortstack[pos]{sp}[/cci]: vertikal aufgestockter Text
  • Bildboxen
    • [cci lang=’latex‘]\makebox(x_dim,y_dim)[pos]{text}[/cci]: Box ohne Rahmen, wird häufig für die Positionierung von Text verwendet
    • [cci lang=’latex‘]\framebox(x_dim,y_dim)[pos]{text}[/cci]: Box mit durchgehenden Rahmen
    • [cci lang=’latex‘]\dashbox{d_dim}(x_dim,y_dim)[pos]{text}[/cci]: Box mit gestricheltem Rahmen
  • Linien
    • [cci lang=’latex‘]\line(dx,dy){länge}[/cci]: gerade Linien
    • [cci lang=’latex‘]\vector(dx,dy){länge}[/cci]: gerade Pfeile
  • Kreise
    • [cci lang=’latex‘]\circle{durchmesser}[/cci]: Kreis
    • [cci lang=’latex‘]\circle*{durchmesser}[/cci]: gefüllter Kreis
  • Ovale
    • [cci lang=’latex‘]\oval(x_dim,y_dim)[teil][/cci]: Oval oder Teilovale
  • Bezier-Kurven
    • [cci lang=’latex‘]\qbezier[num](xa,ya)(xb,yb)(xc,yc)[/cci]
  • weiteres
    • [cci lang=’latex‘]\fbox[/cci]: Rahmen, die an den Text angepaßt sind
    • Strichstärken
      • [cci lang=’latex‘]\thicklines[/cci]: dicke Strichstärke
      • [cci lang=’latex‘]\thinlines[/cci]: dünne Strichstärke

Bildboxen

Für Bildboxen existieren drei verschiedene Varianten:

  • [cci lang=’latex‘]\makebox(x_dim,y_dim)[pos]{text}[/cci]: Box ohne Rahmen, wird häufig für die Positionierung von Text verwendet
  • [cci lang=’latex‘]\framebox(x_dim,y_dim)[pos]{text}[/cci]: Box mit durchgehenden Rahmen
  • [cci lang=’latex‘]\dashbox{d_dim}(x_dim,y_dim)[pos]{text}[/cci]: Box mit gestricheltem Rahmen

Über [cci]x_dim[/cci] und [cci]y_dim[/cci] wird die Größe der Box definiert, der optionale Positionierungsparameter [cci]pos[/cci] legt die Ausrichtung des eingetragenen Textes fest. Hier sind folgende Positionierungsparameter möglich:

  • [cci lang=’latex‘][t][/cci]: der Text wird unterhalb des oberen Kastenrandes horizontal zentriert
  • [cci lang=’latex‘][b][/cci]: der Text wird oberhalb des unteren Kastenrandes horizontal zentriert
  • [cci lang=’latex‘][l][/cci]: der Text beginnt am linken Kastenrand und wird vertikal zentriert
  • [cci lang=’latex‘][r][/cci]: der Text endet am rechten Kastenrand und wird vertikal zentriert
  • [cci lang=’latex‘][s][/cci]: der Text wird auf die Breite der Box verteilt und vertikal zentriert
  • ohne: wird der optionale Positionierungsparameter nicht angegeben, so wird der Text horizontal und vertikal in der Box zentriert

Die Positionierungsparameter können auch zu [cci lang=’latex‘][tl][/cci], [cci lang=’latex‘][tr][/cci], [cci lang=’latex‘][bl][/cci] und [cci lang=’latex‘][br][/cci] kombiniert werden.

Bezugspunkt für die Positionierung der Box über den [cci lang=’latex‘]\put[/cci] oder [cci lang=’latex‘]\multiput[/cci]-Befehl ist die linke, untere Ecke der Box.

Gestrichelte Box

Die gestrichelte Box ([cci lang=’latex‘]\dashbox[/cci]) enthält einen zusätzlichen Parameter [cci lang=’latex‘]{d_dim}[/cci], der die Strichelungslänge spezifiziert. Am besten sehen gestrichelte Boxen aus, wenn die Strichelungslänge ein ganzzahliger Teiler der Höhe und Breiter der Box ist.

Linien

Gerade Linien

Linien können beliebig lang in horizontaler und vertikaler Richtung definiert werden, bei den Steigungen stehen nur eine begrenzte Anzahl an Steigungen zur Verfügung. Eine Linie wird in der picture-Umgebung über
[cc_latex]
\line(dx,dy){länge}
[/cc_latex]
spezifiziert. Dabei spezifiziert das Zahlenpaar [cci](dx,dy)[/cci] die Neigung der Linie. Bei waagerechten und senkrechten Linien entspricht die angegebene [cci]länge[/cci] die Länge der Linie in der eingestellten Längeneinheit. Horizontale Linien erhält man über das Neigungszahlenpaar [cci](1,0)[/cci], senkrechte über [cci](0,1)[/cci].

Allgemein hat das Neigungszahlenpaar [cci](dx,dy)[/cci] die Bedeutung, das nach Abschreiten von [cci]dx[/cci] in der horizontalen Richtung (x-Achse), man [cci]dy[/cci] in der vertikalen Richtung abschreiten muß, um wieder auf die Linie zu kommen. Hierdurch erhält man zwei Punkte [cci](x,y)[/cci] und [cci](x+dx,y+dy)[/cci], durch den die Line gehen muß. Für die Neigungszahlenpaare gibt es einige Voraussetzungen, da nicht alle Zahlenkombinationen erlaubt sind:

  • Zahlenpaare müssen ganzzahlig sein;
  • Für die Zahlenpaare stehen nur die Werte 0,1,…,6 zur Verfügung und die negativen Werte derselben;
  • Die Zahlenpaare dürfen keinen gemeinsamen Teiler enthalten.

Somit gibt es 25 Zahlenpaare (ohne Berücksichtigung des Vorzeichens) für die Neigungsangabe.

Die Längenangabe bei geneigten Linien bezieht sich dabei auf die Länge, die auf der x-Achse verändert wird. Für die Längen von geneigten Linien besteht eine Mindestlänge, die bei etwa 10pt (bzw. 3.6mm) liegt – Linien mit kleinerer Länge werden nicht gezeichnet.

Gerade Pfeile

Pfeile werden über
[cc_latex]
\vector(dx,dy){länge}
[/cc_latex]
erzeugt und besitzen die selben Einschränkungen wie Gerade Linien. Einzig für die Zahlenpaare stehen nur die Werte 0,1,..,4 zur Verfügung sowie die negativen Werte derselben. Der Pfeil beginnt dabei an der über [cci lang=’latex‘]\put[/cci] bzw. [cci lang=’latex‘]\multiput[/cci] spezifizierten Stelle, die Pfeilspitze ist am anderen Ende der Linie.

Kreise

Kreise werden mit den Befehlen [cci lang=’latex‘]\circle{durchmesser}[/cci] respektive [cci lang=’latex‘]\circle*{durchmesser}[/cci] erstellt. Die Positionierung über den [cci lang=’latex‘]\put[/cci]-Befehl bezieht sich dabei auf den Kreismittelpunkt. Die [cci]*[/cci]-Form erzeugt dabei einen gefüllten Kreis in der aktuellen Druckerfarbe. Für die Kreise gibt es Einschränkungen bezüglich der Größe. Kreise stehen dabei für Durchmesser von 1pt bis 16pt in den Abstufungen von 1pt sowie von 20pt bis 40pt in den Abstufungen von 4pt zur Verfügung. Gefüllte Kreise sind nur für die Durchmesser 1pt bis 15pt in den Abstufungen von 1pt verfügbar.

Beispiel
[cc_latex]
\setlength{\unitlength}{1cm}
\begin{picture}(4,2)
\put(1,1){\circle{0.5}}
\put(3,1){\circle*{0.5}}
\end{picture}
[/cc_latex]
exp_circle

Ovale

Ein Oval bedeutet in der [cci]picture[/cci]-Umgebung ein Rechteck mit abgerundeten Ecken. D.h. die Ecken sind durch Kreisviertel ersetzt und für die Kreisviertel werden die größtmöglichen Kreisradien verwendet. Das Kommando hierfür lautet
[cc_latex]\oval(x_dim,y_dim)[teil][/cc_latex]
Der Positionierungsbefehl bezieht sich beim Oval auf den Mittelpunkt desselben.

Der optionale Parameter [cci]teil[/cci] spezifiziert, welcher Teil des Ovals nur gezeichnet werden soll und bietet die Möglichkeit, Halbovale zu erzeugen. Für diesen Parameter stehen die Werte

  • [cci]t[/cci] für das obere Halboval
  • [cci]b[/cci] für das untere Halboval
  • [cci]l[/cci] für das linke Halboval
  • [cci]r[/cci] für das rechte Halboval

zur Verfügung. Durch Kombination der optionalen Parameter können Viertelovale erzeugt werden.

Bei Halbovalen beziehen sich Breiten- und Höhenangaben immer auf das Ganzoval, ebenso der Positionierungsbefehl.

Beispiele
Komplettes Oval [cc_latex]
\begin{picture}(5.5,2.5)
\put(3.0,0.75){\oval(4.0,1.5)}
\end{picture}
[/cc_latex]
exp_oval_1
Untere Hälfte [cc_latex]
\begin{picture}(5.5,2.5)
\put(3.0,0.75){\oval(4.0,1.5)[b]}
\end{picture}
[/cc_latex]
exp_oval_2
Obere Hälfte [cc_latex]
\begin{picture}(5.5,2.5)
\put(3.0,0.75){\oval(4.0,1.5)[t]}
\end{picture}
[/cc_latex]
exp_oval_3
Linke Hälfte [cc_latex]
\begin{picture}(5.5,2.5)
\put(3.0,0.75){\oval(4.0,1.5)[l]}
\end{picture}
[/cc_latex]
exp_oval_4
Rechte Hälfte [cc_latex]
\begin{picture}(5.5,2.5)
\put(3.0,0.75){\oval(4.0,1.5)[r]}
\end{picture}
[/cc_latex]
exp_oval_5
Linke untere Hälfte
Rechte obere Hälfte
[cc_latex]
\begin{picture}(5.5,2.5)
\put(3.0,0.75){\oval(4.0,1.5)[bl]}
\put(3.0,0.75){\oval(4.0,1.5)[tr]}
\end{picture}
[/cc_latex]
exp_oval_6

Bezier-Kurven

Die [cci]picture[/cci]-Umgebung unterstützt quadratische Bezier-Kurven. Die Syntax hierfür ist:
[cc_latex]
\qbezier[num](xa,ya)(xb,yb)(xc,yc)
[/cc_latex]
Hierbei wird eine Kurve zwischen den anzugebenden Punkten [cci]A = (xa,ya)[/cci] und [cci]C = (xc,yc)[/cci] gezeichnet. Der Punkt [cci]B = (xb,yb)[/cci] ist ein Kontrollpunkt, der die Krümmung der Kurve angibt, indem er die Tangente für die Gerade (AB) und (BC) vorgibt. Der Parameter [cci]num[/cci] gibt die Anzahl der Punkte an, die entlang der Kurve ausgegeben werden. Wird hier kein Wert angegeben, so wird eine durchgezogene Linie gezeichnet, bei einer Angabe, werden [cci]num + 1[/cci] Punkte entlang der Linie ausgegeben. Die Dicke der Kurvenpunkte kann über
[cc_latex]\linethickness{strichdicke}[/cc_latex]
spezifiziert werden, wobei [cci]strichdicke[/cci] eine Maßangabe (Zahl mit Maßeinheit) ist. Je nach Wahl der drei Punkte können mit [cci_latex]\qbezier[/cci_latex] auch Kreise angenähert werden (hierfür würde man 4 [cci_latex]\qbezier[/cci_latex]-Kurven benötigen) oder auch Linien mit beliebiger Steigung (im Gegensatz zum [cci_latex]\line[/cci_latex]-Kommando). Dies wird jedoch mit einem höheren Rechenaufwand erkauft.