Risposte nei forum create
-
AutoreRisposte
-
::
schwarz89it” post=103539Buongiorno a tutti,
oggi mi sono imbattuto in problema nuovo, il metodo per risolverlo in modo manuale esiste, ma lo trovo poco pratico e un po’ approssimativo. Allego il file sorgente minimo compilabile, ma faccio osservare che uso la libreria tikzlibrarymec.code (scritta da Francesco Clemente) che non è inclusa in TeXLive, quindi bisogna posizionarla direttamente nella cartella dove si trova il file sorgente.`\documentclass[a4paper,11pt,twoside,openright,final]{book}
\usepackage[italian]{babel}
\usepackage{pgfplots,relsize,pgfplotstable,lmodern,pgfkeys, pgfmath}
\pgfplotsset{compat=1.3}
\pgfkeys{
/pgf/number format/.cd, %
use comma
}
\usetikzlibrary{plotmarks,arrows.meta,calc,intersections,through,backgrounds}
\usetikzlibrary{mec}
\usetikzlibrary{positioning,patterns,decorations.markings}\begin{document}
\begin{tikzpicture}
\coordinate (a) at (0,0);
\coordinate (b) at (2.75,0);
\coordinate (c) at (8.25,0);
\coordinate (d) at (13.75,0);
\coordinate (e) at (19.25,0);
\coordinate (f) at (24.75,0);
\coordinate (g) at (27.5,0);
%
\node[hinge,draw,grounded] (A) at (a){};
\node[support,draw,grounded] (B) at (b){};
\node[support,draw,grounded] (C) at (c){};
\node[support,draw,grounded] (D) at (d){};
\node[support,draw,grounded] (E) at (e){};
\node[support,draw,grounded] (F) at (f){};
\node[support,draw,grounded] (G) at (g){};
%
\draw[very thick] (A.north)–(B.north)–(C.north)–(D.north)–(E.north)–(F.north)–(G.north);
\path[draw straight load] (a) — (c) (d)–(e) (f)–(g);
\end{tikzpicture}\end{document}`
Come si vede dal file che ho allegato se si compila così risulta che la figura esca dai margini fisici del foglio. La domanda è la seguente: si può impostare un parametro opzionale della forma `width=0.9\columnwidth`
invece che dover cercare manualmente il valore di scale?Nella guida di Tekz si fa riferimento a resized width, ma non credo sia quello che devo usare o toccare.
Ringrazio fin da ora tutti coloro che vorranno rispondere.Una nota prima: la dimensione fisica del foglio (larghezza intendo) che si può usare di solito è attorno ai 12/13 cm. 24 sono quindi eccessivi. Questa è una regola a spanne valida per figure e schemi piccoli, poi ci sono le eccezioni.
Per ridimensionare e scalare le immagini esistono un’infinità di metodi, sul forum se ne è già sicuramente parlato. C’è il pacchetto tikzscale, puoi usare le chiavi [tt]scale=
, transform shape[/tt] da inserirsi nelle opzioni della figura e puoi usare i classici metodi forniti dal pacchetto graphicx, come \scalebox o \resizebox (visto che una figura “è un box”). Per l’ultimo: Correctly scaling a tikzpicture `\resizebox{\textwidth}{!}{
\begin{tikzpicture}
…
\end{tikzpicture}
}
}`Ciao
Claudio
::claudio” post=103467Se ho capito bene a tua libreria ammette due variazioni di stile uno di default e uno alternativo
ma se le variazioni sono tre o più come si fa?
ciao
claudioVero, ma si parla di “variazioni di proprietà”, il che potrebbe non influire anche se ci sono tre o più calcoli. Dipende molto da cosa vuoi fare, ma senza avere più informazioni non riesco a dire di più.
Ciao
Claudio
2 Ottobre 2015 alle 6:32 in risposta a: Definizione globale di un colore all’interno di un \foreach #103350::Liverpool” post=103431Domanda secca: non c’è un modo per poter usare direttamente [tt]\colorlet[/tt] o un comando fornito da [tt]xcolor[/tt] all’interno del ciclo?
Sicuramente ci sarà un qualche trucchetto che ti permette di farlo (xcolor mette a disposizione un sacco di comandi utili, molto spesso sconosciuti), ma al momento non lo vedo.
Personalmente non vedo troppo macchinosa la soluzione con \@namedef e \@nameuse, ma dipende molto dal contesto vero e proprio con cui ti trovi di fronte. Se pensi di sviluppare un pacchetto per una soluzione generale, probabilmente opterei per questo perché lato utente (documento) hai una definzione per il colore molto pulita.
Ciao
Claudio
::Liverpool” post=103426Se mi fai vedere un esempio, imparo qualcosa di nuovo.
In realtà il tuo sistema con i pic è più semplice 😉
Ridisegnare il riquadro della tela del grafico è veramente semplice: puoi accedere alle normali ancore (north, south ecc..) tramite il nome [tt]current axis[/tt]. Ho preso come esempio il tuo codice in alto: `\documentclass
{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.12}\usetikzlibrary{calc,decorations.pathmorphing}
\begin{document}
\begin{tikzpicture}
\begin{axis} [xlabel= Time (hour), ylabel={Load (kg)},
xmin=0, xmax=24, xtick={0,2,…,24},
ymin=46, ymax=58, ytick={53,…,57},
y axis line style={opacity=0}]
\addplot+ [domain=0:24] {55}; % qui ci va il primo grafico <------------ \end{axis} \begin{axis} [axis x line=none, xmin=0, xmax=24, ymin=37, ymax=49, ytick={38,...,42}, y axis line style={opacity=0}] \addplot+ [domain=0:24] {40}; % qui ci va il secondo grafico <---------- % ri-disegnare della tela \draw (current axis.south west)-- ($(current axis.south west)!0.45!(current axis.north west)$)coordinate(x)% per avere il riferimento successivamente - buco per decorazione ($(current axis.south west)!0.55!(current axis.north west)$)|-(current axis.north east) ; \draw (current axis.north east)-- ($(current axis.north east)!0.45!(current axis.south east)$)coordinate(y)% per avere il riferimento successivamente - buco per decorazione ($(current axis.north east)!0.55!(current axis.south east)$)|-(current axis.south west) ; \end{axis} \draw[decoration={zigzag,amplitude=3pt},decorate,help lines,black] (x)--++(0,.565); \draw[decoration={zigzag,amplitude=3pt},decorate,help lines,black] (y)--++(0,-.565); \end{tikzpicture} \end{document}` Il risultato: [attachment=1428]ScreenShot2015-09-30at8.46.39AM.png[/attachment] Problemini: attenzione a mantenere lo stesso stile della tela.. ho usato help lines solo per questione di tempo. Seconda cosa: il trucco di sovrapporre due tele per la scala incasina un po' i livelli di presentazione degli elementi, per quel motivo se noti attentamente il primo mark della retta in alto viene attraversato dal segmento della tela. Problema risolvibile facilmente spezzando il path e inserendo la parte che disegna "il bordo superiore" nel primo ambiente axis. Insomma, alla fine della fiera la tua soluzione era decisamente più semplice e immediata :) . Ciao ClaudioAttachments:
You must be logged in to view attached files.::schwarz89it” post=103422Salve Claudio, ho provato a compilare il suo secondo file, ma con mia sorpresa \usetikzlibrary{overlay-beamer-styles} mi dava dei problemi, e non portava a termine la compilazione, l’ho commentato e gira normalmente. Non so cosa comporti la rimozione di quella libreria. Quindi sono io che pongo la domanda: a cosa serve in particolare?
Quella libreria definisce una serie di stili TikZ che servono per modificare proprietà nei disegni e quindi realizzare animazioni. A dire la verità nel codice precedente non c’era traccia degli stili perciò togliendo la chiamata non c’è nessun problema. Il messaggio d’errore è semplicemente dovuto al fatto che hai una distribuzione vecchia (parecchio) e/o non aggiornata (da parecchio). La libreria è stata pubblicata a gennaio 2014 se ben ricordo.
Per Claudio: No, così non va bene. Avendo 3 immagini diverse ci saranno 3 bounding box diverse perciò non si elimina affatto l’effetto salto. Fosse un disegno mio inserirei un solo ambiente tikzpicture. Per esempio, prova `\begin{tikzpicture}
\node[draw](A) at (0,5) {$\dfrac{3}{4}+\dfrac{4}{15}=$};
\node[draw,visible on=<1>](B) at (0,2) {$\dfrac{\phantom{a+b}}{60}$};
\node[draw,visible on=<2>](B) at (0,2) {$\dfrac{a+b}{60}$};
\path [draw] (B.east) -| node [above left] {$mcm(4,15)=60$}+(+5cm,0) |- (A);
\end{tikzpicture}` Richiede la libreria. In questo modo i nodi sono sempre presenti e le dimensioni vengono mantenute durante la transizione.Ciao
Claudio
::Liverpool” post=103400In alternativa, potresti applicare una decorazione all’asse y, ma mi sembra (almeno per me) più complicato.
Neanche troppo a dire il vero: il meccanismo è di non disegnare il riquadro della tela ([tt]axis lines=none[/tt]), ma farlo successivamente “a mano” con un classico [tt]\draw[/tt]. A quel punto si può inserire la decorazione dove si vuole.
EDIT: credo di avere toppato [tt]axis lines=none[/tt]… ho trovato un esempio in cui usavo [tt]y axis line style={white}[/tt]: almeno i tick si salvano 😉
Ciao
Claudio
::claudio” post=103404Utilizzando beamer si possono far apparire scomparire oggetti nei frame
nel seguente codice vi sono due usi differenti
`
\documentclass[ignorenonframetext,fleqn]{beamer}
\usepackage[T1]{fontenc}
\usepackage{textcomp}
\usepackage{fix-cm}
\usepackage{arev}
%\usepackage{times}
\usepackage{bbding}
\usepackage{mparhack,relsize}
\usepackage{microtype}
\usepackage[utf8]{inputenc}
\usepackage[italian]{babel}
\usepackage{textpos}\usepackage{tkz-euclide}
\usepackage{tkz-linknodes}
\frenchspacing
\listfiles
\begin{document}
\begin{itemize}
\item \onslide<1->{A}
\item \onslide<2->{B}
\item \onslide<3->{C}
\end{itemize}
\end{frame}\begin{frame}{Esempio 2}
\uncover<1->{A}\visible<2-2>{B}
\visible<3-3>{C}
\end{frame}
\begin{frame}{Esempio 3}
\uncover<1->{A}\visible<2-2>{B}\visible<3-3>{C}
\end{frame}
\end{document}
`nell’esempio 2 dopo che scompare B, C appare più in basso. La domanda questa: è possibile fare in modo che C si soprapponga
a B?
claudioCertamente, ma devi prestare attenzione al jumping effect. Trovi più informazioni in diversi post nel forum e nel mio articolo per ArsTeXnica 17.
Ciao
Claudio
::
Vorrei solo aggiungere che se i tuoi grafici sono tutti in Matlab, esiste un comodissimo script .m (matlab2tikz, cercando su un motore di ricerca lo trovi subito) che esporta in codice TikZ un qualsiasi grafico.Questo metodo permette di avere il testo conforme con lo stile dell’articolo. Inoltre, essendo codice, puoi fare eventuali modifiche come cambio di colori, scale, aggiunte di etichette e qualsiasi altra cosa possa venire in mente.
Ciao
Claudio
28 Settembre 2015 alle 8:46 in risposta a: Definizione globale di un colore all’interno di un \foreach #103347::Liverpool” post=103371
Non puoi provare a usare il pacchetto xspotcolor? (Vedi anche http://tex.stackexchange.com/q/141245/13304).
Grazie per la risposta, ma non vedo la pertinenza. Il mio problema è fare in modo che i colori che sono definiti all’interno del [tt]foreach[/tt] vengano riconosciuti anche all’esterno. Il disegno con i quadratini colorati è solo un esempio semplificato messo su per mostrare un esempio minimo compilabile senza troppe distrazioni.
Quello che si vede è una successione di quadratini grigi, mentre dovrebbe essere una successione di quadratini colorati in maniera casuale.Ciao
Il problema mi era quasi chiaro 😉 Non capisco ancora se vuoi avere una successione di colori completamente casuale o se la vuoi casuale a gruppi di colore, 5 sfumature casuali di grigio, poi di rosa, rosso e così via.
Se il problema è il primo, allora proverei a vedere di associare il valore casuale generato a ciascun colore “Pantone”.
Se il problema è il secondo, è un po’ più complicato perché non c’è lo stesso grado di libertà nella scelta del primo problema.
Per smartdiagram avevo un problema simile (di definire globalmente dei colori) quando cercavo di ridefinire la lista di colori usati in ciascun elemento. Rispetto alla tua soluzione, nel pacchetto si usa [tt]\@namedef[/tt] e [tt]\@nameuse[/tt]. Alla fine, Enrico aveva fornito una soluzione perfetta: How to make global a color list definition with \@namedef done inside a foreach loop. Forse questo meccanismo è più facile da usare.
Ciao
Claudio
28 Settembre 2015 alle 5:33 in risposta a: Definizione globale di un colore all’interno di un \foreach #103345::
Non puoi provare a usare il pacchetto xspotcolor? (Vedi anche http://tex.stackexchange.com/q/141245/13304).Ciao
Claudio
::
Vi consiglio di dare uno sguardo a https://www.overleaf.com/ e https://www.sharelatex.com/templates Riportano un buon numero di template.Ciao
Claudio
-
AutoreRisposte