[LaTeX] creare testo sovrapposto a curva con tikz

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
1001001
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1506
Iscrizione: mercoledì 22 dicembre 2010, 18:09
Desktop: Unity
Distribuzione: Ubuntu 14.04.1 LTS 64bit
Località: Verona

[LaTeX] creare testo sovrapposto a curva con tikz

Messaggio da 1001001 »

Ciao a tutti!

Quello che sto cercando di fare è ottenere la cosa rappresentata nell'immagine allegata (molto più chiara di mille spiegazioni) usando tikz. So che si può fare, perché è un'immagine di esempio di un manuale di tikz, ma non riesco a capire come. Ho cercato sia nel manuale e su google, ma non ho trovato la soluzione.

In particolare, credo di dover usare la libreria text decorations di tikz, ma riesco solo a avvicinarmi al risultato, anche perché nel capitolo sulle text decorations nel manuale di tikz ci sono solo casi in cui il testo è in linea con la curva ma la curva stessa non è tracciata o casi in cui il testo segue la linea, ma sopra o sotto di essa.

Sono sulla strada giusta usando text decorations? Se sì, cosa mi manca per arrivare a quello che voglio? Se no, avete consigli su come fare?

Grazie mille fin d'ora
Allegati
label_over_line.png
label_over_line.png (3.4 KiB) Visualizzato 811 volte
"I find your lack of faith disturbing."
Avatar utente
vaeVictis
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 4703
Iscrizione: venerdì 27 luglio 2012, 17:58
Desktop: Gnome
Distribuzione: Ubuntu 20.04 64bit

Re: [LaTeX] creare testo sovrapposto a curva con tikz

Messaggio da vaeVictis »

So che si può fare, perché è un'immagine di esempio di un manuale di tikz, ma non riesco a capire come. Ho cercato sia nel manuale e su google, ma non ho trovato la soluzione
Versione di Tikz, numero della pagine e numero della figura.
Grazie.
Pirates arrrrrrrrrrr awesome!!!
«I fear not the man who has practiced 10000 kicks once,
but I fear the man who has practiced one kick 10000 times.»
1001001
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1506
Iscrizione: mercoledì 22 dicembre 2010, 18:09
Desktop: Unity
Distribuzione: Ubuntu 14.04.1 LTS 64bit
Località: Verona

Re: [LaTeX] creare testo sovrapposto a curva con tikz

Messaggio da 1001001 »

Ciao vae, grazie mille della risposta!
Il manuale è questo: http://cremeronline.com/LaTeX/minimaltikz.pdf
L'immagine è a pagina 16. Non ha numero perché è inserita inline, ma, giusto per identificarla in maniera univoca, è l'ultima cosa prima della sezione 6.
La versione di tikz che uso io è la 2.10. Quella che usa nella guida non lo so, non c'è scritta, ma visto che la suddetta guida è del 2011 direi che hanno usato la 2.10 anche lì
"I find your lack of faith disturbing."
Avatar utente
vaeVictis
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 4703
Iscrizione: venerdì 27 luglio 2012, 17:58
Desktop: Gnome
Distribuzione: Ubuntu 20.04 64bit

Re: [LaTeX] creare testo sovrapposto a curva con tikz

Messaggio da vaeVictis »

Allora, mi sono scaricato il pdf e ho dato un'occhiata.
Ti dice che sul manuale di Tikz puoi trovare (ovviamente) spiegazioni più dettagliate di quelle date in questa guida minimale che stai seguendo.

Quindi, dando per scontato che stai su Linux anche perché altrimenti non saprei aiutarti, la domanda diventa: tu sai che con l'istallazione di LaTeX hai tutti i manuali in locale?
Li apri tutti con il comando texdoc, in questo caso:

Codice: Seleziona tutto

texdoc tikz
Trovi tutto nel paragrafo 48.6 (a cui puoi arrivare anche cercando "text decorations" nel pdf)
Non so se ti va che ti posti qualche esempio di codice, a me di norma piace parecchio sbattermi con LaTeX.
Quindi per ora evito di rovinarti il "divertimento".
Se vuoi, chiedi ovviamente. E vediamo che riusciamo a fare.

:ciao:
Pirates arrrrrrrrrrr awesome!!!
«I fear not the man who has practiced 10000 kicks once,
but I fear the man who has practiced one kick 10000 times.»
1001001
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1506
Iscrizione: mercoledì 22 dicembre 2010, 18:09
Desktop: Unity
Distribuzione: Ubuntu 14.04.1 LTS 64bit
Località: Verona

Re: [LaTeX] creare testo sovrapposto a curva con tikz

Messaggio da 1001001 »

Sì, il manuale di tikz (e in particolare il capitolo su text decorations) l'ho letto, ma continuo a non capire come "far scomparire" la linea sotto al testo.
Voglio dire, con questo:

Codice: Seleziona tutto

\documentclass{minimal}

\usepackage{tikz}
\usetikzlibrary{patterns}
\usetikzlibrary{decorations.text}
\usetikzlibrary{calc}
\usetikzlibrary{shapes,arrows}

