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 asypictureB
Stil des Autors des Handbuchs. Damit müssen Sie nur noch pdflatex -shell-escape
ausfü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
Beachten Sie, dass heruntergeladen olympiad.asy
vonDiese Internetseite. cse5.asy
war nicht nötig.
Antwort2
Eine andere Möglichkeit ist die Verwendung geometry.asy
von which provides markrightangle
und einer distance
Routine. 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