Seite 1 von 1

Tikz: Linie vom Seitenrand zeichnen

Verfasst: Sa 4. Jul 2020, 14:11
von Fenrix

Hallo zusammen,

ich habe folgende Folie in einer Präsentation:

\documentclass{beamer}
\usepackage{tikz}
\usetheme{metropolis}

\begin{document}
\begin{frame}{Test}
\begin{tikzpicture}
\draw[ultra thick] (0,0)--(\linewidth,0);
\draw[ultra thick] (0, 0.25) -- (0, -0.25) node[below]{$0$};
\draw[ultra thick] (1.5, 0.25) -- (1.5, -0.25) node[below]{$2B$};
\draw[ultra thick] (4, 0.25) -- (4, -0.25) node[below]{$3B-1$};
\draw[ultra thick] (\linewidth, 0.25) -- (\linewidth, -0.25) node[below]{$N$};
\draw[red, thick] (2.25, 0.125) -- (2.25, -0.125) node[below]{$m_{0}$};

\draw[blue, ->, thick]   (2.25,0) to[out=-45,in=-135] (4.25, -0.04);
\draw[blue, ->, thick]   (4.25,0) to[out=-45,in=-135] (6.25, -0.04);
\draw[blue, ->, thick]   (6.25,0) to[out=-45,in=-135] (8.25, -0.04);
\draw[blue, ->, thick]   (8.25,0) to[out=-45,in=-135] (10.25, -0.04);
\draw[blue, ->, thick]   (10.25,0) to[out=-45,in=-135] (12.25, -0.04);
\end{tikzpicture}
\end{frame}
\end{document}

Nun möchte ich einen neuen Pfeil zeichen, der praktisch vom Seitenrand aus kommt.
Die Koordinate (0,0) sollte an der gleichen Stelle bleiben, wie Sie aktuell angezeigt wird.

Sobald ich dann folgende Zeile einfüge:

\draw[blue, ->, thick]   (-1.75,0) to[out=-45,in=-135] (0.25, -0.04);

wird allerdings die komplette Achse verschoben.

Kann man das irgendwie bewerkstelligen, dass ich praktisch einen Pfeil vom linken Rand außerhalb des Bildes auf meine Achse laufen lasse?

Danke und viele Grüße


Re: Tikz: Linie vom Seitenrand zeichnen

Verfasst: Sa 4. Jul 2020, 16:54
von Bartman

Auch ohne den Pfeil auf der linken Seite ragt Deine Zeichnung über den rechten Rand hinaus, wobei nur noch ein Teil des letzten Pfeils auf der Folie zu sehen ist.

Wenn Dich die unvollständige Anzeige der Pfeile auf der linken und rechten Seiten nicht stört, dann könntest Du mit dem Befehl \makebox und den TikZ-Optionen scale und transform shape arbeiten:

\documentclass{beamer}% lädt tikz
\usetheme{metropolis}
\usepackage{showframe}% zeigt das Seiten- bzw. Folienlayout

\begin{document}
\begin{frame}{Test}
    \makebox[.97\linewidth]{%
    \begin{tikzpicture}[scale=.97, transform shape]
    \draw[ultra thick, nodes={below=1mm}] 
        (0,0)--(\linewidth,0)
        (0, 0.25) -- (0, -0.25) node {$0$}
        (1.5, 0.25) -- (1.5, -0.25) node {$2B$}
        (4, 0.25) -- (4, -0.25) node {$3B-1$}
        (\linewidth, 0.25) -- (\linewidth, -0.25) node {$N$}
    ;
    \draw[red, thick] (2.25, 0.125) -- (2.25, -0.125) node[below]{$m_0$};
%
    \draw [->, blue, thick]
        (-1.75,0) to[out=-45,in=-135] (0.25, -0.04)
    ;
    \foreach \x [remember=\x as \lastx (initially 2.25)] in {4.25,6.25,...,12.25}
        \draw [->, blue, thick]
            (\lastx,0) to[out=-45,in=-135] (\x,-0.04)
        ;
    \end{tikzpicture}}
\end{frame}
\end{document}

Re: Tikz: Linie vom Seitenrand zeichnen

Verfasst: So 5. Jul 2020, 11:32
von Fenrix

Genau, die Pfeile können ruhig über den Rand hinausgehen, da das ganze eine Modulo Operation darstellen soll. Also man fällt am rechten Rand raus und kommt dann links wieder rein.

Danke für die schnelle Hilfe :)


Re: Tikz: Linie vom Seitenrand zeichnen

Verfasst: So 5. Jul 2020, 14:58
von Bartman

Wenn das so ist, dann kann man sich den Befehl für den linken Pfeil sparen und alle Pfeile in der Schleife zeichnen lassen:

\documentclass{beamer}% lädt tikz
\usetheme{metropolis}
%\usepackage{showframe}% zeigt das Seiten- bzw. Folienlayout

\usetikzlibrary{arrows.meta}

\begin{document}
\begin{frame}{Test}
    \makebox[.97\linewidth]{%
    \begin{tikzpicture}[scale=.97, transform shape, >=Stealth]
    \draw[ultra thick] (0,0)--(\linewidth,0);
%
    \foreach \x/\label in {0/0,1.5/2B,4/3B-1,\linewidth/N}
        \draw[ultra thick] 
            (\x, 0.25) -- (\x, -0.25) node [below=1mm] {$\label$}
        ;
    \draw[red, thick] (2.25, 0.125) -- (2.25, -0.125) node[below]{$m_0$};
%
    \foreach \x [remember=\x as \lastx (initially -2)] in {0,2,...,12}{
        \unless\ifnum\x=2
            \draw [->, blue, thick]
                (\lastx+0.25,0) to[out=-45,in=-135] (\x+0.25,-0.04)
            ;
        \fi
    }
    \end{tikzpicture}}
\end{frame}
\end{document}
Pfeil-vom-Seitenrand-zeichnen.png

Re: Tikz: Linie vom Seitenrand zeichnen

Verfasst: So 5. Jul 2020, 18:37
von Fenrix

Perfekt, danke dir. Jetzt sieht der Code auch noch schön aus :)

Man wundert sich was mit Latex alles geht, errinert ja fast an eine vollständige Programmiersprache :o