Gedrehtes Gitternetz erstellen (Tikz)

Tabellen und Grafiken erstellen und anordnen


Gast

Re: Und, weiter?

Beitrag von Gast »

Stamm- hat geschrieben:Ach, ja? Und wo? Lässt sich diese Vermutung mit einem Zitat aus der Fragestellung untermauern? Die geäußerten Wünsche waren jedenfalls nicht konkret.
yoyoba hat geschrieben:der äußere Rand/äußere Begrenzung sollte zudem dicker sein als die Linien innerhalb des Kästchens...
Für mich ist das ziemlich sehr deutlich. ;-)

Gast

Beitrag von Gast »

yoyoba hat geschrieben:Eine abschließende Frage hätte ich aber noch. Wenn ich mir dieses Gitternetz einmal erstellt habe, kann ich dies als Vorlage in dem aktuellen, oder in einem externen Dokument speichern... Z.B. unter dem Namen "Gitternetz" und es bei späterer Verwendung dann einfach mit Hllfe des Namens einfügen um nicht jedesmal den Code komplett einfügen zu müssen?
Vielleicht könntest du einfach einmal erklären, was du damit eigentlich vor hast?

Für mich riecht das stark danach, dass du eigentlich ein Füllmuster haben willst. Das geht mit der patterns-Library (siehe [d]pgf[/d]-Anleitung, Kapitel 60) eigentlich ganz einfach. Problem dabei ist allenfalls, dass es zwar Füllmuster für diagonale Linien gibt, aber immer nur für eine Richtung. Natürlich könnte man einfach zweimal die gleiche Figure (bei dir ein Quadrat) zeichnen und einmal in Nordwest- und einmal in Nordost-Richtung schraffieren. Man kann aber auch einfach ein neues Füllmuster definieren:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{patterns}

% Neues Füllmuster als Vereinigung von north east lines und north west lines:
\pgfdeclarepatternformonly{cross lines}{\pgfqpoint{-1pt}{-1pt}}{\pgfqpoint{4pt}{4pt}}{\pgfqpoint{3pt}{3pt}}%
{
  \pgfsetlinewidth{0.4pt}
  \pgfpathmoveto{\pgfqpoint{0pt}{0pt}}
  \pgfpathlineto{\pgfqpoint{3.1pt}{3.1pt}}
  \pgfpathmoveto{\pgfqpoint{0pt}{3pt}}
  \pgfpathlineto{\pgfqpoint{3.1pt}{-0.1pt}}
  \pgfusepath{stroke}
}

\begin{document}
\begin{tikzpicture}
\draw[pattern=cross lines,ultra thick] (0,0) rectangle (2,2);
\end{tikzpicture}

\end{document}
Kopiert man einfach
% Neues Füllmuster als Vereinigung von north east lines und north west lines:
\pgfdeclarepatternformonly{cross lines}{\pgfqpoint{-1pt}{-1pt}}{\pgfqpoint{4pt}{4pt}}{\pgfqpoint{3pt}{3pt}}%
{
  \pgfsetlinewidth{0.4pt}
  \pgfpathmoveto{\pgfqpoint{0pt}{0pt}}
  \pgfpathlineto{\pgfqpoint{3.1pt}{3.1pt}}
  \pgfpathmoveto{\pgfqpoint{0pt}{3pt}}
  \pgfpathlineto{\pgfqpoint{3.1pt}{-0.1pt}}
  \pgfusepath{stroke}
}
in eine neue Datei meinfuellmuster.tex, kann man diese Datei natürlich in der Dokumentpräambel mit \input{meinfuellmuster.tex} laden.

Etwas schlauer ist, wenn man die Datei gleich pgflibrarycrosslinepattern.code.tex nennt und darin auch gleich die patterns-Library lädt. Dann kann man das neue Muster einfach als Library laden. Hier einmal wie in Minimalbeispiel erklärt mit filecontents-Umgebung realisiert:
\begin{filecontents*}{pgflibrarycrosslinepattern.code.tex}
% pgflibrarycrosslinepattern.code.tex
% See <http://golatex.de/gedrehtes-gitternetz-erstellen-tikz-t18199.html>
\ProvidesFile{pgflibrarycrosslinepattern.code.tex}[2016/10/30 v0.1 combination
of north east and north west lines]
\usetikzlibrary{patterns}
\pgfdeclarepatternformonly{cross lines}{\pgfqpoint{-1pt}{-1pt}}{\pgfqpoint{4pt}{4pt}}{\pgfqpoint{3pt}{3pt}}%
{
  \pgfsetlinewidth{0.4pt}
  \pgfpathmoveto{\pgfqpoint{0pt}{0pt}}
  \pgfpathlineto{\pgfqpoint{3.1pt}{3.1pt}}
  \pgfpathmoveto{\pgfqpoint{0pt}{3pt}}
  \pgfpathlineto{\pgfqpoint{3.1pt}{-0.1pt}}
  \pgfusepath{stroke}
}
\end{filecontents*}

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{crosslinepattern}

\begin{document}
\begin{tikzpicture}
\draw[pattern=cross lines,ultra thick] (0,0) rectangle (2,2);
\end{tikzpicture}

\end{document}
Wenn du das laufen lässt, bekommst du auch gleich die entsprechende Datei. Wenn du diese wie unter »Wie kann ich Klassen oder Pakete verwenden, die nur als einzelne Datei bereitgestellt werden?« erklärt installierst, funktioniert die Zeile \usetikzlibrary{crosslinepattern} auch in anderen Dokumenten.

Nun könnte man das Ganze natürlich noch beliebig weiter treiben und beispielsweise für die Liniendicke und den Linienabstand Optionen definieren. Wenn du das willst, solltest du ggf. zuerst eine ausführliche LaTeX-Einführung studieren und dann in der [d]pgf[/d]-Anleitung nachlesen, wie das mit den Optionen funktioniert. Natürlich musst du darin dann auch unbedingt die für oben die Pattern-Definition verwendeten Anweisungen nachlesen. Das versteht sich ja von selbst.

Aber vielleicht täusche ich mich ja auch und es geht gar nicht um ein Füllmuster. Deshalb wäre es eben so wichtig gewesen, von Anfang an zu erklären, worum es eigentlich geht.

yoyoba
Forum-Anfänger
Forum-Anfänger
Beiträge: 14
Registriert: Do 4. Sep 2014, 13:23

Beitrag von yoyoba »

Hallo zusammen,

vielen Dank für die super Antworten!

Zu der Frage, was ich letztendlich vorhabe: Ich möchte eine Grafik erstellen in der dieses Muster benötigt wird.

Ich habe mir die weitere Lösung auch einmal angesehen und sie ist genauso richtig wie die bisherigen.

Wenn ich dieses Muster als Datei abspeichere, kann ich es über input einfügen, aber wie kann ich dessen genaue Positionierung angeben? Ich stelle mir einfach vor, dass dieses Modul nur ein kleiner Teil einer Grafik ist. Ist dies einmal fertig (ist es ja) kann der Code aus dem gesamtcode herausfliegen und einfach importiert werden. Wie gesagt ich frage mich wie ich nun dessen genaue Positionierung angeben kann?

Danke, und ein schönes Restwochenende noch.

Grüße
Yoyoba

Gast

Beitrag von Gast »

Man kann das neue Muster genau wie alle anderen Muster der pattern-Library verwenden, also beispielsweise wie in der gezeigten \draw-Anweisung. Bitte lies wenigstens einmal die Grundlagen von [d]pgf[/d] und dann ggf. auch wie man Figuren füllt, sei es mit Farbe oder mit Muster.

Antworten