TikZ: 직사각형 노드에 대한 광선

TikZ: 직사각형 노드에 대한 광선

일부 텍스트가 포함된 컬러 노드에 글로우 효과를 사용하고 싶습니다. 안타깝게도 키만 찾을 수 있습니다 circular glow. 아래 예를 참조하세요.

\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{shadows}

\begin{document}

\begin{tikzpicture}
\clip (-2, -3) rectangle (2,3);
\node[circular glow={fill=green}, rectangle, text width=2.5cm, align=justify] {Given the rectangular text area, rectangular glow would be desirable to also cover the corners.};
\end{tikzpicture}

\end{document}

여기에 이미지 설명을 입력하세요

위의 원형 영역과 비슷한 빛을 내는 직사각형 색상 영역(예: "직사각형 빛")을 얻을 수 있는 방법이 있습니까?

답변1

\shade명시적인 좌표를 입력하지 않는 옵션 을 활용하여 음영 영역을 네 부분으로 "분할" 할 수 있습니다 local bounding box.

또한 두 개의 인수를 사용하여 를 만들었습니다 \pic. 첫 번째는 제 예에서 음영 처리하려는 직사각형 영역의 이름입니다 mybox. 두 번째는 사용하려는 색상입니다(제 예에서는) green.
물론 다른 매개변수를 추가할 수도 있습니다. 예를 들어 음영 처리를 위한 다른 색상을 추가할 수 있습니다. 제 예에서는 "흰색"이 수정되었습니다.

\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{shadings, backgrounds}
\tikzset{
    pics/myshade/.style 2 args={
        code = {%
          \begin{scope}[on background layer]
            \shade[upper left=white, upper right=#2,
            lower left=white,lower right=white]
            (#1.south west) rectangle (#1.center);
            \shade[upper left=#2, upper right=white,
            lower left=white,lower right=white]
            (#1.south) rectangle (#1.east);
            \shade[upper left=white, upper right=white,
            lower left=#2,lower right=white]
            (#1.center) rectangle (#1.north east);
            \shade[upper left=white, upper right=white,
            lower left=white,lower right=#2]
            (#1.west) rectangle (#1.north);
          \end{scope}
        }
    }
}


\begin{document}
    \begin{tikzpicture}[local bounding box=mybox]
        \clip (-2, -3) rectangle (2,3);
        \pic {myshade={mybox}{green}};
        \node[rectangle, text width=2.5cm, align=justify] 
        {Given the rectangular text area, rectangular glow would be desirable to also cover the corners.};
    \end{tikzpicture}
\end{document}

여기에 이미지 설명을 입력하세요

귀하의 경우에는 이 옵션이 on background layer필요하지 않지만 그림을 myshade보다 일반적으로 만들기 위해 옵션을 추가했습니다(영역을 덮어쓰는 것을 방지하려면 다음 예를 참조하십시오. on background layer텍스트가 mynode음영 아래에 숨겨지지 않을 것입니다).

myshade직사각형 영역을 음영 처리하기 위해 그림을 사용하는 방법을 보여주기 위한 것입니다 . 경계 상자는 빨간색으로 음영 처리되고 노드는 청록색으로 음영 처리됩니다.

\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{shadings, backgrounds}
\tikzset{
    pics/myshade/.style 2 args={
        code = {%
          \begin{scope}[on background layer]
            \shade[upper left=white, upper right=#2,
            lower left=white,lower right=white]
            (#1.south west) rectangle (#1.center);
            \shade[upper left=#2, upper right=white,
            lower left=white,lower right=white]
            (#1.south) rectangle (#1.east);
            \shade[upper left=white, upper right=white,
            lower left=#2,lower right=white]
            (#1.center) rectangle (#1.north east);
            \shade[upper left=white, upper right=white,
            lower left=white,lower right=#2]
            (#1.west) rectangle (#1.north);
          \end{scope}
        }
    }
}


\begin{document}
    \begin{tikzpicture}[local bounding box=mybox]
        \clip (-2, -3) rectangle (2,3);
        \pic {myshade={mybox}{red}};
        \node[rectangle, text width=2.5cm, align=justify] (mynode)
        {Given the rectangular text area, rectangular glow would be desirable to also cover the corners.};
        \pic {myshade={mynode}{cyan}};
    \end{tikzpicture}
\end{document}

여기에 이미지 설명을 입력하세요

답변2

설마. 매뉴얼을 살펴 보겠습니다.

수동

그래서 당신이 할 수 있는 일은 general shadow. scale신중 하게 선택하면 fill color꽤 가까워집니다.

페이딩을 추가하고 해당 라이브러리를 볼 수도 있지만 원하는 대로 스케일링된 페이딩을 제공하지 않습니다(N, W, S, E, 원형만).

의견: 가독성 측면에서는 drop shadow그다지 나쁘지 않을 수도 있습니다. 그런 효과가 필요한 경우 BTW. TeX/LaTeX는 책과 같은 전문 문서 조판에서 유래했다는 점을 기억하세요. 대체로 그것은 내가 좋아하는 MS-Office-path에 여전히 저항합니다. 대개 이러한 보다 제한적인 접근 방식은 시각적 메시지를 다르게 전달하는 데 도움이 됩니다.

클립을 충분히 큰 테두리로 교체했습니다.

결과

\documentclass[border=6mm]{standalone}
\usepackage{tikz}
\usetikzlibrary{shadows}

\begin{document}

 \begin{tikzpicture}
%   \clip (-2, -3) rectangle (2,3);
    \node[
        circular glow={fill=green}, 
        rectangle,
        text width=2.5cm, 
        align=justify
    ] at (0,0)
    {Given the rectangular text area, rectangular glow would be desirable to also cover the corners.};
    
    \node[
        general shadow={fill=green!45,shadow scale=1.05}, 
%       drop shadow, fill=green,
        rectangle, fill=green,
        text width=2.5cm, 
        align=justify
    ] at (5,0)
    {Given the rectangular text area, rectangular glow would be desirable to also cover the corners.};
    
 \end{tikzpicture}

\end{document}

관련 정보