Antwort1
So können Sie dies tun Tikz
:
Grundgedanken:
- zeichne ein paar Linien
- Setzen Sie einige
\node
s für die Etiketten unten \draw
einige dekorierte Wege oben- Denken Sie daran, relevante
coordinate
s zu berücksichtigen, um diese Aktionen zu unterstützen - Definieren Sie
/.style
s, während Sie den Code vereinfachen und Parameteränderungen nur an einer Stelle vornehmen - Versuchen Sie einen ausgewogenen Ansatz, der für Anfänger nicht zu schwierig ist UND verwenden Sie einige Pfadfunktionen für schöneren Code
Linien:
Lassen Sie uns das Erste verdauen.
\draw[bar] (0,0) coordinate (A) -- (1.5,0) coordinate (B) node[a]{$a$};
Denken Sie daran, zunächst eine einfache Linie in absoluten Koordinaten zu zeichnen:
\draw (0,0) -- (1.5,0);
Da Tikz
es sich um Pfade handelt, die mit einem Semikolon enden ;
, könnten wir einen Knoten hinzufügen und dabei das \
vor dem Pfadende löschen. Dieser hier fügt also einen Knoten mit Text (Beschriftung) ein, nachdem (1.5,0) erreicht wurde; er akzeptiert Text mit einem gewissen Stil a
, also im mathematischen Modus $a$
:
\draw (0,0) -- (1.5,0) node[a]{$a$};
Geben Sie Stilinformationen für die Zeile an den Anfang ein UND überlassen Sie es dem Stilabschnitt am Anfang, im Detail anzugeben, was hier gezeichnet werden soll:
\draw[bar] (0,0) -- (1.5,0) node[a]{$a$};
Fügen Sie abschließend die \coordinate
Anweisung in den Pfad ein, um sich bestimmte Standorte zu merken, UND lassen Sie das weg, \
da es sich immer noch im selben Pfad befindet, der gezeichnet werden soll. Das sind Sie:
\draw[bar] (0,0) coordinate (A) -- (1.5,0) coordinate (B) node[a]{$a$};
Die anderen Pfade werden ähnlich erstellt, indem eine Mischung aus relativen Bewegungen --++(1.5,0)
, absoluten Koordinaten und dem Wissen über die Mindestbreite dieser Knoten verwendet wird, die hier mit 5 mm definiert wurde. Dies kann sicherlich systematischer erfolgen.
Beschriftungen unten:
% ~~~ labels below ~~~~~~~~~~
\node[mth] at (A) {$1$};
\node[mth] at ([xshift=-2.5mm]C) {$f(i) + 1$};
Das ist ziemlich unkompliziert. Die erste Zeile platziert den Text $1$
an der gespeicherten Position (A)
und verwendet dabei den Stil mth
, wodurch der Text in y-Richtung ein wenig nach unten verschoben wird.
Das zweite ist sehr ähnlich, abgesehen von einigen Komplikationen, die durch die Platzierung des Knotens auf $a$
meine Art und Weise entstehen. Eine Möglichkeit, die Position zu korrigieren, besteht darin, (C)
ihn etwas nach hinten zu verschieben (die Hälfte der Mindestbreite):
([xshift=-2.5mm]C)
.
Überbrückung:
% ~~~ labels above ~~~~
\draw[decorate,blue] ([ys]A) -- ([ys]B) node[alf]{$\alpha$};
\draw[decorate,blue] ([ys]D) -- ([ys]E) node[alf]{$\alpha$};
Es kombiniert die oben genannten Konzepte und verwendet decorate
, das von der Tikz-Bibliothek bereitgestellt wird decorations.pathreplacing
:
- es zeichnet einen Weg von oben (A) nach oben (B)
- ersetzt es durch eine Klammer
- in Blau
- Platzieren Sie einen Knoten in der Mitte und etwas darüber für $\alpha$.
Stilblock:
\begin{tikzpicture}[
a/.style={anchor=west,minimum width=5mm}, % for the node containing "a"
bar/.style={{Bar[]}-{Bar[]}}, % start- and end-tipps as Bars
bar2/.style={-{Bar[]}}, % only end-tipp as bar
mth/.style={yshift=-5mm}, % for placing the math-labels
decoration=brace, % the overbrace
alf/.style={midway,yshift=3mm}, % placing \alpha there
ys/.style={yshift=5mm}, % shortcut for these yshifts
]
Zumindest bei mir entwickelt sich dieser Teil im Laufe der Zeit, beispielsweise so:
- Erinnern Sie sich an den oben beschriebenen Zeilenteil
- setzen nützliche Stil-Optionen direkt für
draw
undnode
- sind sie zu lang? ODER werde ich sie mindestens zweimal brauchen?
- dann verschieben Sie sie hierher, mit einigen nützlichen Namen
- so dass ich später alle Beschriftungsverschiebungen usw. ganz einfach hier anpassen kann
Code:
\documentclass[10pt,border=3mm,tikz]{standalone}
\usetikzlibrary{arrows.meta}
\usetikzlibrary{decorations.pathreplacing}
\begin{document}
\begin{tikzpicture}[
a/.style={anchor=west,minimum width=5mm}, % for the node containing "a"
bar/.style={{Bar[]}-{Bar[]}}, % start- and end-tipps as Bars
bar2/.style={-{Bar[]}}, % only end-tipp as bar
mth/.style={yshift=-5mm}, % for placing the math-labels
decoration=brace, % the overbrace
alf/.style={midway,yshift=3mm}, % placing \alpha there
ys/.style={yshift=5mm}, % shortcut for these yshifts
]
% ~~~ lines ~~~~~~~~~~~~
\draw[bar] (0,0) coordinate (A) -- (1.5,0) coordinate (B) node[a]{$a$};
\draw[bar] (2,0) coordinate (C) -- (3.5,0) coordinate (D);
\draw[bar2](3.5,0) --++(1.5,0) coordinate (E) node[a]{$a$};
\draw[bar] (5.5,0) --++(1.5,0) node[a]{$P$};
% ~~~ labels below ~~~~~~~~~~
\node[mth] at (A) {$1$};
\node[mth] at ([xshift=-2.5mm]C) {$f(i) + 1$};
\node[mth] at (D) {$i - f(i) + 1$};
\node[mth] at ([xshift=+2.5mm]E) {$i + 1$};
% ~~~ labels above ~~~~
\draw[decorate,blue] ([ys]A) -- ([ys]B) node[alf]{$\alpha$};
\draw[decorate,blue] ([ys]D) -- ([ys]E) node[alf]{$\alpha$};
\end{tikzpicture}
\end{document}