
선이 교차하는 채워진 직사각형인 TikZ 스타일을 만들어야 합니다.
지금 직면하고 있는 문제는 직사각형이 색상으로 채워지면 직사각형 뒤에 선이 그려지고 위에서 필요하다는 것입니다.
MWE:
\documentclass[12pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{calc, shapes.geometric}
\tikzstyle{mainfig} = [
minimum width=16mm,
minimum height=5mm,
text centered,
draw=black,
fill=orange!80,
line width=1pt,
rectangle,
append after command={
\pgfextra{
\draw [line width=2pt]
($(\tikzlastnode.north west)+(3mm,5mm)$)--
($(\tikzlastnode.south west)+(3mm,-5mm)$);
}
}
]
\begin{document}
\begin{tikzpicture}[font=\footnotesize]
\node (test) [mainfig] {\ldots};
\end{tikzpicture}
\end{document}
이것이 내가 얻는 것입니다:
append after command
채워진 그림 위에 그려진 선을 어떻게 강제로 그릴 수 있습니까 ?
업데이트:
이 코드는 pgf 2.10이나 3.0.0에서 작동하지 않는다는 것을 확인했습니다.
또한 @PaulGessler 및 @PaulGaborit의 답변 덕분에 pgf 3.0.0을 사용하면 이 문제를 완벽하게 해결할 수 있다는 것을 확인했지만 지금은 두 버전의 pgf 모두에서 작동하는 솔루션을 원합니다. 나는 그것이 너무 많은 것을 요구하지 않기를 바랍니다.
특히, 공동으로 작업할 프로젝트에서 이 코드를 사용할 것이기 때문에 pgf 2.10을 지원하는 작업 솔루션이 필요하며 현재 ShareLaTeX와 writeLaTeX는 모두 해당 버전의 pgf를 사용합니다.
새로운 내용이 나타나지 않으면 가장 많은 표를 얻은 답변을 기꺼이 받아들이겠습니다.
답변1
한 가지 방법은 레이어를 사용하는 것입니다. 로 전경( fg
) 레이어를 선언 \pgfdeclarelayer{fg}
하고 로 레이어 순서(아래에서 위로)를 설정합니다 \pgfsetlayers{main,fg}
.
그런 다음 기반 환경 어디에서나 pgf
사용할 수 있습니다.
\begin{pgfonlayer}{fg}
<drawing commands>
\end{pgfonlayer}
전경에 그리도록 합니다.
참고: shapes.geometric
라이브러리는 필수가 아닙니다. rectangle
기본 패키지에 포함되어 있습니다.
코드
\documentclass[12pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{calc}
\pgfdeclarelayer{fg} % declare foreground layer
\pgfsetlayers{main,fg} % set layer order
\tikzstyle{mainfig} = [
minimum width=16mm,
minimum height=5mm,
text centered,
draw=black,
fill=orange!80,
line width=1pt,
rectangle,
append after command={
\pgfextra{
\begin{pgfonlayer}{fg}
\draw [line width=2pt]
($(\tikzlastnode.north west)+(3mm,5mm)$)--
($(\tikzlastnode.south west)+(3mm,-5mm)$);
\end{pgfonlayer}
}
}
]
\begin{document}
\begin{tikzpicture}[font=\footnotesize]
\node (test) [mainfig] {\ldots};
\end{tikzpicture}
\end{document}
출력
답변2
키 append after command
는 노드를 그린 후에 아무것도 추가하지 않습니다. 노드 항목이 나타나는 현재 경로에 자료를 추가합니다. 다음은 사용법을 설명하는 예입니다.
\documentclass[tikz]{standalone}
\begin{document}
\begin{tikzpicture}
\draw (0,0) -- (1,0) node{A} -- (2,0);
\draw[red] (0,1) -- (1,1) node[append after command={-- +(0,1)}] {A} -- (2,1);
\end{tikzpicture}
\end{document}
TikZ가 일부 노드가 있는 경로를 그릴 때 먼저 경로를 그리고 모든 노드를 수집한 다음 노드를 그립니다. TikZ 3.0을 사용하면 behind path
노드에 옵션을 적용하여 현재 경로 앞에 그릴 수 있습니다. 다음은 사용법의 예입니다( 와 결합 append after command
).
\documentclass[tikz]{standalone}
\usetikzlibrary{calc}
\tikzset{
mainfig/.style={
minimum width=16mm,minimum height=5mm,text centered,
draw=black,fill=orange!80,
line width=1pt,rectangle,
append after command={
($(\tikzlastnode.north west)+(3mm,5mm)$)--
($(\tikzlastnode.south west)+(3mm,-5mm)$)
},
},
}
\begin{document}
\begin{tikzpicture}[font=\footnotesize]
\draw[line width=2pt,draw=blue] node [mainfig] {\ldots};
\draw[line width=2pt,draw=red] (0,2) node [behind path,mainfig] {\ldots};
\end{tikzpicture}
\end{document}