Risposte nei forum create
-
AutoreRisposte
-
::
A veder bene, la linea verticale all’ascissa x=4 parte ed arriva agli estremi interni dei segni delle marche.
Si può ovviare definendo i punti P1 e P2 così:
`\node (P1) at (axis description cs:0,-0.5) {};
\node (P2) at (axis description cs:0,1.5) {};`
e contando sul fatto che gli oggetti vengono tagliati sul contorno della tela.
R.
::Liverpool” post=85433
Indagando ancora è possibile che la questione abbia una soluzione esatta.
Questa (sostituisce il comando aggiunto da @robitex):
`\pgfplotsextra{
\pgfmathparse{(4-\pgfkeysvalueof{/pgfplots/xmin})/(\pgfkeysvalueof{/pgfplots/xmax}-\pgfkeysvalueof{/pgfplots/xmin})}
\let\x\pgfmathresult}
\draw [thick] (axis description cs:\x,0) — (axis description cs:\x,1);`
Io penso che in questo caso sia più semplice lasciar perdere le coordinate simboliche.
@peppo la scritta la aggiungi con un nodo in calce al percorso di @robitex, ma non ho ben capito cosa vuoi ottenere.Ciao
Ho trovato una soluzione che fa uso di nodi aggiuntivi a partire da un punto sulla coordinata 4:
`\documentclass{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.8}\begin{document}
\begin{tikzpicture}
\begin{axis}[title=Prova,
small,scale=1,
xbar,
enlarge y limits=1,
x tick label style={anchor=north,yshift=-0.5em},
xlabel style={yshift=-0.5em},
xlabel={Effetti},
symbolic y coords={A,B,C},
ytick=data]\addplot coordinates {(5,A) (6,B) (3,C)};
\node (P) at (axis cs:4,A) {};
\node (P1) at (axis description cs:0,0) {};
\node (P2) at (axis description cs:0,1) {};
\node (Q) at (P |- P1) {};
\node (R) at (P |- P2) {};
\draw[thick] (R) — (Q);\end{axis}
\end{tikzpicture}
\end{document}`
In pratica trovo i punti R e Q come intersezione delle rette parallele all’asse x che definiscono la tela in basso ed in alto con la retta verticale passante per P.
Il risultato è una soluzione ma per qualche ragione che non sono riuscito a capire, traccia la retta allontandandosi leggermente dai punti Q ed R. Può darsi che pgfplots setti il valore di qualche proprietà di disegno particoalre.
Questo problema non affligge la soluzione di Liverpool.
Saluti.
R.
::peppo” post=85425Ciao a tutti,
per la serie “a volte ritornano” avrei una richiesta per voi:
Sto componendo un barplot semplicissimo dove una linea dovrebbe indicare un valore soglia, di seguito il codice`
\documentclass{standalone}
\usepackage{pgfplots}\begin{document}
\begin{tikzpicture}
\begin{axis}[
title=Prova,
small,scale=1,
xbar,
enlarge y limits=1,
x tick label style={anchor=north,yshift=-0.5em},
xlabel style={yshift=-0.5em},
xlabel={Effetti},
symbolic y coords={A,B,C},
ytick=data]
\addplot coordinates {(5,A) (6,B) (3,C)};
\addplot[black,sharp plot,thick] coordinates {(4,A) (4,C)};
\end{axis}
\end{tikzpicture}
\end{document}
`come si vede il problema è che la linea va da A fino a C senza considerare l’effetto di enlarge limits. Io vorrei che la mia linea andasse da un estremo all’altro dell’asse. Se fosse possibile vorrei poi aggiungere una piccola scritta al di sopra della stessa.
Mi rendo conto che il problema sia davvero banale ma da solo non sono riuscito a risolverlo. Sapreste aiutarmi?Grazie.
ABPuoi disegnare una linea normale sulla tela del grafico anziché trattarla con \addplot:
`\documentclass{standalone}
\usepackage{pgfplots}\begin{document}
\begin{tikzpicture}
\begin{axis}[
title=Prova,
small,scale=1,
xbar,
enlarge y limits=1,
x tick label style={anchor=north,yshift=-0.5em},
xlabel style={yshift=-0.5em},
xlabel={Effetti},
symbolic y coords={A,B,C},
ytick=data]
\addplot coordinates {(5,A) (6,B) (3,C)};
\draw[black,thick] (axis description cs:0.36,0) — (axis description cs:0.36,1);
\end{axis}
\end{tikzpicture}
\end{document}`Il sistema di riferimento “axis description cs” funziona benone con le y (zero corrisponde alla’asse x ed uno corrisponde al limite superiore della tela), ma occorre regolare a mano l’ascissa (0.36 si avvivina alla posizione effettiva di 4).
Indagando ancora è possibile che la questione abbia una soluzione esatta.
Un saluto.
R.
::ugaciaka” post=85250la cosa che più si avvicina a quanto voluto l’ho realizzata con una tabella, sto cercando di costruirne un ambiente con
`\newenvironment{info}[1]%
{%
\def\testo{#1}%
\begin{table}[ht]
\centering%
\colorbox{gray!20}{%
\begin{tabularx}{\linewidth}{m{3em}>\raggedright X}%
\includegraphics[scale=1]{images/info.png} & {\testo} \tabularnewline%
\end{tabularx}%
}%
\end{table}%
}`ma quando vado ad usarlo
`
\begin{info}
Questo si userà soltanto nelle seguenti condizioni
\end{info}`la prima lettera, in questo esempio Q, rimane all’interno della tabella mentre il resto finisce fuori. Come risolvo?
Ops, è sbagliata la definizione del nuovo ambiente. Leggere la documentazione di \newenvironment.
R.
::ugaciaka” post=85240eccerto che lo so, riformulo la domanda
ho il mio file .tex di cui produco un pdf con pdflatex. Nel mio .tex metto immagini. Qual’è il formato migliore/pesantezza del file risultante?
Fiu, meno male.
Il formato migliore per inserire immagini è il pdf se si tratta di immagini vettoriali il png se si tratta di immagini raster, il jpg se si tratta di immagini raster fotografiche.
Almeno, io di solito mi regolo così.
R.Ps. qual è senza accento… altrimenti Tommaso…
::ugaciaka” post=85225quindi, è meglio il pdf per mettere immagini sul mio documento latex di cui poi creo un pdf?
Pensavo fosse meglio eps …
?
Stai usando latex come compilatore?
Ci sono molti vantaggi ad utilizzare invece pdflatex. Dal sorgente ottieni direttamente il pdf, questo lo sapevi vero?
R.
::ugaciaka” post=85217Premetto la mia assoluta ignoranza sul tema. Ho provato a leggere qualche pagina di Wikipedia.
Inserendo un’immagine eps rispetto a un png per generare un pdf con latex ottengo senza dubbio risultati migliori.
A livello di pesantezza del pdf risultante? Se scalo un eps o un png vengono salvati così come sono nel pdf, e ne viene fatto il resize al volo, oppure vengono salvati già scalati nel pdf?
PS non sapevo in quale sezione del forum postare la domanda.
Il migliore formato è il pdf.
E questo sia in termini di qualità sia in termini di dimensione dei file finali.
Un po’ più di chiarezza nella domanda sarebbe utile.Se usi il pacchetto graphicx, le immagini pdf vengono salvate come riferimento e poi utilizzate nelle pagine del documento anche più volte.
R.
::ajeje87″ post=85205Ho seguito il tuo consiglio però non ho ottenuto il risultato sperato.
Inserendo sia l’opzione width=\textwidth sia height=\textheight ottengo un’immagine enorme senza che questa abbia la risoluzione per vedersi bene in quelle dimensioni. Inoltre, a me lo spazio per la didascalia serve, e spesso ho didascalie abbastanza lunghe. Come faccio a lasciare un po’ di spazio?Scusa se la domanda era poco chiara, per sicurezza riformulo il problema: Ho un’immagine che voglio ad una determinata dimensione (più grande o più piccola si vede peggio) ed ho una didascalia abbastanza corposa; nonostante questo, immagine+testo non sono grandi abbastanza grandi da occupare un’intera pagina (nella mia tesi latex in pratica dedica una pagina solo a loro), ci andrebbe del testo che invece latex mette nella pagina successiva. C’è un modo per occupare lo spazio vuoto di quella pagina con il testo che va a finire nella pagina successiva?
Per quanto riguarda la guida, tempo fa ho letto arteLatex ma non mi sembra si parli in modo specifico del mio problema.
Grazie
Ecco ora ho capito un po’ di più: non è un problema di dimensione immagine ma di distribuzione del testo e dell’immagine.
Se sei in fase di revisione finale puoi fare degli aggiustamenti. Nell’Arte è spiegato come fare nelle sezioni riguardanti gli oggetti mobili.
Altrimenti non ti preoccupare troppo. Normalmente si lascia l’ambiente figure — o table — privo di opzioni di localizzazione per lasciare il calcolo a LaTeX. L’opzione p serve a dire che l’immagine occuperà una pagina.
R.
::ajeje87″ post=85201Salve, scusate se la domanda risulterà banale ma sono un neofita sia del forum che di latex. Ho un problema con un’immagine: compresa di didascalia, è abbastanza grande ma non abbastanza da occupare un’intera pagina come in realtà fa. Riporto il codice che ho usato:
\begin {figure}[http]
\centering
\includegraphics[height=0.28\textheight]{Kajispettriepr}
\caption {\small{didascalia.} }
\label{fig:Kajispettriepr}
\end{figure}Ho provato diversi comandi oltre a http ma non riesco a ottenere altri risultati. Cosa mi consigliate di fare per “riempire” la pagina con altro testo?
Benvenuto/a sul forum.
La risposta principale è probabilmente questa:
inserisci sia l’opzione width=\textwidth sia height=\textheight
verrà calcolata la giusta dimensione mantenendo le proporzioni dell’immagine.
Certo che se ti serve la didascalia devi lasciare un po’ di spazio…Altre cose: non usare \small in \caption ma regola la composizione delle didascalia con le opzioni generali sfruttando il pacchetto caption.
Inoltre inserisci p — e non http — come opzione di posizionamento.In generale dovresti formulare la domande in modo più chiaro, inoltre dovresti leggere una buona guida…
Saluti.
R.
::alegenn” post=85117Salve a tutti,
vi chiedo se esiste un qualche progetto/idea per far in modo che tutti gli editor (o per lo meno i più diffusi) riconoscano le righe magiche e che esse abbiano la medesima sintassi.
TeXshop e TeXworks riconoscono le righe magiche ma esse hanno una sintassi leggermente differente, mi pare che per TeXworks sia:
`% !TEX TS-program = pdflatex
% !TEX encoding = UTF-8 Unicode`
mentre per TeXshop:
`% !TEX encoding = UTF-8 Unicode
% !TEX TS-program = latex`
ma per altri editor la sintassi potrebbe divergere ulteriormente. Personalmente credo che la comodità delle righe magiche sia proprio quella di mostrare con quale codifica e con quale programma si compila, sia si tratti di un file condiviso con altri utenti, sia si tratti di un file da usare su pc differenti.
Da qualche parte mi sembra di aver letto che TeXshop riconosca le righe magiche di TeXworks anche se non cambia le impostazioni del menù a tendina, dove si legge il programma di compilazione corrente, tuttavia non ho idea di cosa accada con altri editor. Credo che un’unica sintassi sarebbe comoda proprio nell’ottica di progetti condivisi, come alcuni che stanno nascendo qui sul GuIT.
Cosa ne pensate?
SaluitPuoi usare Arara (vedi la guida di Enrico), ma devi installare Java.
R.
::
Eccomi qua con notevole e colpevole ritardo.
Vi riporto i codici sorgente pervenuti per il presente concorsone ed alla fine dichiarerò il vincitore.
Ecco quello che avevo scritto io, mirando a scrivere il codice che soddisfacesse allo schema grafico nel più breve tempo possibile:
ho utilizzato l’oggetto nodo multiparte ed un comando appositamente definito che sovrapponesse il disegno di un nodo a due parti con il disegno della freccia ad onda:
`\documentclass{standalone}
\usepackage{inconsolata}\usepackage{tikz}
\usetikzlibrary{shapes.multipart}\tikzstyle{var}=[draw,
line width=.4pt,
rectangle split,
rectangle split parts=2,
minimum width=14.8mm,
rectangle split part align={center},
text depth=0pt]\tikzstyle{data}=[draw,
line width=0.4pt,
minimum width=14.8mm,
rectangle split,
rectangle split parts=2]\def\cbox{\rule[-4pt]{0pt}{14pt}}
\newdimen\step
\step=17mm\def\var(#1,#2)#3{
\node[var] at (#1, #2) {
\texttt{#3}
\nodepart{two}
\cbox
};\begin{scope}[xshift=#1-6mm,yshift=#2-2mm]
\draw[line width=1pt,->,scale=0.32] (0,0) ..
controls (0.6,0.4) and (1,0.5) .. (1.3,-0.1) ..
controls (1.5,-.8) and (2.2, -0.7) ..(3.5,.7);
\end{scope}
}\def\data(#1,#2)#3{
\node[data] at (#1,#2) {
\nodepart{two}
\cbox#3
};\begin{scope}[xshift=#1-3.5mm,yshift=#2+3.5mm,scale=.22]
\draw[line width=1pt,->] (0,0) ..
controls (0.6,0.4) and (1,0.5) .. (1.3,-0.1) ..
controls (1.5,-.8) and (2.2, -0.7) ..(3.5,.7);
\end{scope}
}\begin{document}
\begin{tikzpicture}% assegnazione variabile v
\node[anchor=west] at (0, 2.5*\step) {\texttt{v = 10}};
\var(3cm, 2.5*\step){v}
\data(7.5cm, 2.5*\step){10}% assegnazione variabile q
\node[anchor=west] at (0, 1.5*\step) {\texttt{q = v}};
\var(3cm, 1.5*\step){v}
\var(5cm, 1.5*\step){q}
\data(7.5cm, 1.5*\step){10}% modifica della variabile v
\node[anchor=west] at (0, 0.5*\step) {\texttt{v = v – 5}};
\var(3cm, 0.5*\step){v}
\var(5cm, 0.5*\step){q}
\data(7.5cm, 0.5*\step){5}% disegno partizioni
\foreach \y in {0,1,2,3}
\draw (0,\y*\step) — (8.5,\y*\step);\end{tikzpicture}
\end{document}
`Francesco Endrici mi ha inviato una soluzione completamente diversa, tra l’altro riuscendo a definire così bene i punti di controllo da aver fornito il codice più bello per il disegno della freccia ad onda:
Come potete vedere Francesco ha visto lo schema come una tabella.
`\documentclass[a4paper]{article}
\usepackage[T1]{fontenc}%per il commento
\usepackage[utf8]{inputenc}%per il commento
\usepackage[italian]{babel}%per il commento
\usepackage{booktabs}
\usepackage{tikz}
\usepackage{array}
\title{Concorsone n. 2}
\author{Francesco Endrici}
\date{18 aprile 2013}
% definisco un comando per creare le sottotabelle
% il comando genera una tabellina. Se il primo argomento, opzionale, è “u” (up) allora nella cella in alto mette una freccia con scala=1 e nella cella in basso mette il contenuto dell'argomento 2. Altrimenti (se è “d”, che è anche il valore di default) sopra va #2 e sotto va una freccia con scala=1.5.
\newcolumntype{M}{>{\sffamily\centering\arraybackslash}m{3em}}
\newcommand{\subtab}[2][d]{%
\ifx#1u%
\def\firstcell{\robyarrow}%
\def\secondcell{#2}%
\else
\ifx#1d%
\def\firstcell{#2}%
\def\secondcell{\robyarrow[1.5]}%
\else
\errmessage{Eh no mio caro, puoi usare solo u e d come argomenti opzionali!}%
\fi
\fi
\begin{tabular}{|M|}
\hline
\firstcell\\
\hline
\rule[-0.67em]{0pt}{2em}\secondcell\\
\hline
\end{tabular}
}
% creo la freccia, di dimensioni variabili. (voelndo il “thock” potrebbe diventare “very thick”)
\newcommand{\robyarrow}[1][1]{%
\begin{tikzpicture}[baseline=(current bounding box.south),scale=#1]
\path[use as bounding box] (0, 0.3em) rectangle (1.7em, -0.2em);
\draw [->,thick] (0,0.0) .. controls (1em,0.8em) and (0.2em,-1.4em) .. (2em,0.4em);
\end{tikzpicture}
}\begin{document}
\begin{tabular}{@{\hspace{0.4em}}>\sffamily l@{\hspace{2.1em}} c@{\hspace{1.5em}} c@{\hspace{2.8em}} c}% misure messe a occhio per rendere la tabella simile all'originale, ma anche la spaziatura di default andava benissimo!
\toprule
v = 10 &\subtab{v}& &\subtab{10}\\
\midrule
q = v &\subtab{v}&\subtab{q}&\subtab{10}\\
\midrule
v = v – 5 &\subtab{v}&\subtab{q}&\subtab{5}\\
\bottomrule
\end{tabular}\end{document}
`Ecco invece la soluzione di Claudio Fiandrino:
mentre ha esagerato nel voler disegnare la freccia ad onda addirittura con il pacchetto hobby, ha poi snocciolato un codice programmando TikZ come solo lui sa fare.
`\documentclass[11pt,a4paper]{article}
\usepackage{charter}
\usepackage{tikz}
\usepackage{pdftexcmds}
\usepackage{etoolbox}
\usetikzlibrary{calc,hobby,matrix}% codice di Enrico:
% http://www.guitex.org/home/it/forum/5-tex-e-latex/83195-la-libreria-hobby-tikz-non-funziona-piu#83203
\ExplSyntaxOn
\cs_if_exist:NF \prg_stepwise_function:nnnN { \cs_gset_eq:NN \prg_stepwise_function:nnnN \int_step_function:nnnN }
\cs_if_exist:NF \prg_stepwise_inline:nnnn { \cs_gset_eq:NN \prg_stepwise_inline:nnnn \int_step_inline:nnnn }
\ExplSyntaxOff\newcommand{\smootharrow}[1][1]{%
\begin{tikzpicture}[scale=#1]
\draw[->](0,0) to[curve through={(0.01,0.01)..(0.19,0.1)..(0.3,-0.05)..(0.7,0.115)}](0.8,0.21);
\end{tikzpicture}
}\makeatletter
\tikzset{item style/.style={
inner ysep=2pt,
outer sep=0pt,
text depth=0pt,
},
assignment style/.style={
align=left,
minimum width=2cm,
text width=2cm,
minimum height=0.5cm,
text height=3pt,
text depth=0pt,
},
item/.code args={#1 and #2}{
\ifnum\pdf@strcmp{#1}{smooth arrow}=\z@%
\draw(0,-0.3)rectangle(1,0.2)node[midway,item style]{#2};
\draw(0,0.2)rectangle(1,0.55)node[midway]{\smootharrow[0.5]};
\else%
\ifnum\pdf@strcmp{#2}{smooth arrow}=\z@%
\draw(0,-0.3)rectangle(1,0.2)node[midway]{\smootharrow[0.75]};
\draw(0,0.2)rectangle(1,0.55)node[midway,item style]{#1};
\else%
\draw(0,-0.3)rectangle(1,0.2)node[midway]{#2};
\draw(0,0.2)rectangle(1,0.55)node[midway]{#1};
\fi%
\fi%
},
smootharrow/.code={
\draw[->](0,0) to[curve through={(0.01,0.01)..(0.19,0.1)..(0.3,-0.05)..(0.7,0.115)}](0.8,0.21);
},
every picture/.style={font=\sffamily,},
}\newcounter{lines}
\setcounter{lines}{1}% that's just an alias for \node
\def\variable#1{\node[item=#1 and smooth arrow]{};}
\def\value#1{\node(m-\thelines-4)[item=smooth arrow and #1]{};}
\def\assignment#1{\node(m-\thelines-1)[assignment style]{#1};}
\def\void{\node[]{};}
\def\endline{\stepcounter{lines}\\}
\def\endenv{\\}
\makeatother% code by Andrew:
% http://tex.stackexchange.com/a/28452/13304
\let\matamp=&
\catcode`\&=13
\makeatletter
\def&{\iftikz@is@matrix
\pgfmatrixnextcell
\else
\matamp
\fi}
\makeatother\pgfkeys{/show variables environment/.cd,
column sep/.initial={1em},
column sep/.get=\columnsep,
column sep/.store in=\columnsep,
row sep/.initial={1ex},
row sep/.get=\rowsep,
row sep/.store in=\rowsep,
scale factor/.initial={1},
scale factor/.get=\scalefactor,
scale factor/.store in=\scalefactor,
}\tikzset{matrix aspect/.style={
column sep=\columnsep,
column 1/.style={column sep=1.2*\columnsep},
row sep=\rowsep
}
}\usepackage{environ}
\NewEnviron{showvariables}[1][]{%
\pgfkeys{/show variables environment/.cd,#1}
\setcounter{lines}{1}
\scalebox{\scalefactor}{
\begin{tikzpicture}[baseline]
\matrix[matrix aspect]{
\BODY
};
\pgfmathtruncatemacro\endloop{\thelines-1}
\foreach \nline[evaluate=\nline as \nextline using (int(\nline+1))] in {1,…,\endloop}{
\draw[shorten <=-0.5cm, shorten >=-1.25cm]
($(m-\nline-1.south west)!0.3!(m-\nextline-1.north west)$)–
($(m-\nline-4.south east)!0.35!(m-\nextline-4.north east)$);
}
% last
\draw[shorten <=-0.5cm, shorten >=-1.25cm]
([yshift=-0.18cm]m-\thelines-1.south west)–([yshift=-0.3cm]m-\thelines-4.south east);
% first
\draw[shorten <=-0.5cm, shorten >=-1.25cm]
([yshift=0.425cm]m-1-1.north west)–([yshift=0.545cm]m-1-4.north east);
\end{tikzpicture}
}
}\BeforeBeginEnvironment{showvariables}{\medskip\par}
\AfterEndEnvironment{showvariables}{\par\medskip\noindent}\begin{document}
\thispagestyle{empty}\begin{showvariables}
\assignment{v = 10} & \variable{v} & \void & \value{10}\endline
\assignment{ q = v} & \variable{v} & \variable{q} & \value{10}\endline
\assignment{ v = v – 5} & \variable{v} & \variable{q} & \value{5}\endenv
\end{showvariables}Un esempio con distanze di riga e di colonna personalizzate:
\begin{showvariables}[column sep=3em,row sep=3ex]
\assignment{v = 10} & \variable{v} & \void & \value{10}\endline
\assignment{ q = v} & \variable{v} & \variable{q} & \value{10}\endline
\assignment{v = v – 5} & \variable{v} & \variable{q} & \value{5}\endline
\assignment{ z = v} & \variable{v} & \variable{z} & \value{5}\endenv
\end{showvariables}Scalare l'ambiente:
\begin{showvariables}[scale factor=1.5]
\assignment{v = 10} & \variable{v} & \void & \value{10}\endline
\assignment{ q = v} & \variable{v} & \variable{q} & \value{10}\endline
\assignment{ v = v – 5} & \variable{v} & \variable{q} & \value{5}\endenv
\end{showvariables}
\end{document}`Visto il regolamento del concorsone #2 apparso nel primo post,
visto che sia Francesco che Claudio hanno presentato due soluzione valide entro i termini,
visto che oggi è una bella giornata di sole,
consultata la commissione in seduta pomeridiana,annuncio quindi il vincitore del concorsone #2 è Claudio Fiandrino.
Motivazione: proprio perché il codice presentato è complesso, più da sviluppatore di pacchetti che non da semplice utente, Claudio è pervenuto alla definizione di alcuni comandi definendo lo schema in modo semantico. Poiché la commissione riserva enorme importanza al linguaggio come essenziale mezzo di utilizzo e sviluppo dei sistemi basati su TeX, si è premiata la soluzione di Claudio.
Francesco, ha proposto un codice pragmatico dimostrando che le soluzioni possono presentare sorprendenti e diversi punti di vista, e riuscendo a trovare la più bella definizione possibile per il disegno della freccia ad onda.Grazie a tutti i partecipanti per aver contribuito con ironia al concorsone.
R.
-
AutoreRisposte