Linie hinter ausgefülltem Rechteck angezeigt, erstellt mit TikZ

Linie hinter ausgefülltem Rechteck angezeigt, erstellt mit TikZ

Ich muss einen TikZ-Stil erstellen, der ein ausgefülltes Rechteck mit einer kreuzenden Linie ist.

Das Problem, mit dem ich jetzt konfrontiert bin, besteht darin, dass, wenn das Rechteck mit einer Farbe gefüllt ist, die Linie hinter dem Rechteck gezeichnet wird und ich sie darüber brauche.

Das 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}

Das ist, was ich bekomme:

Bildbeschreibung hier eingeben

Wie kann ich erzwingen, dass die anschließend gezeichnete Linie append after commandüber der ausgefüllten Figur gezeichnet wird?


Aktualisieren:

Ich habe bestätigt, dass dieser Code weder mit pgf 2.10 noch mit 3.0.0 funktioniert.

Außerdem habe ich gesehen, dass dieses Problem dank der Antworten von @PaulGessler und @PaulGaborit mit pgf 3.0.0 perfekt lösbar ist, aber vorerst hätte ich gern eine Lösung, die für beide Versionen von pgf funktioniert. Ich hoffe, das ist nicht zu viel verlangt.

Insbesondere brauche ich eine funktionierende Lösung mit PGF-2.10-Unterstützung, da ich diesen Code in einem gemeinsamen Projekt verwenden werde und derzeit sowohl ShareLaTeX als auch writeLaTeX diese PGF-Version verwenden.

Wenn nichts Neues erscheint, akzeptiere ich gerne die Antwort mit den meisten Stimmen.

Antwort1

Eine Methode besteht darin, Ebenen zu verwenden. Deklarieren Sie die Vordergrundebene ( fg) mit \pgfdeclarelayer{fg}und legen Sie die Reihenfolge der Ebenen (von unten nach oben) mit fest \pgfsetlayers{main,fg}.

Dann pgfkönnen Sie überall in einer -basierten Umgebung

\begin{pgfonlayer}{fg}
  <drawing commands>
\end{pgfonlayer} 

in den Vordergrund zu zeichnen.

Hinweis: Die shapes.geometricBibliothek wird nicht benötigt. rectangleSie ist im Basispaket enthalten.

Der Code

\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}

Die Ausgabe

Bildbeschreibung hier eingeben

Antwort2

Der append after commandSchlüssel fügt nach dem Zeichnen des Knotens nichts an. Er fügt Material an den aktuellen Pfad an, in dem der Knoteneintrag erscheint. Hier ist ein Beispiel zur Veranschaulichung seiner Verwendung.

\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}

Verwendung von „Anhängen nach dem Befehl“

Wenn TikZ einen Pfad mit einigen Knoten zeichnet, zeichnet es zuerst den Pfad (und sammelt alle Knoten), dann zeichnet es die Knoten. Mit TikZ 3.0 können Sie die behind pathOption auf einen Knoten anwenden, um ihn vor dem aktuellen Pfad zu zeichnen. Hier ist ein Beispiel für die Verwendung (kombiniert mit 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}

Beispiel für „hinter dem Pfad“

verwandte Informationen