\textwidth

  • Creatore
    Topic
  • #18505
    Up
    0
    Down
    ::


    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}
    `

    Grazieeeee

Visualizzazione 14 filoni di risposte
  • Autore
    Risposte
    • #18506
      Up
      0
      Down
      ::

      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

    • #18507
      Up
      0
      Down
      ::


      e `{\strip@pt\textwidth} ` cosa vuol dire????

    • #18508
      Up
      0
      Down
      ::


      la lunghezza \texwidth è espressa in punti, quindi è xxpt cioé ad esempio 400pt.

      il comando `
      {\strip@pt\textwidth}
      `
      elimina dallo sviluppo di \textwidth (cioé 400pt) i caratteri pt. Risultato abbiamo il numero cercato 400.

      Michele

    • #18509
      Up
      0
      Down
      ::


      ultima cosa.. io avrei bisogno anche di definirmi una lunghezza tipo “\unita” che è una frazione di \textwidth.. come posso fare???

      Grazieeee a tuttiii.. siete grandi…

    • #18510
      Up
      0
      Down
      ::

      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

    • #18511
      Up
      0
      Down
      ::


      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…

    • #18512
      Up
      0
      Down
      ::

      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

    • #18513
      Up
      0
      Down
      ::


      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…

    • #18514
      DMW
        Up
        0
        Down
        ::


        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

      • #18515
        Up
        0
        Down
        ::

        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

      • #18516
        DMW
          Up
          0
          Down
          ::


          Grazie Tante. 😀 😀

          Andrea

        • #18517
          Up
          0
          Down
          ::


          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}`

        • #18518
          Up
          0
          Down
          ::

          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

        • #18519
          Up
          0
          Down
          ::


          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

        • #18520
          DMW
        Visualizzazione 14 filoni di risposte
        • Devi essere connesso per rispondere a questo topic.

        Go to top