Asymptote: Wie erstelle ich eine Lücke in einem Segment, um eine Beschriftung einzufügen?

Asymptote: Wie erstelle ich eine Lücke in einem Segment, um eine Beschriftung einzufügen?

Ich frage mich, wie man in einem Segment eine Lücke macht, um eine Beschriftung einzufügen. In meinem Beispielcode hätte ich die Beschriftung „16“ idealerweise gerne in einer Lücke in der Mitte des mit einem Balken versehenen Segments.

Gibt es außerdem eine effizientere Möglichkeit, das Endbalkensegment so zu formatieren, dass es parallel zu dem Segment verläuft, das es misst?

Danke.

\documentclass{article}
\usepackage{asymptote}

\begin{document}

\begin{asy}
import olympiad;
import cse5;
size(4cm);
pair G,T,P,Q,A,B;
G=(0,0); T=(9,0); P=(16,0); Q=(9,-7.937);A=(0,2); B=(16,2);
draw(G--Q--P--G);
draw(Q--T);
draw(A--B, Bars);
draw(rightanglemark(G,T,Q,45));
draw(rightanglemark(P,Q,G,45));
label("$y$",align=N,point(G--T,0.5));
label("$12$",align=SW,point(G--Q,0.5));
label("$16$",midpoint(A--B),N);
\end{asy}

\end{document}

Antwort1

Dies ist fast wörtlich übernommen aus dem Beispiel auf S. 42 vondieses nette Tutorial. Ich bevorzuge auch den asypictureBStil des Autors des Handbuchs. Damit müssen Sie nur noch pdflatex -shell-escapeausführen

\documentclass{standalone}
\usepackage{asypictureB}

\begin{document}

\begin{asypicture}{name=Label}
import olympiad;
//import cse5;
size(4cm);
pair G,T,P,Q,A,B;
G=(0,0); T=(9,0); P=(16,0); Q=(9,-7.937);A=(0,2); B=(16,2);
draw(G--Q--P--G);
draw(Q--T);
draw(rightanglemark(G,T,Q,45));
draw(rightanglemark(P,Q,G,45));
label("$y$",align=N,point(G--T,0.5));
label("$12$",align=SW,point(G--Q,0.5));
//label("$16$",midpoint(A--B),N);
pen fillpen = white;
Label mylabel = Label("$16$", align=(0,0), position=MidPoint,
filltype=Fill(fillpen));
draw(A--B, L=mylabel, Bars);
\end{asypicture}

\end{document}

zu bekommen

Bildbeschreibung hier eingeben

Beachten Sie, dass heruntergeladen olympiad.asyvonDiese Internetseite. cse5.asywar nicht nötig.

Antwort2

Eine andere Möglichkeit ist die Verwendung geometry.asyvon which provides markrightangleund einer distanceRoutine. Den Code finden Sie hier

  import geometry;
  size(4cm);
  pair G,T,P,Q;
  G=(0,0); T=(9,0); P=(16,0); Q=(9,-7.937);
  draw(G--Q--P--G);
  draw(Q--T);
  perpendicularmark(T, dir(-135));
  markrightangle(P,Q,G);
  label("$y$",align=N,point(G--T,0.5));
  label("$12$",align=SW,point(G--Q,0.5));

  distance("$16$",G,P,-6mm);

und das Ergebnis

Bildbeschreibung hier eingeben

verwandte Informationen