1. Es gelingt, die Kurven mittig über jedem Aufzählungspunkt zu positionieren:

1. Es gelingt, die Kurven mittig über jedem Aufzählungspunkt zu positionieren:

Ich möchte in LaTeX und dem Lindenmayer-System eine Z-Kurve zeichnen TikZ. Mir gelingt es aber nicht, die Kurven mittig über den einzelnen Bulletpoints zu platzieren. Außerdem finde ich keine elegante Möglichkeit, alle Kurven gleich groß zu halten.

Folgendes bekomme ich:

Bildbeschreibung hier eingeben

Hier ist mein Code:

\documentclass[a4paper,11pt]{article}

\usepackage{graphicx}          
\usepackage{caption}
\usepackage{subcaption} 
\usepackage{tikz}


\begin{document}
\usetikzlibrary{lindenmayersystems}
\pgfdeclarelindenmayersystem{z-curve}{
\symbol{I}{\pgftransformscale{+0.25\pgflsystemstep}}
\symbol{p}{%
  \pgfpathmoveto{\pgfqpoint{1pt}{3pt}}\pgfpathlineto{\pgfqpoint{3pt}{3pt}}%
  \pgfpathlineto{\pgfqpoint{1pt}{1pt}}\pgfpathlineto{\pgfqpoint{3pt}{1pt}}%
}
\symbol{q}{%
  \pgfpathlineto{\pgfqpoint{1pt}{3pt}}\pgfpathlineto{\pgfqpoint{3pt}{3pt}}%
  \pgfpathlineto{\pgfqpoint{1pt}{1pt}}\pgfpathlineto{\pgfqpoint{3pt}{1pt}}%
}
\symbol{S}{\pgftransformscale{+0.5pt}}
\symbol{A}{\pgftransformshift{\pgfqpoint{0pt}{4pt}}}
\symbol{B}{\pgftransformshift{\pgfqpoint{4pt}{4pt}}}
\symbol{C}{\pgftransformshift{\pgfqpoint{4pt}{0pt}}}
\symbol{[}{\bgroup}
\symbol{]}{\egroup}
\rule{Z -> Ip}
\rule{p -> S[Ap][Bq][q][Cq]}
\rule{q -> S[Aq][Bq][q][Cq]}
}

\begin{figure}[ht]
\centering
\subcaptionbox{}
{\begin{tikzpicture}[scale=2]
\draw [l-system={z-curve, step=1cm, axiom=Z, order=1}] l-system;
\end{tikzpicture}}
\hspace{1cm}
\subcaptionbox{}
{\begin{tikzpicture}[scale=2]
\draw [l-system={z-curve, step=1cm, axiom=Z, order=2}] l-system;
\end{tikzpicture}}
\hspace{1cm}
\subcaptionbox{}
{\begin{tikzpicture}[scale=2]
\draw [l-system={z-curve, step=1cm, axiom=Z, order=3}] l-system;
\end{tikzpicture}}
\hspace{1cm}
\subcaptionbox{}
{\begin{tikzpicture}[scale=2]
\draw [l-system={z-curve, step=1cm, axiom=Z, order=4}] l-system;
\end{tikzpicture}}
\end{figure}

\end{document}

Irgendwelche Vorschläge, was ich ändern sollte, um das zu bekommen, was ich will?

Antwort1

1. Es gelingt, die Kurven mittig über jedem Aufzählungspunkt zu positionieren:

Ich habe die Symbole p und q geändert (horizontaler Bereich: 0ptauf 2pt; statt 1ptauf 3pt), um eine horizontale Zentrierung zu erreichen. Vertikal beginnt es auch bei 0ptstatt bei 1pt. Mit \draw(<x>,<y>)...könnte man die Kurven später beliebig platzieren. Zum Beispiel mit \draw(0,0).

