
Betrachten Sie das folgende Beispiel.
Code
\documentclass{article}
\usepackage{pstricks-add}
\begin{document}
\begin{figure}
\psset{unit=0.05}
\begin{pspicture}(120,216)
\pnodes{P}(0,0)(0,120)(186,120)(216,120)(216,0)(186,0)(186,30)(186,90)
\pspolygon(P0)(P1)(P3)(P4)
\pcline[offset=12pt]{|<->|}(P1)(P3)
\ncput*[nrot=:U]{216}
\pcline[offset=12pt]{|<->|}(P3)(P4)
\ncput*[nrot=:U]{120}
\pspolygon[linestyle=none,fillstyle=vlines](P2)(P3)(P4)(P5)
\pswedge[linestyle=none,fillstyle=solid,fillcolor=white](P6){30}{270}{90}
\pswedge[linestyle=none,fillstyle=solid,fillcolor=white](P7){30}{270}{90}
\psarc(P6){30}{270}{90}
\psarc(P7){30}{270}{90}
\psdot(P6)
\psdot(P7)
\end{pspicture}
\end{figure}
\end{document}
Ausgabe
Frage
Der obige Code scheint die falsche Methode zum Erstellen der Figur zu sein. Ich denke, \pscustom
es ist die richtige Methode, aber ich kann nicht herausfinden, wie ich ihn verwenden soll. Wie erstelle ich die Figur am „besten“ mit PSTricks? (Ich würde sehr gerne sehen, wie es gemacht wird, und nicht nur einen Kommentar darüber bekommen, ob ich dieses oder jenes verwenden soll.)
Antwort1
Zwei Rahmen und zwei Bögen oder \pscustom
:
\documentclass{article}
\usepackage{pstricks-add}
\begin{document}
\psset{unit=1pt}
\begin{pspicture}(240,140)
\psframe[dimen=middle](216,120)
\psframe[fillstyle=vlines,linestyle=none](186,0)(216,120)
\psarc[fillstyle=solid,fillcolor=white](186,30){30}{-90}{90}
\psarc[fillstyle=solid,fillcolor=white](186,90){30}{-90}{90}
\psdots(186,30)(186,90)
\pcline[offset=12pt]{|<->|}(0,120)(216,120) \ncput*{216}
\pcline[offset=12pt]{|<->|}(216,120)(216,0) \ncput*[nrot=:U]{120}
\end{pspicture}
\begin{pspicture}(240,140)
\psframe[dimen=middle](216,120)
\pscustom[fillstyle=vlines,hatchcolor=red]{%
\psarc(186,30){30}{-90}{90}
\psarc(186,90){30}{-90}{90}
\psline(186,120)(216,120)(216,0)
}
\psdots(186,30)(186,90)
\pcline[offset=12pt]{|<->|}(0,120)(216,120) \ncput*{216}
\pcline[offset=12pt]{|<->|}(216,120)(216,0) \ncput*[nrot=:U]{120}
\end{pspicture}
\end{document}
Da \psframe
ein geschlossener Pfad gezeichnet wird (erforderlich für korrektes Zuschneiden), kann dieser auch als letzte Komponente hinzugefügt werden, \pscustom
wenn man die Zuschneidefunktion verwendet:
\documentclass{article}
\usepackage{pstricks-add}% http://tug.org/PSTricks/main.cgi/
\begin{document}
\begin{figure}
\psset{unit=1pt}
\begin{pspicture}(240,140)
\psclip{\psset{linestyle=solid}
\pscustom{
\psarc(186,30){30}{-90}{90}
\psarc(186,90){30}{-90}{90}
\psframe[dimen=middle](216,120)
}
}
\psframe[fillstyle=vlines,linestyle=none](186,0)(216,120)
\endpsclip
\psdots(186,30)(186,90)
\pcline[offset=12pt]{|<->|}(0,120)(216,120) \ncput*{216}% Top dimension
\pcline[offset=12pt]{|<->|}(216,120)(216,0) \ncput*[nrot=:U]{120}% Right dimension
\end{pspicture}
\end{figure}
\end{document}
Dies funktioniert auch aufgrund der Struktur und der Art \psframe
der Einzeichnung (von Mitte-links aus gegen den Uhrzeigersinn).
Antwort2
Ich versuche, die vorhandenen Antworten zu verbessern.
- Der Pfeilspezifizierer
|<->|
sollte geändert werden, um|<*->|*
die|
-ähnlichen Spitzen richtig auszurichten. - Es ist besser, es global zu übergeben,
dimen=middle
als\pscustom
es lokal für jeden einzelnen Befehl anzugeben, wasdimen=outer
standardmäßig der Fall ist. Da der ausgeschnittene Bereich nach dem Zeichnen des Clipper-Pfades gezeichnet wird, ist es im Allgemeinen erforderlich, den Clipper-Pfad nach dem Ausschneiden erneut zu zeichnen.
Wenn Sie verstehen möchten, was ich meine, ich habe
hatchcolor=red,hatchsep=1pt
den Ausschnitt\psframe
in Werners Bearbeitung ergänzt. Ursprünglich ist Werners Einstellunghatchcolor=black
so, dass es nicht auffällt, aber jetzt mit der Farbänderung ist der „Defekt“ optisch wie folgt offensichtlich.Deshalb ist nach dem Scheren ein Nachglätten notwendig.
Die Verwendung
unit=1pt
sollte vermieden werden, da das Navigationsraster unübersichtlich wird.
\documentclass[pstricks,border=12pt]{standalone}
\usepackage{pst-node}
\def\Path[#1]{%
\pscustom[dimen=middle,#1]{
\psarc(186,30){30}{-90}{90}
\psarc(186,90){30}{-90}{90}
\psframe(216,120)
}\ignorespaces
}
\begin{document}
\psset{unit=1pt,linewidth=3pt}
\begin{pspicture}(240,140)
\psclip{\Path[linestyle=none]}
\psframe[fillstyle=vlines,hatchcolor=red,hatchsep=1pt,linestyle=none](186,0)(216,120)
\endpsclip
\Path[]
\psdots(186,30)(186,90)
\pcline[offset=12pt]{|<*->|*}(0,120)(216,120) \ncput*{216}% Top dimension
\pcline[offset=12pt]{|<*->|*}(216,120)(216,0) \ncput*[nrot=:U]{120}% Right dimension
\end{pspicture}
\end{document}