
에서 가져온 다음 내용을 바탕으로 pstricks.tex
,
\def\solid@star{%
\if@star
\pslinewidth=\z@
\psdoublelinefalse
\def\pslinestyle{none}%
\def\psk@fillstyle{\psfs@solid}%
\let\psfillcolor\pslinecolor
\fi}
별표 표시된 개체
\xxx*[linecolor=<color>]
~와 비슷하다
\xxx[fillstyle=solid,fillcolor=<color>,linestyle=none,linewidth=0]
그러나 이러한 유사성은 클리핑 경로로 사용할 때 더 이상 유지되지 않습니다. 다음 예에서는 빨간색 실선 직사각형이 원으로 잘립니다.
첫 번째 클리핑에서는 별표 표시된 버전을 사용 \pscircle*[linecolor=blue]
하고 파란색 원을 생성합니다. 그러나 두 번째 클리핑은 이중을 사용 \pscircle[fillstyle=solid,fillcolor=blue,linestyle=none,linewidth=0]
하고 빨간색 원을 생성합니다. 따라서 두 번째 클리핑은 예상한 결과를 생성합니다.
\documentclass[border=12pt]{standalone}
\usepackage{pstricks}
\begin{document}
\begin{pspicture}[showgrid=top](4,4)
\psclip{\pscircle*[linecolor=blue](2,2){1}}
\psframe*[linecolor=red](4,4)
\endpsclip
\end{pspicture}
\qquad
\begin{pspicture}[showgrid=top](4,4)
\psclip{\pscircle[fillstyle=solid,fillcolor=blue,linestyle=none,linewidth=0](2,2){1}}
\psframe*[linecolor=red](4,4)
\endpsclip
\end{pspicture}
\end{document}
무엇이 이러한 차이를 만드는가?
답변1
당신 말이 맞습니다. 둘 다 \pscircle*[linecolor=blue](2,2){1}
동일한 \pscircle[fillstyle=solid,fillcolor=blue,linestyle=none,linewidth=0](2,2){1}
닫힌 파란색 원이 됩니다. 그러나 해당 명령의 순서 postscript
는 다소 다릅니다. 명령 \pscircle
...
0 360 arc closepath gsave 0 0 1 setrgbcolor
1. .setopacityalpha fill grestore clip
먼저 원형 경로를 작성하고, 를 사용하여 현재 그래픽 상태를 저장하고 gsave
, 현재 설정 color
및 을 설정하고, 원을 채우고 를 alpha
사용하여 그래픽 상태를 복원하므로 색상/채우기 명령이 에서 필터링됩니다 .grestore
clip
clipping path
반면에 명령은 \pscircle*
다른 postscript
시퀀스를 생성합니다.
...
0 0 1 setrgbcolor 56.90549 56.90549 28.45274
1. .setopacityalpha SD clip
여기서는 을 SD
의미하므로 0 360 arc fill
색상/채우기 명령은 클리핑 경로에 유지되며 분명히 클리핑 후에 적용됩니다.
답변2
클리핑길는폐곡선그리고~ 아니다채워진 지역. 클리핑 경로에 스타 버전을 사용하면 예기치 않은 동작이 발생합니다.