\symbol{p}{%
  \pgfpathmoveto{\pgfqpoint{0pt}{2pt}}\pgfpathlineto{\pgfqpoint{2pt}{2pt}}%
  \pgfpathlineto{\pgfqpoint{0pt}{0pt}}\pgfpathlineto{\pgfqpoint{2pt}{0pt}}%
}
\symbol{q}{%
  \pgfpathlineto{\pgfqpoint{0pt}{2pt}}\pgfpathlineto{\pgfqpoint{2pt}{2pt}}%
  \pgfpathlineto{\pgfqpoint{0pt}{0pt}}\pgfpathlineto{\pgfqpoint{2pt}{0pt}}%
}

2. Gleiche Größe aller Kurven:

Mit \resizebox{<horizontal size>}{<vertical size>}{...}(siehe:4.3.2 Skalierung auf eine gewünschte Größe, S. 8 im Handbuch ["Pakete im 'Grafik'-Paket"]) können Sie die horizontale und vertikale Größe der festlegen tikzpicture. Wenn Sie möchten, tikzpicturedass die proportional skaliert wird, können Sie eine der Größen angeben und !die andere einfügen.

\resizebox{!}{2cm}{
\begin{tikzpicture}
\draw[black](0,0) l-system [l-system={z-curve, step=1cm, axiom=Z, order=1}];
\end{tikzpicture}
}

3. Hinweis

Ich habe \subfloatden Import von Paketen genutzt und reduziert, da TikZ graphicxautomatisch lädt.


Ergebnis:

Bildbeschreibung hier eingeben


MWE:

\documentclass[a4paper,11pt]{article}
\usepackage{tikz}
\usepackage{subfig}
\begin{document}
\usetikzlibrary{lindenmayersystems}
\pgfdeclarelindenmayersystem{z-curve}{
\symbol{I}{\pgftransformscale{+0.25\pgflsystemstep}}
\symbol{p}{%
  \pgfpathmoveto{\pgfqpoint{0pt}{2pt}}\pgfpathlineto{\pgfqpoint{2pt}{2pt}}%
  \pgfpathlineto{\pgfqpoint{0pt}{0pt}}\pgfpathlineto{\pgfqpoint{2pt}{0pt}}%
}
\symbol{q}{%
  \pgfpathlineto{\pgfqpoint{0pt}{2pt}}\pgfpathlineto{\pgfqpoint{2pt}{2pt}}%
  \pgfpathlineto{\pgfqpoint{0pt}{0pt}}\pgfpathlineto{\pgfqpoint{2pt}{0pt}}%
}
\symbol{S}{\pgftransformscale{+0.5pt}}
\symbol{A}{\pgftransformshift{\pgfqpoint{0pt}{4pt}}}
\symbol{B}{\pgftransformshift{\pgfqpoint{4pt}{4pt}}}
\symbol{C}{\pgftransformshift{\pgfqpoint{4pt}{0pt}}}
\symbol{[}{\bgroup}
\symbol{]}{\egroup}
\rule{Z -> Ip}
\rule{p -> S[Ap][Bq][q][Cq]}
\rule{q -> S[Aq][Bq][q][Cq]}
}

\begin{figure}[h!]
\centering
\subfloat[]{\label{fig:a}
\resizebox{!}{2cm}{
\begin{tikzpicture}
\draw[black](0,0) l-system [l-system={z-curve, step=1cm, axiom=Z, order=1}];
\end{tikzpicture}
}
}
\hfill
\subfloat[]{\label{fig:a}
\resizebox{!}{2cm}{
\begin{tikzpicture}
\draw [red](0,0) l-system  [l-system={z-curve, step=1cm, axiom=Z, order=2}];
\end{tikzpicture}
}
}
\hfill
\subfloat[]{\label{fig:a}
\resizebox{!}{2cm}{
\begin{tikzpicture}
\draw [blue](0,0) l-system  [l-system={z-curve, step=1cm, axiom=Z, order=3}];
\end{tikzpicture}
}
}
\hfill
\subfloat[]{\label{fig:a}
\resizebox{!}{2cm}{
\begin{tikzpicture}
\draw [green](0,0) l-system  [l-system={z-curve, step=1cm, axiom=Z, order=4}];
\end{tikzpicture}
}
}
\hfill
\caption{Z-Curve using TikZ and the Lindenmayer system}\label{fig:LabelFigOne}
\end{figure}
\end{document}

verwandte Informationen