minipage e listings

  • Creatore
    Topic
  • #80813
    Up
    0
    Down
    ::


    Ciao Ragazzi, sto scrivendo una piccola guida per definire il coding style da usare per un progetto.
    La mia idea era di mettere a sinistra il codice corretto ed a destra il codice sbagliato e pensavo di farlo in questo modo:
    `
    \documentclass[a4paper,10pt,twoside]{article}
    \errorcontextlines=9

    \usepackage[utf8]{inputenc}
    \usepackage[T1]{fontenc}

    \usepackage{graphicx}

    \usepackage[table,usenames,dvipsnames]{xcolor}
    \colorlet{LightGreen}{White!80!Green}
    \colorlet{LightRed}{White!80!Red}

    \usepackage{pgfplots}
    \pgfplotsset{/pgf/number format/use comma,compat=newest}
    %\usepackage{xcolor}

    \usepackage{lmodern}

    \usepackage[italian]{babel}
    \usepackage{indentfirst}

    \usepackage[babel]{csquotes}
    \usepackage[style=numeric]{biblatex}

    \usepackage{hyperref}

    \usepackage{listings}

    \lstnewenvironment{RightCode}[1][]
    {\lstset{language=[ANSI]C++,frame=single,frameround=ffff,basicstyle=\footnotesize,inputencoding=utf8,backgroundcolor=\color{LightGreen},rulecolor=\color{Green},#1}}{}

    \lstnewenvironment{ErrorCode}[1][]
    {\lstset{language=[ANSI]C++,frame=single,frameround=ftff,basicstyle=\footnotesize,inputencoding=utf8,backgroundcolor=\color{LightRed},rulecolor=\color{Red},#1}}{}

    \usepackage{xparse}
    \NewDocumentCommand{\CompareCode}{m m}{%
    \begin{center}
    \begin{minipage}[t]{0.4\textwidth}
    \begin{RightCode}
    #1
    \end{RightCode}
    \end{minipage}
    \hspace{.2cm}
    \begin{minipage}[t]{0.4\textwidth}
    \begin{ErrorCode}
    #2
    \end{ErrorCode}
    \end{minipage}
    \end{center}
    }

    \title{C/C++ Coding Style}
    \date{Rev.~1.0 (December 31, 2012)}

    \begin{document}

    \maketitle

    \CompareCode{%
    int numElements;
    }{%
    int nElements;
    }

    \end{document}
    `

    Usando insomma il comando \CompareCode ma ottengo il seguente errore:

    `
    ! Missing number, treated as zero.

    \let
    \lst@next …cessJ \else \let \lst@dropped #1\let
    \lst@next \lstenv@Process …

    \CompareCode …egin {minipage}[t]{0.4\textwidth }
    \begin {ErrorCode} #2 \en…
    l.28 }
    `

    Ma non capisco cosa gli possa dar fastidio! mi aiutate???

    grazie
    Marco

Visualizzazione 2 filoni di risposte
  • Autore
    Risposte
    • #80814
      Up
      0
      Down
      ::


      Una cosa ti posso dire sui due piedi: dare ambienti [tt]lstlisting[/tt] come argomento di altri comandi non è proprio la scelta migliore.

      Ciao
      Enrico

    • #80815
      robitex
      Amministratore del forum
        Up
        0
        Down
        ::


        Ciao,
        infatti questo codice funziona:
        `\documentclass[a4paper,10pt,twoside]{article}
        \usepackage[T1]{fontenc}
        \usepackage[utf8]{inputenc}
        \usepackage[italian]{babel}

        \usepackage{graphicx}

        \usepackage[table,usenames,dvipsnames]{xcolor}
        \colorlet{LightGreen}{White!80!Green}
        \colorlet{LightRed}{White!80!Red}

        \usepackage{pgfplots}
        \pgfplotsset{/pgf/number format/use comma,compat=newest}

        \usepackage{lmodern}
        \usepackage{indentfirst}

        \usepackage[babel]{csquotes}
        \usepackage[style=numeric]{biblatex}
        \usepackage{listings}
        \usepackage{hyperref}

        \lstnewenvironment{RightCode}[1][]
        {\lstset{language=[ANSI]C++,frame=single,frameround=ffff,basicstyle=\footnotesize,inputencoding=utf8,backgroundcolor=\color{LightGreen},rulecolor=\color{Green},#1}}{}

        \lstnewenvironment{ErrorCode}[1][]
        {\lstset{language=[ANSI]C++,frame=single,frameround=ffff,basicstyle=\footnotesize,inputencoding=utf8,backgroundcolor=\color{LightRed},rulecolor=\color{Red},#1}}{}

        \newdimen\cbwidth
        \cbwidth = 0.4\textwidth

        \begin{document}

        \begin{center}
        \begin{minipage}[t]{\cbwidth}
        \begin{RightCode}
        int numElements;
        \end{RightCode}
        \end{minipage}%
        \hspace{.2cm}
        \begin{minipage}[t]{\cbwidth}
        \begin{ErrorCode}
        int nElements;
        \end{ErrorCode}
        \end{minipage}
        \end{center}
        \end{document}`

        Notare come l’opzione di spigolo arrotondato disallinea leggermente i due minipage.
        Ho messo un percento che evita l’inserimento di uno spazio e creato una nuova dimensione da dare come larghezza del box una volta sola.
        R.

      • #80816
        Up
        0
        Down
        ::


        Quindi mi consigliate di non fare un comando?? ma di riscrivere ogni volta il tutto?

        Ciao
        Marco

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

    Go to top