- Questo topic ha 15 risposte, 4 partecipanti ed è stato aggiornato l'ultima volta 18 anni, 10 mesi fa da
DMW.
-
CreatoreTopic
-
7 Novembre 2007 alle 12:51 #18505
-
CreatoreTopic
-
AutoreRisposte
-
-
7 Novembre 2007 alle 13:28 #18506::
Qualcuno sa spiegarmi perché nella definizione di una picture non mi accetta \textwidth???
`\begin{picture}(\textwidth,2)
\put(0,1){\line(1,0){\textwidth}}
\end{picture}`Perché \textwidth è una lunghezza e non un numero. I numeri che specifichi nell’ambiente picture vanno interpretati come moltiplicatori della lunghezza \unitlength.
Se \unitlength ha il suo valore usuale (1 pt), puoi estrarre facilmente il fattore che ti serve con
`\makeatletter
\newcommand{\textwidthfactor}{\strip@pt\textwidth}
\makeatother`
e usare \textwidthfactor invece di \textwidth. Ma se desideri solo disegnare un filetto che occupi la giustezza (una riga orizzontale, per intenderci), basta scrivere
`\hrule`
fra due righe vuote.Se invece giochi con \unitlength, la faccenda è leggermente più complicata.
Ciao
Enrico
-
7 Novembre 2007 alle 13:51 #18507
-
7 Novembre 2007 alle 13:56 #18508
-
7 Novembre 2007 alle 14:07 #18509
-
7 Novembre 2007 alle 17:35 #18510::
ultima cosa.. io avrei bisogno anche di definirmi una lunghezza tipo “\unita” che è una frazione di \textwidth.. come posso fare???
`0.5\textwidth`
Se devi usare quella lunghezza più volte:
`\newlength{\unita}
\setlength{\unita}{0.5\textwidth}`
Puoi usare qualunque numero al posto di 0.5 (purché la dimensione risultante non sia superiore al massimo ammesso, cioè poco meno di 576 cm).Ciao
Enrico
-
7 Novembre 2007 alle 18:20 #18511::
Ho provato a scrivere questo…
`
\begin{document}\newlength{\unitl}
\setlength{\unitl}{0.5\textwidthfactor}\setlength{\unitlength}{1pt}
\begin{picture}(\textwidthfactor,\textwidthfactor)
\put(0,0){\line(0,1){\textwidthfactor}}
\put(1,0){\line(0,1){\unitl}}
\end{picture}\end{document}
`..ma mi da errore nel definire \unitl e se lo inserisco al posto della lunghezza mi disegna solo la linea con la larghezza del foglio.. e non la linea con lunghezza / 2
..help.. scusate.. ma sono un po alle prime armi con il disegno…
-
7 Novembre 2007 alle 21:21 #18512::
Ho provato a scrivere questo…
`
\begin{document}\newlength{\unitl}
\setlength{\unitl}{0.5\textwidthfactor}\setlength{\unitlength}{1pt}
\begin{picture}(\textwidthfactor,\textwidthfactor)
\put(0,0){\line(0,1){\textwidthfactor}}
\put(1,0){\line(0,1){\unitl}}
\end{picture}\end{document}
`..ma mi da errore nel definire \unitl e se lo inserisco al posto della lunghezza mi disegna solo la linea con la larghezza del foglio.. e non la linea con lunghezza / 2
..help.. scusate.. ma sono un po alle prime armi con il disegno…
Nelle coordinate che passi all’ambiente picture devono esserci NUMERI 👿 Non lunghezze.
Ciao
Enrico
-
8 Novembre 2007 alle 6:52 #18513::
Si, ma perchè così funziona…`
\begin{document}\setlength{\unitlength}{1pt}
\begin{picture}(\textwidthfactor,\textwidthfactor)
\put(0,0){\line(0,1){\textwidthfactor}}
\end{picture}\end{document}
`e così no???
`
\begin{document}\newlength{\unitl}
\setlength{\unitl}{0.5\textwidthfactor}\setlength{\unitlength}{1pt}
\begin{picture}(\textwidthfactor,\textwidthfactor)
\put(0,0){\line(0,1){\textwidthfactor}}
\put(1,0){\line(0,1){\unitl}}
\end{picture}\end{document}
`quello sopra funzion perfettamente…
-
8 Novembre 2007 alle 7:17 #18514::
Ti è stato già detto che non puoi mettere lunghezze, ma numeri puri, e tu ci rimetti \unitl che è una lunghezza?Devi rendere \unitl un numero puro mediante \strip@pt.
`
\makeatletter
\newcommand{\textwidthfactor}{\strip@pt\textwidth}
\newlength{\unitl}
\setlength{\unitl}{.5\textwidth}
\newcommand{\stripunitl}{\strip@pt\unitl}
\makeatother\begin{document}
\setlength{\unitlength}{1pt}
\begin{picture}(\textwidthfactor,\textwidthfactor)
\put(0,0){\line(0,1){\textwidthfactor}}
\put(0,0){\line(1,0){\stripunitl}}
\end{picture}
\end{document}`Ho hanche cambiato l’esempio così si vede meglio.
Ciao
Andrea
-
8 Novembre 2007 alle 11:34 #18515::
Ti è stato già detto che non puoi mettere lunghezze, ma numeri puri, e tu ci rimetti \unitl che è una lunghezza?
C’è una soluzione abbastanza generale al problema di passare all’ambiente picture una frazione di una certa dimensione in modo che il risultato sia corretto tenendo conto di \unitlength; si devono usare le nuove primitive di e-TeX, ma tutte le distribuzioni recenti usano pdftex per compilare i documenti LaTeX e le estensioni di e-TeX sono quindi presenti.
`\newcommand*{\factor}[1]{\number\numexpr\dimexpr#1/\unitlength\relax}`
Se usiamo \factor{.5\textwidth}, ciò che accade è:
(1) \dimexpr .5\textwidth calcola la dimensione richiesta L;
(2) \numexpr L /\unitlength calcola (troncando) il rapporto fra le due dimensioni Q;
(3) \number Q produce la rappresentazione numerica.La richiesta di Nick di usare la metà di \textwidth diventerebbe
`\begin{picture}(\factor{.5\textwidth},\factor{.5\textwidth})
\put(0,0){\line(0,1){\factor{.5\textwidth}}}
\put(1,0){\line(0,1){\factor{.5\textwidth}}}
\end{picture}`
C’è il troncamento di mezzo, ma per gli scopi di una picture dovrebbe bastare.Ciao
Enrico
-
8 Novembre 2007 alle 11:49 #18516
-
8 Novembre 2007 alle 15:27 #18517::
Grazie grazie.. qualcosa sono riuscito a combinare.. ma adex vorrei definire dei comandi per accorciarmi il lavoro…e mi da questo errore..
`
Runaway argument?
{
! Paragraph ended before \factor was complete.
\par
`e questo è il codice..
`
\makeatletter
\newcommand*{\factor}[1]{\number\numexpr\dimexpr#1/\unitlength\relax}
\makeatother\newcommand{\rectangle}[2]{
\put(\factor{.006\textwidth}-\factor{#1},\factor{#2}){\framebox(\factor{.05\textwidth}, \factor{.025\textwidth})}
}\begin{document}
\setlength{\unitlength}{1pt}
\begin{picture}(\factor{\textwidth},\factor{1.2\textwidth})
\rectangle{\factor{.06\textwidth},\factor{1.1\textwidth}}
\end{picture}\end{document}`
-
8 Novembre 2007 alle 15:43 #18518::
Grazie grazie.. qualcosa sono riuscito a combinare.. ma adex vorrei definire dei comandi per accorciarmi il lavoro…
e mi da questo errore..
`
Runaway argument?
{
! Paragraph ended before \factor was complete.
\par
`e questo è il codice..
`
\makeatletter
\newcommand*{\factor}[1]{\number\numexpr\dimexpr#1/\unitlength\relax}
\makeatother\newcommand{\rectangle}[2]{
\put(\factor{.006\textwidth}-\factor{#1},\factor{#2}){\framebox(\factor{.05\textwidth}, \factor{.025\textwidth})}
}\begin{document}
\setlength{\unitlength}{1pt}
\begin{picture}(\factor{\textwidth},\factor{1.2\textwidth})
\rectangle{\factor{.06\textwidth},\factor{1.1\textwidth}}
\end{picture}\end{document}`
Puoi forse scrivere
`\put(10-5,2){\framebox{aaa}}`
in un ambiente picture? Naturalmente no.Modifica la definizione di \factor in questo modo:
`\newcommand*{\factor}[1]{%
\number\numexpr\dimexpr#1\relax/\unitlength\relax}`
Non ho tempo di provare, ma dovrebbe riuscire la cosa seguente:
`\newcommand{\rectangle}[2]{%
\put(\factor{.006\textwidth-#1},\factor{#2})%
{\framebox(\factor{.05\textwidth}, \factor{.025\textwidth})}%
}`
Non dimenticarti quei segni % che ho messo.Aggiungo che stai usando \rectangle a sproposito:
`\begin{picture}(\factor{\textwidth},\factor{1.2\textwidth})
\rectangle{.06\textwidth}{1.1\textwidth}
\end{picture}`
dà ciò che volevi (penso); \rectangle ha due argomenti che devono essere dimensioni, non numeri puri.Studiati Tikz, che è molto più potente.
Ciao
Enrico
-
8 Novembre 2007 alle 16:23 #18519::
No no rectangle non lo faccio per niente xke modifica le coordinate che gli passo.. cmq ho modificato tutto e mi da un altro errore..`
! Missing \endcsname inserted.
\relax
l.37 \end
{picture}
`..qualcuno ha un buon manuale di TiKz… che provo anche a riguardarmi quello.. ma non devo fare un disegno complesso.. è una cazzatina di linee e rettangoli.. è x questo che guardavo di arrangiarmi con graphicx…
Vi pagherò da bere se riesco a finirlo…
Grazie
-
8 Novembre 2007 alle 16:26 #18520::
Ecco il link
http://tug.ctan.org/graphics/pgf/doc/generic/pgf/version-for-pdftex/en/pgfmanual.pdfCiao
Andrea
-
-
AutoreRisposte
- Devi essere connesso per rispondere a questo topic.