Hallo, ich habe eine Frage zu TikZ und wollte von euch wissen, ob meine Wunschvorstellung überhaupt geht.

Ich habe hier ein simples Code-Beispiel und möchte wissen, ob es möglich ist, dass ein längerer Text über einer (hier orangefarbenen) Linie mit der Krümmung mitgehen kann. Also nicht wie hier an der Tangente im Mittelpunkt der orangefarbenen Linie entlang läuft, sondern sich ebenfalls gleich krümmt.

Open in Online-Editor
\documentclass[12pt,a4paper]{scrartcl}
\usepackage[latin1]{inputenc}
\usepackage[ngerman, english]{babel}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{makeidx}
\usepackage{graphicx}
\usepackage{tikz}
\usepackage[left=2cm,right=2cm,top=2cm,bottom=2cm]{geometry}
\author{XXX}
\begin{document}
\begin{tikzpicture} 
  \path (0,0) node(x) {Hello World!}
  (3,1) node[circle,draw](y) {$\int_1^2 x \mathrm d x$};
  \draw[->,blue] (x) -- (y);
  \draw[->,red] (x) -| node[near start,below] {label} (y);
  \draw[->,orange] (x) .. controls +(up:1cm) and +(left:1cm) .. node[above,sloped] {Hier steht langer Text} (y);
\end{tikzpicture}
\begin{tikzpicture} 
  \path (0,0) node[circle,draw](x) {A} (3,2) node[circle,draw](y) {B};
  \draw [->,orange] (x) .. controls +(up:1cm) and +(left:1cm) .. node[above,sloped] {Hier steht langer Text} (y);
  \draw [->,orange] (y) .. controls +(down:1cm) and +(right:1cm) .. node[below,sloped] {Hier steht auch ein langer Text} (x);
\end{tikzpicture}
\end{document}

gefragt 25 Apr '16, 10:56

Frosi's gravatar image

Frosi
122
Akzeptiert-Rate: 0%

geschlossen 26 Apr '16, 09:03

Henri's gravatar image

Henri
14.6k53340

1

Du lädst sehr viele, für das Beispiel unnötige Pakete. Ich denke, dass das in deinem eigentlichen Dokument auch der Fall ist. Du solltest mal durch alle Pakete durchgehen, schauen was sie machen und die unnötigen rauswerfen. Außerdem solltest du deine Datei UTF-8 kodieren und \usepackage[latin1]{inputenc} durch \usepackage[utf8]{inputenc} ersetzen. Die latin1-Kodierung ist absolut nicht mehr zeitgemäß.

(25 Apr '16, 11:31) Henri
1
(25 Apr '16, 13:00) saputello

Die Frage wurde aus folgenden Grund "Duplikat von http://texwelt.de/wissen/fragen/13364" geschlossen Henri 26 Apr '16, 09:03


Das, was du möchtest funktioniert mit decorations.text. Dort gibt es die Dekoration text along path. Da Text und Linie gezeichnet werden sollen muss die Dekoration nach Zeichnen des Pfades angewendet werden. Dies geht mit

Open in Online-Editor
\draw[postaction=decorate,decoration={text along path,...}] ...

Das Kapitel »Text Decorations« in der Anleitung beschreibt alle Optionen.

In deinem Beispiel sieht das jetzt natürlich sehr komisch aus, weil der Text länger als die Linie ist. Automatischen Zeilenumbruch gibt es nicht (wie auch), wenn mehrere Zeilen gewünscht sind muss man dies von Hand mit mehreren Dekorationen und dem raise-Parameter machen.

Open in Online-Editor
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{decorations.text}
\begin{document}
\begin{tikzpicture}
  \path (0,0) node(x) {Hello World!}
  (3,1) node[circle,draw](y) {$\int_1^2 x \mathrm d x$};
  \draw[->,blue] (x) -- (y);
  \draw[->,red] (x) -| node[near start,below] {label} (y);
  \draw[->,orange,postaction=decorate,decoration={text along path,text color=orange,text={Hier steht langer Text}}] (x) .. controls +(up:1cm) and +(left:1cm) .. (y);
\end{tikzpicture}
\begin{tikzpicture} 
  \path (0,0) node[circle,draw](x) {A} (3,2) node[circle,draw](y) {B};
  \draw [->,orange,postaction=decorate,decoration={text along path,text color=orange,text={Hier steht langer Text}}] (x) .. controls +(up:1cm) and +(left:1cm) .. (y);
  \draw [->,orange,postaction=decorate,decoration={text along path,text color=orange,text={Hier steht auch ein langer Text},reverse path}] (y) .. controls +(down:1cm) and +(right:1cm) .. (x);
\end{tikzpicture}
\end{document}

alt text

Permanenter link

beantwortet 25 Apr '16, 11:23

Henri's gravatar image

Henri
14.6k53340
Akzeptiert-Rate: 46%

bearbeitet 25 Apr '16, 11:35

Oh super!! Vielen, vielen Dank Henri!

Eine letzte Frage hätte ich dazu bitte noch: Ist es möglich im zweiten Beispiel den unteren Text um 180 Grad zu drehen, damit der Leser seinen Kopf nicht schief halten muss? Ich hätte da an rotatebox{} gedacht.

(25 Apr '16, 11:31) Frosi
1

@Frosi decoration={text along path,reverse path,...}

(25 Apr '16, 11:33) Henri

Danke!! :-)

(25 Apr '16, 11:39) Frosi

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:

×688
×50
×4
×4

gestellte Frage: 25 Apr '16, 10:56

Frage wurde gesehen: 4,885 Mal

zuletzt geändert: 26 Apr '16, 09:03