Listings e barra rovescia

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


      Ciao a tutti.

      Come mai il seguente
      `\documentclass{minimal}
      \usepackage{listings}

      \lstset{language=[LaTeX]Tex,
      basicstyle=\ttfamily}

      \newcommand{\comando}[1]{\lstinline!#1!}

      \begin{document}
      Nel preambolo deve essere presente anche il comando \comando{\makeindex}.
      \end{document}`
      produce l’errore:
      `! Improper alphabetic constant.`
      mentre se scrivo direttamente
      `\documentclass{minimal}
      \usepackage{listings}

      \lstset{language=[LaTeX]Tex,
      basicstyle=\ttfamily}

      \begin{document}
      Nel preambolo deve essere presente anche il comando \lstinline!\makeindex!.
      \end{document}`
      va tutto bene? Perché i due codici non sono equivalenti?

      Fin qui è solo una curiosità. In effetti, visto che i comandi iniziano tutti con una barra rovescia, penso che sarebbe meglio definire una volta per tutte un comando che la inserisca automaticamente:
      `\documentclass{minimal}
      \usepackage{listings}

      \lstset{language=[LaTeX]Tex,
      basicstyle=\ttfamily}

      \newcommand{\comando}[1]{\lstinline!\\#1!}

      \begin{document}
      Nel preambolo deve essere presente anche il comando \comando{makeindex}.
      \end{document}
      `
      Quest’ultimo codice funziona e fa quello che avevo in mente, ma non so se è “ortodosso”, visto che devo scrivere
      `\\`
      anziché
      `\`

      Grazie,
      L.

    Visualizzazione 5 filoni di risposte
    • Autore
      Risposte
      • #17483
        DMW
          Up
          0
          Down
          ::


          Prova così
          `
          \makeatletter
          \newcommand\cmd{%
          \leavevmode\bgroup %
          \def\lst@boxpos{b}%
          \lsthk@PreSet\lstset{language=[LaTeX]TeX,flexiblecolumns,basicstyle=\ttfamily\color{red}}%
          \lsthk@TextStyle
          \@ifnextchar\bgroup{\afterassignment\lst@InlineG \let\@let@token}%
          \lstinline@}
          \makeatother

          ….

          \cmd{\makeindex} oppure \cmd|\makeindex|
          `

          Vedi se funziona bene. Per prova ho messo il font rosso.

          Ciao

          Andrea

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

            Prova così…

            Accidenti che cosa complicata! Il comando \lstinline non dovrebbe essere come il comando \verb, e quindi non dovrebbe semplicemente esimersi dall’interpretare quello che c’è nel suo argomento?

            Fra l’altro, ho visto che l’autore della Mica tanto breve Intro usa questo codice:
            `% Some commands for helping with INDEX creation
            %
            \newcommand{\bs}{\symbol{'134}}%Print backslash
            %\newcommand{\bs}{\ensuremath{\mathtt{\backslash}}}%Print backslash
            % Index entry for a command (\cih for hidden command index
            \newcommand{\cih}[1]{%
            \index{comandi!#1@\texttt{\bs#1}}%
            \index{#1@\texttt{\hspace*{-1.2ex}\bs #1}}}
            \newcommand{\ci}[1]{\cih{#1}\texttt{\bs#1}}
            `
            che funzionerà anche, ma è così intricato… A me piacerebbe qualcosa di più semplice (o almeno capire il motivo della necessità delle complicazioni!).

            Grazie,
            L.

          • #17485
            DMW
              Up
              0
              Down
              ::

              Prova così…

              Accidenti che cosa complicata! Il comando \lstinline non dovrebbe essere come il comando \verb, e quindi non dovrebbe semplicemente esimersi dall’interpretare quello che c’è nel suo argomento?

              Fra l’altro, ho visto che l’autore della Mica tanto breve Intro usa questo codice:
              `% Some commands for helping with INDEX creation
              %
              \newcommand{\bs}{\symbol{'134}}%Print backslash
              %\newcommand{\bs}{\ensuremath{\mathtt{\backslash}}}%Print backslash
              % Index entry for a command (\cih for hidden command index
              \newcommand{\cih}[1]{%
              \index{comandi!#1@\texttt{\bs#1}}%
              \index{#1@\texttt{\hspace*{-1.2ex}\bs #1}}}
              \newcommand{\ci}[1]{\cih{#1}\texttt{\bs#1}}
              `
              che funzionerà anche, ma è così intricato… A me piacerebbe qualcosa di più semplice (o almeno capire il motivo della necessità delle complicazioni!).

              Grazie,
              L.

              Quelli sono comandi per generare l’indice, li puoi copiare e usare al posto di \index.
              Cioè \index{parola} genera parola n mentre \ci{parola} dovrebbe generare \parola n così lo differenzia come comando. Una cosa simile fa il prof. Beccari, vedi i sorgeni di GuidaLaTeX, li trovi nell’area riservata.

              Ciao

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


                Per ora sto usando il comando
                `\newcommand{\comando}[1]{\lstinline!\\#1!}`
                che mi pare funzionare. Mi restano due curiosità:
                1. perché devo scrivere \\ anziché un semplice \?
                2. il comando va bene o può comportare qualche prioblema (che mi sfugge)?

                Grazie mille,
                L.

              • #17487
                DMW
                  Up
                  0
                  Down
                  ::

                  Per ora sto usando il comando
                  `\newcommand{\comando}[1]{\lstinline!\\#1!}`
                  che mi pare funzionare. Mi restano due curiosità:
                  1. perché devo scrivere \\ anziché un semplice \?
                  2. il comando va bene o può comportare qualche prioblema (che mi sfugge)?

                  Grazie mille,
                  L.

                  Ho dato una veloce occhiata e a pag. 47 fa come hai scritto tu.

                  Quindi non preoccuparti proprio. La stessa cosa succede se vuoi inserire parentesi
                  `
                  \comando{comando{ …\ … }}%non va
                  \comando{comando\{ …\ … \}}%va
                  `

                  Quindi si mette una backslash per proteggere ciò che viene subito dopo.

                  Ciao

                  Andrea

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

                    Ho dato una veloce occhiata e a pag. 47 fa come hai scritto tu.
                    Quindi non preoccuparti proprio…

                    Ottimo!

                    Grazie ancora, Andrea.

                    A presto,
                    L.

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

                Go to top