[RISOLTO]Problema listato Matlab Latex

  • Creatore
    Topic
  • #104105
    Up
    0
    Down
    ::


    Salve, da qualche giorno ho deciso di provare a scrivere le relazioni tramite latex, quindi non sono molto pratico. Prima di chiedervi aiuto, ho letto le varie documentazioni ed ho provato a superare varii problemi. Il problema che non riesco proprio a risolvere è relativo al passaggio di un listato in matlab in Latex. Infatti non riesco a convertire nella giusta maniera le lettere accentate ed il simbolo di grado °.
    Per far comparire il listato con la formattazione di Matlab sto provando ad usare il pacchetto {matlab-prettifier}.

    Per esempio il seguente codice mi da un errore perchè non identifica i caratteri a e °.
    `
    \documentclass[a4paper]{report}
    \usepackage[T1]{fontenc}
    \usepackage[utf8]{inputenc}
    \usepackage[italian]{babel}
    \usepackage{graphicx}
    \usepackage{siunitx}
    \usepackage{xcolor}
    \usepackage{listings}
    \usepackage[framed,numbered]{matlab-prettifier}

    \begin{document}
    \begin{lstlisting}[
    style=Matlab-editor,
    basicstyle=\mlttfamily
    ]
    à °
    \end{lstlisting}

    \end{document}`

    Allora leggendo in giro ho provato ad inserire un set per il listings ( sul quale mi pare di aver capito si basa il pacchetto matlab-prettifier, corregetemi se sto ragionando in modo sbagliato), dove gli dico che invece di usare utf8 di usare solo per lui latin1.

    `\documentclass[a4paper]{report}
    \usepackage[T1]{fontenc}
    \usepackage[utf8]{inputenc}
    \usepackage[italian]{babel}
    \usepackage{graphicx}
    \usepackage{siunitx}
    \usepackage{xcolor}
    \usepackage{listings}
    \lstset{inputencoding=latin1}
    \usepackage[framed,numbered]{matlab-prettifier}

    \begin{document}
    \begin{lstlisting}[
    style=Matlab-editor,
    basicstyle=\mlttfamily
    ]
    à °
    \end{lstlisting}

    \end{document}`

    Il risultato è che mi scrive al posto di à questoà e al posto di ° questo °.
    Vi sarei molto grato se mi sapreste indicare la corretta via 😕 .

    Grazie Manuel.

Visualizzazione 4 filoni di risposte
  • Autore
    Risposte
    • #104106
      OldClaudio
      Partecipante
        Up
        0
        Down
        ::


        Lo so che tutti i pacchetti di versione in versione acquistano nuove funzionalità e fino a ieri era necessario specificare quali caratteri estesi andavano definiti mediante le loro LICR.

        Ora il paragrafo 5.5 della documentazione di listings dice che si possono usare le opzioni e le impostazioni extendedchars (sottinteso true) e inputencoding=

        Ora visto che il tuo file è stato creato con la codifica utf8, quella devi specificare a inputencoding e magari aggiungere anche extendedchars.
        Non devi specificare latin1, perché il tuo file contienen à e ° codificati in utf8 (cioè con più di un byte), mentre latin1 è una codifica che coinvolge in solo byte. Ecco perché i due byte nascosti nella codifica utf8, ti appaiono come du byte distinti e scorrelati quando specifichi latin1.

        Visto che sei nuovo del forum e sei il benvenuto, ti suggerisco di leggere un paio di guide tematiche oltre alla guida delle guide L’Arte di scrivere con LaTeX: La guida tematica sulle codifiche (che ti spiega il problema che hai adesso) e la guida Il LaTeX Reference Manual commentato, che forse ora non ti serve (forse) ma rappresenta l’ABC del linguaggio LaTeX; avendo letto L’Arte, questo manualetto ti può essere molto utile; meglio usarle subito piuttosto che dover chiedere certe spiegazioni in futuro.

      • #104107
        Up
        0
        Down
        ::


        Grazie della risposta. Seguendo il tuo consiglio oggi sono andato a leggere la guida sulle codifiche di Latex ed ho capito cosa gli dicevo a Latex dicendo prima di codificare con utf8 e poi con latin1 e per questo mi dava lettere non associate a ° ed à.:mrgreen:
        Poi quindi ho sostituito a latin1, la codifica utf8 (anche se penso che non serva perchè già tutto il documento è in utf8, comunque io ce l’ ho inserita) ed infine anche extendedchars = true. Purtroppo il risultato non cambia.
        Per curiosità ho fatto il seguente codice
        `
        \documentclass[a4paper]{report}
        \usepackage[T1]{fontenc}
        \usepackage[utf8]{inputenc}
        \usepackage[italian]{babel}
        \usepackage{graphicx}
        \usepackage{siunitx}
        \usepackage{xcolor}
        \usepackage{listings}
        \lstset{inputencoding=utf8,extendedchars=true}
        \usepackage[framed,numbered]{matlab-prettifier}

        \begin{document}
        à °
        \begin{lstlisting}[
        style=Matlab-editor,
        basicstyle=\mlttfamily
        ]
        prova
        \end{lstlisting}

        \end{document}
        `

        e se le lettere sono fuori dal listing le lettere le scrive correttamente. Quindi il problema è nel pacchetto matlab-prettifier ?

      • #104108
        Up
        0
        Down
        ::


        Ho scritto male… non è che c’è un problema nel pacchetto, ma il problema è relativo all’uso che io faccio del pacchetto.

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


          Ciao.
          Abbiamo scritto un intero articolo sull’argomento per lo scorso GuITmeeting di Verona (vedi sezione del sito ArsTeXnica 18).

          Esiste una soluzione semplice per listings: usare l’opzione literate come nel seguente codice:
          `\documentclass[a4paper]{report}
          \usepackage[T1]{fontenc}
          \usepackage[utf8]{inputenc}
          \usepackage[italian]{babel}
          \usepackage{graphicx}
          \usepackage{siunitx}
          \usepackage{xcolor}

          \usepackage{listings}
          \lstset{%
          inputencoding=utf8,
          extendedchars=true,
          literate={è}{{\`e}}1 {é}{{\'e}}1
          }
          \usepackage[framed,numbered]{matlab-prettifier}

          \begin{document}
          Questa è una prova

          \begin{lstlisting}[
          style=Matlab-editor,
          basicstyle=\mlttfamily
          ]
          prova è una prova perché…
          \end{lstlisting}
          \end{document}`

          Oppure si deve cambiare motore di composizione e rivolgersi a XeLaTeX o a LuaLaTeX.
          R.

        • #104110
          Up
          0
          Down
          ::


          Alla grande!!! Grazie mille!! Ho risolto nel seguente modo
          `\documentclass[a4paper]{report}
          \usepackage[T1]{fontenc}
          \usepackage[utf8]{inputenc}
          \usepackage[italian]{babel}
          \usepackage{graphicx}
          \usepackage{siunitx}
          \usepackage{xcolor}
          \usepackage{listings}
          \lstset{
          inputencoding=utf8,
          extendedchars=true,
          literate={à}{{\`a}}1 {°}{{\textdegree}}1
          }
          \usepackage[framed,numbered]{matlab-prettifier}

          \begin{document}
          \begin{lstlisting}[
          style=Matlab-editor,
          basicstyle=\mlttfamily
          ]
          à °
          \end{lstlisting}

          \end{document}`

          🙂 🙂

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

      Go to top