Listings Babel e spazi nei nomi dei file.

  • Creatore
    Topic
  • #27514
    Up
    0
    Down
    ::


    Ho il problema di dover inserire nel mio documento dei file sorgente Fortran.
    Purtroppo devo trattare dei path che comprendono spazi nei nomi di file e directory.

    Il seguente codice compila, indipendentemente dal contenuto del file “file.txt”
    `\documentclass{minimal}
    \usepackage{listings}
    \begin{document}
    \lstinputlisting{“/home/bistek/pro va/file.txt”}
    \end{document}`

    Il seguente codice invece non compila.
    `\documentclass{minimal}
    \usepackage[italian]{babel}
    \usepackage{listings}
    \begin{document}
    \lstinputlisting{“/home/bistek/pro va/file.txt”}
    \end{document}`
    Ho semplicemente caricato anche il pacchetto babel…

    RIsulta l’errore:
    `


    ! Incomplete \iffalse; all text was ignored after line 5.

    \fi
    <*> nomefile.tex`

    Inutile dire che non so più dove cercare e/o sbattere la testa. 😕
    Il file è salvato in utf-8, Ubuntu… 🙄

    LuCa

Visualizzazione 8 filoni di risposte
  • Autore
    Risposte
    • #27515
      lorenzo.pantieri
      Partecipante
        Up
        0
        Down
        ::

        `\lstinputlisting{“/home/bistek/pro va/file.txt”}`

        Senza entrare nel merito del tuo problema, mi limito a consigliarti di non usare spazi nei path dei file: così ti risparmi un po’ di grattacapi. Quindi:
        `\lstinputlisting{/home/bistek/pro_va/file.txt}`
        Ciao,
        L.

      • #27516
        Up
        0
        Down
        ::


        Lo so lo so, è una soluzione ovvia e definitiva…
        …ma purtroppo non posso prenderla in considerazione.
        Se così non fosse non avrei certamente scomodato il forum… 😉

        Aggiungo che il problema non si presenta passando a babel l’opzione per la lingua inglese. 😕

        LuCa

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

          Lo so lo so, è una soluzione ovvia e definitiva…
          …ma purtroppo non posso prenderla in considerazione.

          Non sono mai riuscito ad aver un path con spazi funzionante. Pensa che cartella dove tengo i miei documenti scritti con LaTeX si chiama tuttora
          `Documenti_LaTeX`

          Però guarda qui:
          http://www.guit.sssup.it/phpbb/viewtopic.php?t=3706&highlight=ottanta
          http://www.guit.sssup.it/phpbb/viewtopic.php?t=1285&highlight=path

          Ciao,
          L.

        • #27518
          Up
          0
          Down
          ::

          Ho il problema di dover inserire nel mio documento dei file sorgente Fortran.
          Purtroppo devo trattare dei path che comprendono spazi nei nomi di file e directory.

          Il seguente codice compila, indipendentemente dal contenuto del file “file.txt”
          `\documentclass{minimal}
          \usepackage{listings}
          \begin{document}
          \lstinputlisting{“/home/bistek/pro va/file.txt”}
          \end{document}`

          Il seguente codice invece non compila.
          `\documentclass{minimal}
          \usepackage[italian]{babel}
          \usepackage{listings}
          \begin{document}
          \lstinputlisting{“/home/bistek/pro va/file.txt”}
          \end{document}`
          Ho semplicemente caricato anche il pacchetto babel…

          RIsulta l’errore:
          `


          ! Incomplete \iffalse; all text was ignored after line 5.

          \fi
          <*> nomefile.tex`

          Inutile dire che non so più dove cercare e/o sbattere la testa. 😕
          Il file è salvato in utf-8, Ubuntu… 🙄

          Il modo più semplice è di non usare nomi di directory con spazi. 💡

          Se proprio devi, scrivi questo dopo aver caricato listings:
          `\let\originallstinputlisting\lstinputlisting
          \renewcommand\lstinputlisting{%
          \begingroup\shorthandoff{“}%
          \afterassignment\repairlstinputlisting
          \def\next}
          \newcommand\repairlstinputlisting{\originallstinputlisting{\next}\endgroup}`
          Ciao
          Enrico

        • #27519
          Up
          0
          Down
          ::


          Spulciando i database dei bug di LaTeX e Debian scopro che non è un problema di spazi nei path dei file ma un problema proprio della coppia babel-listings.

          Indago ancora… 8)

          LuCa

        • #27520
          Up
          0
          Down
          ::


          Sono senza parole…
          Grazie Enrico.

          LuCa

          …accidenti, ho raggiunto e superato i 137 messaggi senza accorgermene… 😀 😀

        • #27521
          Up
          0
          Down
          ::

          Sono senza parole…
          Grazie Enrico.

          LuCa

          …accidenti, ho raggiunto e superato i 137 messaggi senza accorgermene… 😀 😀

          Questo è il mio numero 3540 ❗

          Vediamo adesso di capire dove sta il problema. Il modulo dell’italiano di babel dichiara attivo il carattere “, perché serve per alcune scorciatoie. Purtroppo questo va in conflitto con la specifica di nomi tra doppi apici. Alcuni pacchetti, per esempio graphicx, controllano la faccenda, purtroppo listings non lo fa.

          Perciò la prima riga del codice proposto salva il significato di \lstinputlisting in un altro comando, ne avremo bisogno dopo. A questo punto dobbiamo usare il comando \shorthandoff{“} di babel per togliere il significato speciale di “; lo faremo in un gruppo, in modo che alla chiusura tutto torni allo stato precedente.

          Ridefiisco dunque \lstinputlisting aprendo un gruppo e dando quel comando. Poi uso il trucco di mettere da parte un token da far eseguire dopo la successiva assegnazione che comincia subito dopo: \def\next. TeX adesso si trova davanti \def\next{“percorso”} che è un’assegnazione con tutti i crismi e, cosa importante, ” non ha significati speciali. Perciò TeX esegue la definizione ed espande il token messo da parte che, a sua volta, esegue l’originale \lstinputlistings prendendo come argomento \next (o meglio la sua espansione; funziona, avevo prima pensato di mettere un paio di \expandafter che non si sono rivelati necessari). Poi si chiude il gruppo cominciato prima.

          Et voilà.

          Ciao
          Enrico

        • #27522
          Up
          0
          Down
          ::


          due cose…
          1) credo di aver colto l’acrobazia… 8)
          2) sicuramente il rapporto tra i messaggi da noi postati (~25) non è un indice onesto del rapporto tra le nostre abilità TeXniche… 😉

          LuCa

        • #27523
          Up
          0
          Down
          ::

          due cose…
          1) credo di aver colto l’acrobazia… 8)
          2) sicuramente il rapporto tra i messaggi da noi postati (~25) non è un indice onesto del rapporto tra le nostre abilità TeXniche… 😉

          Adesso però, dopo aver approfittato del maggior tempo in treno gentilmente concessomi da Trenitalia :evil:, ti do una soluzione lievemente più semplice:
          `\renewcommand\lstinputlisting{%
          \begingroup\shorthandoff{“}\lst@setcatcodes\lst@inputlisting}`
          Ciao
          Enrico

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

      Go to top