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, 04:56

Frosi's gravatar image

Frosi
1
Akzeptiert: 0%

geschlossen 26 Apr, 03:03

Henri's gravatar image

Henri
10.0k31730

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, 05:31) Henri

Die Frage wurde aus folgenden Grund geschlossen: "Duplikat von http://texwelt.de/wissen/fragen/13364" durch Henri 26 Apr, 03: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, 05:23

Henri's gravatar image

Henri
10.0k31730

bearbeitet 25 Apr, 05: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, 05:31) Frosi
1

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

(25 Apr, 05:33) Henri

Danke!! :-)

(25 Apr, 05:39) Frosi

Folge dieser Frage

Per E-Mail:

Wenn Du Dich anmeldest, kannst Du Updates hier abonnieren

Per RSS:

Antworten

Antworten und Kommentare

Aktuelle Buch-Infos

LaTeX Cookbook

LaTeX Beginners Guide

Limitierter Rabatt ebook
50% Coupon code tDRet6Y

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üge einfach zwei Leerzeichen an die Stelle ein, an der die neue Zeile sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Zugeordnete Themen:

×492
×44
×4
×3

Frage gestellt: 25 Apr, 04:56

Frage wurde angeschaut: 819 Mal

Zuletzt aktualisiert: 26 Apr, 03:03