- Questo topic ha 11 risposte, 4 partecipanti ed è stato aggiornato l'ultima volta 12 anni, 11 mesi fa da
Elrond.
-
CreatoreTopic
-
9 Ottobre 2013 alle 18:37 #89554::
Salve a tutti, ho una questione da porvi: esiste un modo per costruirsi una freccia parziale in tikz? Vorrei ottenere una freccia parziale sul tipo [tt]stealth[/tt], ma la libreria arrows fornisce solo le versione dimezzate dello stile [tt]to[/tt]. Sapreste indicarmi come crearmi una mia freccia personalizzata (o eventualmente librerie di TiKz che permettano di farlo)? Grazie mille per la vostra disponibilità. 😆
-
CreatoreTopic
-
AutoreRisposte
-
-
9 Ottobre 2013 alle 22:06 #89555::
Sono riuscito a creare questa nuova freccia
`
\pgfarrowsdeclare{left stealth}{left stealth}{
\pgfarrowsleftextend{-1.6\pgflinewidth}
\pgfarrowsrightextend{\pgflinewidth}}
{
\pgfsetdash{}{0pt} % do not dash
\pgfpathmoveto{\pgfpoint{0}{-.5\pgflinewidth}}
\pgfpathlineto{\pgfpoint{\pgflinewidth}{0}}
\pgfpathlineto{\pgfpoint{-1.6\pgflinewidth}{1.3\pgflinewidth}}
\pgfpathlineto{\pgfpoint{-.6\pgflinewidth}{0}}
\pgfpathlineto{\pgfpoint{0}{0}}
\pgfusepathqfill{black}
\pgfusepathqstroke
}
`
ma il problema è che è praticamente coincidente all’altra solo se uso una dimensione della linea pari o superiore a [tt]width=.4cm[/tt]. Se invece metto [tt]line width=1pt[/tt], o dimensioni piccole (in qualsiasi misura), la freccia in stile [tt]stealth[/tt] è nettamente più grande della mia freccia. Dove sbaglio?
-
10 Ottobre 2013 alle 11:48 #89556::
Perché dovrebbero venire uguali se i codici sono diversi? Dove hai preso quei valori?
E come intendi fare per la punta della freccia?Comunque, la versione “tagliata di netto” è questa:
`\makeatletter
\pgfarrowsdeclare{left stealth}{left stealth}
{
\pgfutil@tempdima=0.28pt%
\pgfutil@tempdimb=\pgflinewidth%
\ifdim\pgfinnerlinewidth>0pt%
\pgfmathsetlength\pgfutil@tempdimb{.6\pgflinewidth-.4*\pgfinnerlinewidth}%
\fi%
\advance\pgfutil@tempdima by.3\pgfutil@tempdimb%
\pgfarrowsleftextend{+-3\pgfutil@tempdima}
\pgfarrowsrightextend{+5\pgfutil@tempdima}
}
{
\pgfutil@tempdima=0.28pt%
\pgfutil@tempdimb=\pgflinewidth%
\ifdim\pgfinnerlinewidth>0pt%
\pgfmathsetlength\pgfutil@tempdimb{.6\pgflinewidth-.4*\pgfinnerlinewidth}%
\fi%
\advance\pgfutil@tempdima by.3\pgfutil@tempdimb%
\pgfmathsetlength\pgfutil@tempdimb{5\pgfutil@tempdima-\pgflinewidth}
\pgfpathmoveto{\pgfqpoint{5\pgfutil@tempdima}{0pt}}
\pgfpathlineto{\pgfqpoint{-3\pgfutil@tempdima}{4\pgfutil@tempdima}}
\pgfpathlineto{\pgfpointorigin}
\pgfpathlineto{\pgfqpoint{0pt}{-.5\pgflinewidth}}
\pgfpathlineto{\pgfqpoint{\pgfutil@tempdimb}{-.5\pgflinewidth}}
\pgfusepathqfill
}
\makeatother`
Ciao
-
10 Ottobre 2013 alle 12:49 #89557::
Grazie mille @Liverpool e scusa se non sono stato chiaro. Quei valori li ho ottenuti confrontando ad occhio le due frecce ringrandite e modificandole affinché fossero pressoché uguali. La cosa funzionava però, solamente se la linea era di dimensione 0.4 cm. Se riducevo le dimensioni, cambiava totalmente la mia freccia.Nonostante tutto, sei riuscito ad ottenere proprio quello che stavo cercando. Comunque con un po’ di pazienza cercando nell’albero locale sono riuscito a trovare il codice della freccia [tt]stealth[/tt]. Lo modificato circa come hai fatto tu, ma devo ammettere ad un confronto ingrandito che il tuo risultato mi piace molto di più, per cui adotterò il tuo codice. 😀
Grazie ancora.
-
11 Ottobre 2013 alle 5:17 #89558::
skevin93″ post=89093scusa se non sono stato chiaro. Quei valori li ho ottenuti confrontando ad occhio le due frecce ringrandite e modificandole affinché fossero pressoché uguali. La cosa funzionava però, solamente se la linea era di dimensione 0.4 cm. Se riducevo le dimensioni, cambiava totalmente la mia freccia.
Figurati! Te lo chiedevo per sapere se ci fosse una versione alternativa della freccia in giro. Le cose non andavano perché la tua freccia è proporzionale allo spessore di linea, mentre l’originale no.
Comunque potresti decidere anche di spostare la punta sul “bordo inferiore” dell’asta. Perciò ti chiedevo come intendi procedere.
Ciao
-
11 Ottobre 2013 alle 15:11 #89559
-
15 Ottobre 2013 alle 8:34 #89560::
Per fare un collegamento: Partial triangular arrows with TikZ/PGF.
@Liverpool: rispetto al codice originale ho aggiunto `\pgfpathlineto{\pgfqpoint{6\pgfutil@tempdima}{-0.5\pgflinewidth}}` giusto per spostare la punta. Mi sembra dia un risultato migliore.Ciao
Claudio
-
15 Ottobre 2013 alle 9:09 #89561::
Come si fa presto a diventare “guru” 😉cfiandra” post=89188
@Liverpool: rispetto al codice originale ho aggiunto `\pgfpathlineto{\pgfqpoint{6\pgfutil@tempdima}{-0.5\pgflinewidth}}` giusto per spostare la punta. Mi sembra dia un risultato migliore.Occhio che così sfora orizzontalmente e non dovrebbe, cioè la punta sporge oltre la coordinata dell’estremo ed è un comportamento che si è cercato di evitare (nelle intenzioni degli autori delle frecce originali). Quello che si può fare è:
a) traslare tutto in basso di mezza grossezza (effetto collaterale: la punta diventa più stretta);
b) spostare l’estremo della punta di mezza grossezza in basso (effetto collaterale: cambia l’inclinazione della punta);
c) scalare la punta (effetto collaterale: cambiano le dimensioni);
d) altro.Ciao
-
15 Ottobre 2013 alle 10:19 #89562::
Nella discussione citata da Claudio viene usata, in una delle risposte, la libreria [tt]arrows.meta[/tt], che però non è citata nella documentazione (citassero tutto penso che supererebbe tranquillamente le migliaia di pagine :D). Esiste un elenco di tutte (o buona parte) le librerie di TiKz o qualcosa di simile? Lo so, è una domanda un po’ OT, ma sono curioso.
-
15 Ottobre 2013 alle 12:12 #89563::
skevin93″ post=89194Nella discussione citata da Claudio viene usata, in una delle risposte, la libreria [tt]arrows.meta[/tt], che però non è citata nella documentazione (citassero tutto penso che supererebbe tranquillamente le migliaia di pagine :D). Esiste un elenco di tutte (o buona parte) le librerie di TiKz o qualcosa di simile? Lo so, è una domanda un po’ OT, ma sono curioso.
Immagino che non sia citata nella tua documentazione perché non hai quella libreria, è presente solo nella versione di sviluppo di TikZ
-
15 Ottobre 2013 alle 15:28 #89564::
skevin93″ post=89194Esiste un elenco di tutte (o buona parte) le librerie di TiKz o qualcosa di simile? Lo so, è una domanda un po’ OT, ma sono curioso.
Dunque, un elenco di tutte tutte le librerie in realtà non esiste. Per un paio di motivi: 1) non tutte quelle ufficiali sono documentate, 2) ne esistono un sacco non ufficiali. Tra quelle ufficiali documentate, trovi un buon elenco in http://tex.stackexchange.com/q/42611/13304. Tra quelle non ufficiali, ti segnalo sicuramente [tt]paths.ortho[/tt] (dello stesso autore ne trovi altre in https://github.com/Qrrbrbirlbel/pgf); ma altre sono anche su CTAN: [tt]hobby[/tt] per esempio è un pacchetto, ma può anche essere richiamato con `\usetikzlibrary{hobby}`.
Liverpool” post=89190Come si fa presto a diventare “guru” 😉
Ma è la verità 🙂 Per esempio non sapevo che la mia soluzione sforasse all’esterno. Appena ho tempo proverò una delle 3 proposte 🙂
P.S. Una piccola postilla sulle versioni CVS di TikZ. Per carità, hanno mille funzionalità in più (come la libreria graphs, http://tex.stackexchange.com/questions/60571/drawing-tree-using-tikz-child-overlap/60625#60625) però si paga parecchio in stabilità. A me è successo un problema con pgfplots mentre scrivevo la tesi (http://article.gmane.org/gmane.comp.tex.pgfplots/549/match=claudio+fiandrino): avevo installato una versione CVS di un paio di mesi prima…
Ciao
Claudio
-
15 Ottobre 2013 alle 15:36 #89565::
cfiandra” post=89209P.S. Una piccola postilla sulle versioni CVS di TikZ. Per carità, hanno mille funzionalità in più (come la libreria graphs, http://tex.stackexchange.com/questions/60571/drawing-tree-using-tikz-child-overlap/60625#60625) però si paga parecchio in stabilità. A me è successo un problema con pgfplots mentre scrivevo la tesi (http://article.gmane.org/gmane.comp.tex.pgfplots/549/match=claudio+fiandrino): avevo installato una versione CVS di un paio di mesi prima…
Io un paio di mesi prima della tesi entro nella fase di freeze e smetto di aggiornare qualsiasi software sul mio computer (tranne programmi che riesco a gestire autonomamente) proprio per evitare intoppi 😀
-
-
AutoreRisposte
- Devi essere connesso per rispondere a questo topic.