Ausgehend von der Frage Linie nicht durchgängig in selbstdefiniertem TikZ-Pattern ergibt sich beim selbst definierten "north west pattern" zusätzlich zu den Lücken in den Linien das Problem, dass die Linien gegeneinander verschoben sind.

Open in Online-Editor
\documentclass[12pt,a4paper]{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage{tikz}
\usetikzlibrary{patterns}

\makeatletter
\pgfdeclarepatternformonly[\LineSpace]{my north west lines}{\pgfqpoint{-1pt}{-1pt}}
{\pgfqpoint{\LineSpace}{\LineSpace}}{\pgfqpoint{\LineSpace}{\LineSpace}}%
{
  \pgfsetcolor{\tikz@pattern@color}
  \pgfsetlinewidth{0.4pt}
  \pgfpathmoveto{\pgfqpoint{0pt}{\LineSpace}}
  \pgfpathlineto{\pgfqpoint{\LineSpace + 0.1pt}{-0.1pt}}
  \pgfusepath{stroke}
}
\newdimen\LineSpace
\tikzset{
  line space/.code={\LineSpace=#1},
  line space=3pt
}
\makeatother

\begin{document}
  \begin{tikzpicture}
    \draw[red,fill,pattern color=blue,line space=10pt,pattern=my north west lines] (0,0) rectangle (2,3);
  \end{tikzpicture}

\end{document}

Pattern Wie lässt sich dies beheben?

gefragt 23 Dez '16, 22:22

tom75's gravatar image

tom75
2.2k187884
Akzeptiert-Rate: 57%


Wie schon bei der verlinkten Frage, musst Du bei den BoundingBox-Angaben die Liniendicke berücksichtigen, damit das Clipping auf die BoundingBox die Linienenden nicht anschneidet und damit Kerben in die Linien schlägt.

Darüber hinaus hast Du bei der Pfadangabe selbst den Versatz eingebaut.

Behebt man beide Fehler:

Open in Online-Editor
\documentclass[12pt,a4paper]{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage{tikz}
\usetikzlibrary{patterns}

\makeatletter
\pgfdeclarepatternformonly[\LineSpace]{my north west lines}
  {\pgfqpoint{-0.2pt}{-0.2pt}}% Linke untere Ecke der BoundingBox (halbe
                              % Liniendicke berücksichtigt)
  {\pgfpoint{\LineSpace+0.2pt}{\LineSpace+0.2pt}}% Rechte obere Ecke der
                                % BoundingBox (halbe Liniendicke berücksichtigt)
  {\pgfqpoint{\LineSpace}{\LineSpace}}%
{
  \pgfsetcolor{\tikz@pattern@color}
  \pgfsetlinewidth{0.4pt}
  \pgfpathmoveto{\pgfqpoint{0pt}{\LineSpace}}
  \pgfpathlineto{\pgfqpoint{\LineSpace}{0pt}}% Versatz entfernt
  \pgfusepath{stroke}
}
\newdimen\LineSpace
\tikzset{
  line space/.code={\LineSpace=#1},
  line space=3pt
}
\makeatother

\begin{document}
  \begin{tikzpicture}
    \draw[red,fill,pattern color=blue,line space=10pt,pattern=my north west lines] (0,0) rectangle (2,3);
  \end{tikzpicture}

\end{document}

bekommt man:

korrekte Linien

Permanenter link

beantwortet 24 Dez '16, 13:24

saputello's gravatar image

saputello
11.1k154365
Akzeptiert-Rate: 51%

bearbeitet 24 Dez '16, 13:25

@saputello: Vielen Dank! Ich mache seit 7 Uhr heute daran rum. Den Versatz hatte ich wegbekommen. Aber die Zacke blieb drin. Grund: Ich habe \pgfqpoint nicht durch \pgfpoint ersetzt und mich gewundert, warum die Addition eines Wertes überhaupt keine Änderung bewirkt.

(24 Dez '16, 13:36) tom75
Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs fügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×728
×6

gestellte Frage: 23 Dez '16, 22:22

Frage wurde gesehen: 5,099 Mal

zuletzt geändert: 24 Dez '16, 13:36