problemi con lstlisting

  • Creatore
    Topic
  • #18090
    Up
    0
    Down
    ::


    questo è il codice che genera l’errore:

    `\documentclass[a4paper,12pt]{article}

    \usepackage{color}
    \definecolor{grayback}{rgb}{0.9,0.9,0.9}
    \definecolor{grayrows}{rgb}{0.5,0.5,0.5}

    \usepackage{listings}
    \lstdefinestyle{mio_stile}{
    numbers=left,
    stepnumber=1,
    numberstyle=\footnotesize\color{grayrows},
    numbersep=10pt,
    firstnumber=1,
    tabsize=2,
    keepspaces=true,
    xleftmargin=20pt
    frame=ltrb,
    basicstyle=\small,
    keywordstyle={\color{blue}\bfseries},
    identifierstyle=\ttfamily,
    stringstyle=\ttfamily,
    captionpos=t,
    abovecaptionskip=15pt,
    showstringspaces=false,
    commentstyle={\color{grayrows}\bfseries}%,
    }

    \begin{document}

    \newcommand{\miocomando}[1]{
    #1
    }
    %%con questo codice funziona tutto, verifico che non ci sono problemi con
    %%le opzioni di lstlisting
    \begin{lstlisting}[style=mio_stile,caption={Che bel codice}]
    codice codice codice
    \end{lstlisting}

    \miocomando{
    %%commentando questo tutto funziona
    %%decommentandolo non riesce a finire la compilazione: entra in una sorta di loop
    \begin{lstlisting}[style=mio_stile,caption={Che bel codice}]
    codice codice codice
    \end{lstlisting}

    }

    \end{document}`

    a questo punto mi sembra logico dedurre che il problema sia mettere il tutto in un mio comando… La cosa però a me serve così: come ne vengo fuori??

Visualizzazione 3 filoni di risposte
  • Autore
    Risposte
    • #18091
      DMW
        Up
        0
        Down
        ::


        Quello che cerchi di fare non ha senso. Che lo definisci a fare \miocomando se poi è uguale al suo argomento?
        `
        \newcommand{\miocomando}[1]{#1}
        ……
        \miocomando{bla bla}
        `

        è identico a
        `
        bla bla`

        usi un comando che non fa nulla. Comunque se tu vuoi definire un ambiente listings con stile uguale a mio_stile basta usare \lstnewenvironment. Esempio:
        `
        \documentclass[a4paper,12pt]{article}

        \usepackage{color}
        \definecolor{grayback}{rgb}{0.9,0.9,0.9}
        \definecolor{grayrows}{rgb}{0.5,0.5,0.5}

        \usepackage{listings}
        \lstdefinestyle{mio_stile}{
        numbers=left,
        stepnumber=1,
        numberstyle=\footnotesize\color{grayrows},
        numbersep=10pt,
        firstnumber=1,
        tabsize=2,
        keepspaces=true,
        xleftmargin=20pt,
        frame=ltrb,
        basicstyle=\small,
        keywordstyle={\color{blue}\bfseries},
        identifierstyle=\ttfamily,
        stringstyle=\ttfamily,
        captionpos=t,
        abovecaptionskip=15pt,
        showstringspaces=false,
        commentstyle={\color{grayrows}\bfseries},
        }
        \lstnewenvironment{codice}[1][]%
        {\lstset{style=mio_stile,#1}}%
        {}

        \begin{document}

        \begin{lstlisting}[style=mio_stile,caption={Che bel codice}]
        codice codice codice
        \end{lstlisting}

        \begin{codice}
        codice codice codice
        \end{codice}

        \end{document}`

        e usi l’ambiente codice.
        Se non è quello che vuoi fare allora prova a spiegarti meglio.

        Ciao

        Andrea

      • #18092
        Up
        0
        Down
        ::


        semplicemenete questo e l’esempio minimale che genera l’errore… il comando vero ha più argomenti e lo utilizzo per creare una base comune ad un elenco di molti elementi.

        ne ho tanti di quei comandi, eccone uno:

        `\newcommand{\myAttribute}[6]
        {
        \vspace{1.2cm}
        \hrule
        \vspace{0.5cm}

        \subsection{#2 (\##1)}
        \label{attribute:#1}

        #5

        \subsubsection*{Possibili valori dell'attributo}
        #3

        \noindent
        Valore di default: #4
        \subsubsection*{Operazioni necessarie alla rilevazione del valore dell'attributo}

        #6

        }`

        è un sistema comodissimo per non riscrivere tante cose tutte uguali e per cambiare velocemenete stile e impaginazione di certe parti.

        ogni tanto mi capita di dover inserire il codice sorgente (nel mio caso nella sezione #6) ed è qui che entra in campo lstlisting…

        ho ritenuto opportuno ridurre al minimo il codice che genera errore altrimenti chi ci capiva più?

        in ogni non riesco a capire perchè il mio codice non funziona se metto come parametro del mio comando un lstlisting.

        questo è il pezzo di log corrispondente :

        `pdflatex> (./tex/attribute/08_utilizzo_di_una_connessione_criptata_nella_fase_di_autentic
        pdflatex> a.tex [42]
        pdflatex> Runaway argument?
        pdflatex> ! Paragraph ended before \lst@next was complete.
        pdflatex>
        pdflatex> \par
        pdflatex> l.39 }
        pdflatex>
        pdflatex> )
        pdflatex> Overfull \hbox (86.01639pt too wide) in paragraph at lines 10–11
        pdflatex> [][][][][][][][][][][][][][][]
        pdflatex>
        pdflatex> Overfull \hbox (0.6055pt too wide) in paragraph at lines 12–13
        pdflatex> [][][][][][][][][][][][][][][][][]
        pdflatex>
        pdflatex> Overfull \hbox (79.44632pt too wide) in paragraph at lines 14–15
        pdflatex> [][][][][][][][][][][][][][][]
        pdflatex>
        pdflatex> Overfull \hbox (72.87625pt too wide) in paragraph at lines 16–17
        pdflatex> [][][][][][][][][][][][][][][]
        pdflatex>
        pdflatex> Overfull \hbox (86.01639pt too wide) in paragraph at lines 17–18
        pdflatex> [][][][][][][][][][][][][][][]
        pdflatex>
        …`

      • #18093
        DMW
          Up
          0
          Down
          ::


          Capito. Un modo c’è però non so se si può adattare al tuo.
          Metti il codice in un file esterno, chiamiamolo codice.txt (analogamente ai file .c, .h, .cpp, .java o .m di matlab):
          `
          …..
          \newcommand{\miocomando}[1]
          {%
          \lstinputlisting[%
          caption={Che bel codice},%
          style=mio_stile]{#1}%
          }
          `
          il suo uso è
          `
          \miocomando{codice.txt}`
          se il codice cambia crea un nuovo file esterno.
          Ciao

          Andrea

        • #18094
          Up
          0
          Down
          ::


          a quanto pare è la mia unica soluzione… sembra che anche nella rete nessun’altro abbia trovato la soluzione, grazie

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

      Go to top