TikZ で作成した塗りつぶされた四角形の背後に表示される線

TikZ で作成した塗りつぶされた四角形の背後に表示される線

線が交差する塗りつぶされた四角形の 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 で機能するソリューションが必要です。それが要求しすぎではないことを願っています。

特に、共同作業するプロジェクトでこのコードを使用する予定であり、現時点では ShareLaTeX と writeLaTeX の両方がそのバージョンの pgf を使用しているため、pgf 2.10 をサポートする実用的なソリューションが必要です。

何も新しい回答が見つからない場合は、最も投票数が多かった回答を喜んで受け入れます。

答え1

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}

コマンドの後にappendを使用する

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}

パスの後ろの例

関連情報