\begin{document}
\begin{tikzpicture}
    \draw [help lines] grid (3,2);
    \draw [gray, ->]
        [postaction={decoration={text along path,
        text={label}, text color=blue, raise=-2, text align={align=center}}, decorate}]
        (0,0) to [out=90, in=180] (1.5, 1.5) to [out=0, in=90] (3, 0);
\end{tikzpicture}
\end{document}
ottengo sia la linea che il testo, e i due si sovrappongono dove ci dovrebbe essere solo il testo (allegato 1).

Con questo:

Codice: Seleziona tutto

\documentclass{minimal}

\usepackage{tikz}
\usetikzlibrary{patterns}
\usetikzlibrary{decorations.text}
\usetikzlibrary{calc}
\usetikzlibrary{shapes,arrows}

\begin{document}
\begin{tikzpicture}
    \draw [help lines] grid (3,2);
    \path [gray, ->]
        [postaction={decoration={text along path,
        text={label}, text color=blue, raise=-2, text align={align=center}}, decorate}]
        (0,0) to [out=90, in=180] (1.5, 1.5) to [out=0, in=90] (3, 0);
\end{tikzpicture}
\end{document}
la linea scompare del tutto (allegato 2).

Non trovo però l'opzione per fare quello che ho postato nel primo messaggio. Ho allora pensato di disegnare il testo con il secondo modo, dichiarando un nodo in modo da tracciare le linee dopo usando il nodo che contiene il testo e i modificatori west e east. Ma questo nodo che vorrei fare non riesco proprio a farlo.

Sono sulla strada giusta? :)
Allegati
allegato2.png
allegato2.png (5.03 KiB) Visualizzato 769 volte
allegato1.png
"I find your lack of faith disturbing."
Avatar utente
vaeVictis
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 4703
Iscrizione: venerdì 27 luglio 2012, 17:58
Desktop: Gnome
Distribuzione: Ubuntu 20.04 64bit

Re: [LaTeX] creare testo sovrapposto a curva con tikz

Messaggio da vaeVictis »

Ok, immaginavo che il problema fosse questo.
Se non ricordo male (ho fatto tempo fa una cosa analoga da mettere in una presentazione fatta poi con beamer), devi "spezzare" la linea. Nel senso che fai il primo arco, poi la scritta, poi il secondo tratto di arco.
Ma non sono sicuro ora due piedi che non ci sia una soluzione più semplice.

Ora che ho il codice, appena ho "due minuti" da dedicargli, controllo meglio.
Pirates arrrrrrrrrrr awesome!!!
«I fear not the man who has practiced 10000 kicks once,
but I fear the man who has practiced one kick 10000 times.»
1001001
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1506
Iscrizione: mercoledì 22 dicembre 2010, 18:09
Desktop: Unity
Distribuzione: Ubuntu 14.04.1 LTS 64bit
Località: Verona

Re: [LaTeX] creare testo sovrapposto a curva con tikz

Messaggio da 1001001 »

vaeVictis [url=http://forum.ubuntu-it.org/viewtopic.php?p=4615001#p4615001][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto: Se non ricordo male devi "spezzare" la linea. Nel senso che fai il primo arco, poi la scritta, poi il secondo tratto di arco.
Eh infatti, è quello che temevo anche io. Cioè, ci avevo pensato, ma poi mi ero detto che ci doveva essere qualcosa che mi sfuggiva, perché questo richiede di fare i due pezzi di linea "a occhio", se la linea non è una geometria facile (tipo una circonferenza) ma qualcosa fatto usando ad esempio l'operatore to..

Proverò a fare così e vedere cosa esce, se poi hai idee migliori saranno sicuramente bene accette :D

Intanto grazie mille! :)
"I find your lack of faith disturbing."
Avatar utente
skevin93
Prode Principiante
Messaggi: 28
Iscrizione: martedì 29 gennaio 2013, 1:03
Desktop: Lubuntu
Distribuzione: Ubuntu 14.04.1 LTS i686

Re: [LaTeX] creare testo sovrapposto a curva con tikz

Messaggio da skevin93 »

La soluzione è più semplice. Prova a vedere se così ti va bene :D

Codice: Seleziona tutto

\documentclass{article}

\usepackage{tikz}

\begin{document}
\begin{tikzpicture}
    \draw [help lines] grid (3,2);
    \draw [gray, ->]
        (0,0) to [out=90, in=180] (1.5, 1.5) node[fill=white]{label} to [out=0, in=90] (3,0) ;
\end{tikzpicture}
\end{document}
1001001
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1506
Iscrizione: mercoledì 22 dicembre 2010, 18:09
Desktop: Unity
Distribuzione: Ubuntu 14.04.1 LTS 64bit
Località: Verona

Re: [LaTeX] creare testo sovrapposto a curva con tikz

Messaggio da 1001001 »

Ti ringrazio per la risposta skevin93, ma il tuo approccio non fa quello che avrei voluto fare io: il testo infatti è stampato in orizzontale invece che seguire la curva tracciata (cosa che si nota in particolare usando un testo molto lungo).

PS: Alla fine ho "risolto" cambiando radicalmente modo di rappresentare il disegno che stavo provando a fare, ma non ho mai capito come fare quello che avrei voluto fare in questo thread, per questo non ho mai messo il tag [Risolto]
"I find your lack of faith disturbing."
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 6 ospiti