listings: spazi evidenziati di lunghezza a scelta

  • Creatore
    Topic
  • #21064
    lorenzo.pantieri
    Partecipante
      Up
      0
      Down
      ::


      Ciao a tutti,

      il pacchetto listings (con l’opzione showspaces=true), permette di evidenziare gli spazi
      `\lstinline! !
      `
      A me interesserebbe evidenziare uno spazio di lunghezza arbitraria (per la precisione 0.166em; poi 1em; poi 2em).

      In effetti si potrebbe usare il comando
      `\newcommand{\demowidth}[1]{\rule{0.3pt}{1.3ex}\rule{#1}{0.3pt}\rule{0.3pt}{1.3ex}}`
      che non è malaccio, ma che stona con il risultato di listings (che prefersico).

      Grazie mille,
      L.

    Visualizzazione 6 filoni di risposte
    • Autore
      Risposte
      • #21065
        Up
        0
        Down
        ::

        Ciao a tutti,

        il pacchetto listings (con l’opzione showspaces=true), permette di evidenziare gli spazi
        `\lstinline! !
        `
        A me interesserebbe evidenziare uno spazio di lunghezza arbitraria (per la precisione 0.166em; poi 1em; poi 2em).

        In effetti si potrebbe usare il comando
        `\newcommand{\demowidth}[1]{\rule{0.3pt}{1.3ex}\rule{#1}{0.3pt}\rule{0.3pt}{1.3ex}}`
        che non è malaccio, ma che stona con il risultato di listings (che prefersico).

        Non userei quel sistema, ma forse due sbarrette con una freccia a due punte e, se ci sta, la lunghezza scritta in mezzo (molto in piccolo)
        `\makeatletter
        \newcommand\lrsmallarrfill{$\m@th\scriptscriptstyle
        \mkern2mu\mathord\leftarrow\mkern -7mu
        \cleaders\hbox{$\scriptscriptstyle\mkern-2mu\smash-\mkern-2mu$}\hfill
        \mkern-7mu\mathord\rightarrow\mkern2mu$}
        \newcommand\lsmallarrfill{$\m@th\scriptscriptstyle
        \mkern2mu\mathord\leftarrow\mkern -7mu
        \cleaders\hbox{$\scriptscriptstyle\mkern-2mu\smash-\mkern-2mu$}\hfill
        \mkern-7mu\smash-$}
        \newcommand\rsmallarrfill{$\m@th\scriptscriptstyle
        \smash-\mkern-7mu
        \cleaders\hbox{$\scriptscriptstyle\mkern-2mu\smash-\mkern-2mu$}\hfill
        \mkern-7mu\mathord\rightarrow\mkern2mu$}

        \newcommand{\showspace}{\@ifstar{\@showspaces}{\@showspace}}
        \def\@showspace#1{%
        \hbox to#1{\rlap{$\scriptscriptstyle|$}%
        \ifdim#1>9pt\lrsmallarrfill\else\hfill\fi\llap{$\scriptscriptstyle|$}}}
        \def\@showspaces#1{%
        \hbox to#1{\rlap{$\scriptscriptstyle|$}%
        \ifdim#1>9pt\lsmallarrfill{\TINY#1}\rsmallarrfill\else\hfill\fi
        \llap{$\scriptscriptstyle|$}}}
        \def\TINY{\tiny\spaceskip=.1em}
        \makeatother`
        Chiamerai \showspace{1 cm} oppure \showspace*{1 cm} se vuoi che venga indicata la dimensione (lascia uno spazio fra numero e unità di misura).

        Puoi indicare spazi da 2 pt in su; se vuoi indicare la misura, devi fare esperimenti per vedere il minimo. Fino a 9pt le frecce non compaiono (non ci starebbero proprio).

        Ciao
        Enrico

      • #21066
        lorenzo.pantieri
        Partecipante
          Up
          0
          Down
          ::


          Caro Enrico, i paradossi della vita: tu mi hai scritto (gratis) un comando ad hoc, e io mi lamento e dico che non va bene… 😳

          In effetti il tuo comando non funziona per
          `\showspace{0.166 em}
          `
          ma poi il risultato è diverso da quello che si ottiene con listings…

          Aspetta, non c’è un modo per dire a listings (o a LaTeX):
          “Adesso lo spazio è pari a 0.166 em”. Poi si chiama semplicemente
          `\lstinline! !
          `
          E poi:
          “Adesso lo spazio è pari a 1 em”. E di nuovo
          `\lstinline! !
          `
          E poi, alla fine:
          “Adesso lo spazio torna ad essere quello predefinito”.

          Spiccio e sporco, ma a me andrebbe benissimo!

          Scusami davvero, 😳
          L.

        • #21067
          Up
          0
          Down
          ::

          Caro Enrico, i paradossi della vita: tu mi hai scritto (gratis) un comando ad hoc, e io mi lamento e dico che non va bene… 😳

          In effetti il tuo comando non funziona per
          `\showspace{0.166 em}
          `
          ma poi il risultato è diverso da quello che si ottiene con listings…

          Aspetta, non c’è un modo per dire a listings (o a LaTeX):
          “Adesso lo spazio è pari a 0.166 em”. Poi si chiama semplicemente
          `\lstinline! !
          `
          E poi:
          “Adesso lo spazio è pari a 1 em”. E di nuovo
          `\lstinline! !
          `
          E poi, alla fine:
          “Adesso lo spazio torna ad essere quello predefinito”.

          Spiccio e sporco, ma a me andrebbe benissimo!

          Sono concetti completamente diversi. Lo spazio indicato da listings è il “carattere spazio”, una spaziatura è altro.

          Ciao
          Enrico

        • #21068
          DMW
            Up
            0
            Down
            ::


            Un modo ci sarebbe. Però non otterrai mai delle misure esatte, tipo 1cm o 1,5cm, ma solo multipli dello spazio vuoto. Il risultato è come il simbolo che metti mediante l’opzione showspaces, solo che è più allungato.

            Ciao

            Andrea

          • #21069
            lorenzo.pantieri
            Partecipante
              Up
              0
              Down
              ::


              Grazie mitici Enrico ed Andrea.

              Il Prof. mi aveva quasi convinto con il suo comando e le sue osservazioni, solo che nel caso 0.166 em (che a me serve) il comando non funziona.

              Mi sa che mi tengo il \demowidth. Davvero è impossibile modificarlo in modo da renderlo un pochino più simile a quanto si vede con listings?

              Grazie mille, di cuore!

              Ciao,
              L.

            • #21070
              DMW
                Up
                0
                Down
                ::


                Prova così
                `\newcommand{\demowidth}[1]{\rule{0.4pt}{.3ex}\rule{#1}{0.4pt}\rule{0.4pt}{.3ex}}`

                è identico.

                Ciao

                Andrea

              • #21071
                lorenzo.pantieri
                Partecipante
                  Up
                  0
                  Down
                  ::

                  `\newcommand{\demowidth}[1]{\rule{0.4pt}{.3ex}\rule{#1}{0.4pt}\rule{0.4pt}{.3ex}}`

                  Ottimo!

                  Grazi mille,
                  L.

              Visualizzazione 6 filoni di risposte
              • Devi essere connesso per rispondere a questo topic.

              Go to top