Separare l’elenco degli acronimi dal glossario (glossaries)

  • Questo topic ha 6 risposte, 2 partecipanti ed è stato aggiornato l'ultima volta 13 anni fa da Marco87.
  • Creatore
    Topic
  • #88235
    Up
    0
    Down
    ::


    Ciao a tutti,

    nella mia tesi vorrei inserire un elenco degli acronimi e anche un glossario. Sto cercando di farlo con il pacchetto [tt]glossaries.[/tt] Tuttavia incontro un problema nel separare il primo dal secondo. Se utilizzo l’opzione [tt]acronym[/tt] per il pacchetto [tt]glossaries,[/tt] ricevo il seguente avviso d’errore (che tra l’altro non mi pare riguardare il pacchetto [tt]glossaries[/tt]):

    \tf@toc=\write14
    \openout14 = `TESI.toc’.

    \tf@lof=\write15
    \openout15 = `TESI.lof’.

    ! No room for a new \write .
    \alloc@ …else \errmessage {No room for a new #2}
    \fi \fi
    l.147 \end{document}

    This error message was generated by an \errmessage
    command, so I can’t give any explicit help.
    Pretend that you’re Hercule Poirot: Examine all clues,
    and deduce the truth by order and method.

    ! Missing number, treated as zero.

    \tf@lot
    l.147 \end{document}

    A number should have been here; I inserted `0′.
    (If you can’t figure out why I needed to see a number,
    look up `weird error’ in the index to The TeXbook.)

    \openout0 = `.tex’.

    Package atveryend Info: Empty hook `BeforeClearDocument’ on input line 147.
    [201

    ]
    Package atveryend Info: Empty hook `AfterLastShipout’ on input line 147.
    (./TESI.aux)
    Package atveryend Info: Executing hook `AtVeryEndDocument’ on input line 147.
    Package atveryend Info: Executing hook `AtEndAfterFileList’ on input line 147.
    Package rerunfilecheck Info: Checksums for `TESI.out’:
    (rerunfilecheck) Before: 6858287EFF9067DC2B2F35821F921A46;16384
    (rerunfilecheck) After: 39B0DF222BB6E30662BA0A306FB5451C;26306.
    Package logreq Info: Writing requests to ‘TESI.run.xml’.
    \openout1 = `TESI.run.xml’.

    Considerate il seguente codice:
    `% arara: pdflatex: {synctex: yes}
    % arara: makeglossaries
    % arara: pdflatex: {synctex: yes}
    % arara: pdflatex: {synctex: yes}
    % arara: pdflatex: {synctex: yes}
    % !TEX program = pdflatex

    \documentclass[a4paper,11pt, twoside]{memoir}

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

    \DeclareRobustCommand*{\acronimo}[1]{%
    \mbox{\sffamily\scshape\MakeLowercase{#1}}}

    \usepackage{xcolor}
    \colorlet{grigioScuro}{gray!75!black}
    \colorlet{grigioChiaro}{gray!95!black}
    \colorlet{grigioSfondo}{gray!12!white}

    \usepackage{hyperref}
    \hypersetup{pdfborder=0 0 0,pdfstartpage=1,pdftitle={Titolo PDF},pdfauthor={Nome Cognome},hidelinks,unicode}

    \usepackage{xifthen,xkeyval,xfor,amsgen}
    \usepackage[toc,acronym]{glossaries}
    \usepackage{glossary-mcols} %su più colonne

    %\newglossary[alg]{acronym}{acr}{acn}{\acronymname}
    \makeglossaries

    \renewcommand*{\glsnamefont}[1]{\textcolor{gray}{\textsf{\MakeLowercase #1}}}
    \renewcommand*{\glsnamefont}[1]{{\color{grigioScuro}\sffamily\scshape\MakeLowercase #1}}
    \addto\captionsitalian{%
    \renewcommand*{\glossaryname}{Glossario}%
    \renewcommand*{\acronymname}{Acronimi}%
    \renewcommand*{\entryname}{Nomenclatura}%
    \renewcommand*{\descriptionname}{Descrizione}%
    \renewcommand*{\symbolname}{Simbolo}%
    \renewcommand*{\pagelistname}{Elenco delle pagine}%
    \renewcommand*{\glssymbolsgroupname}{Simboli}%
    \renewcommand*{\glsnumbersgroupname}{Numeri}
    }

    \ProvidesDictionary{glossaries-dictionary}{Italian}
    \providetranslation{Glossary}{Glossario}

    \renewcommand*{\glossaryentrynumbers}[1]{\quad #1}

    %su più colonne
    \renewcommand*{\glsmcols}{2}
    \glossarystyle{mcolindex}

    \newacronym{fem}{fem}{Finite Element Method}

    \newglossaryentry{nomeVoce}{name={nome voce},description={Descrizione della voce}}

    \begin{document}

    \printglossary[type=\acronymtype]
    \printglossary

    \gls{fem}. E poi\dots\ \gls{nomeVoce}

    \end{document}`
    È possibile riprodurre questo risultato senza usare l’opzione [tt]acronym?[/tt] Dalla documentazione mi sembra di aver capito che si possa fare, ma non ci sono riuscito anche dopo diversi tentativi.

    Grazie mille e buona giornata,
    Marco.

Visualizzazione 5 filoni di risposte
  • Autore
    Risposte
    • #88236
      OldClaudio
      Partecipante
        Up
        0
        Down
        ::


        Hai ragione, in un certo senso:

        ! No room for a new \write .
        \alloc@ …else \errmessage {No room for a new #2}
        \fi \fi
        l.147 \end{document}

        Il sistema TeX può tenere aperti al massimo 16 canali per scrivere e 16 canali per leggere; quindi la parte che ti ho messo in rosso dice che vorresti scrivere nel diciassettesimo canale, il che è impossibile.

        Come risolvere? È difficile dirlo senza sapere quali canali sono aperti, e quali il compilatore vorrebbe aprire e per quali scopi.

      • #88237
        Up
        0
        Down
        ::


        Ciao Claudio,

        grazie mille della tua risposta! Usando il file del preambolo della mia tesi e delle mie impostazioni personali, sono riuscito a riprodurre l’errore che mi hai spiegato. Personalmente è la prima volta che sento parlare di “canali” e non so esattamente cosa siano. Cercando sulla Guida del GuIT mi pare di aver capito che il riempimento di questi canali sia legato all’uso dei comandi [tt]\input.[/tt] Tuttavia nell’esempio che ho fatto non ci sono affatti comandi [tt]\input![/tt]

        Nella tesi inserisco:

        • Il frontespizio;
        • L’indice generale;
        • L’elenco delle figure;
        • L’elenco delle tabelle;
        • L’elenco dei simboli ([tt]\nomenclature[/tt]);
        • I glossari (per ora solo uno);
        • La bibliografia.

        Questo elenco è indicativo? Se non lo è dimmelo che, se ti va, ti invio in privato il mio preambolo e le mie impostazioni con l’esempio che ho creato.

        Grazie mille e buona giornata,
        Marco.

      • #88238
        Up
        0
        Down
        ::


        Ciao,

        aggiungo che se dall’elenco precedente tolgo le figure (e il corrispettivo elenco), l’errore non compare più. Spero che ci sia un modo per risolvere. 🙁 Altrimenti potrei fondere l’elenco degli acronimi con il glossario.

        Grazie mille e ciao,
        Marco.

      • #88239
        Up
        0
        Down
        ::


        Ciao,

        mi chiedevo: non è che magari è possibile aumentare il numero di canali disponibili, in maniera simile a quanto si fa con la main memory di TeX?

        Ciao e grazie,
        Marco.

      • #88240
        OldClaudio
        Partecipante
          Up
          0
          Down
          ::


          Scusami Marco se ti rispondo solo ora, ma sono stato occupato tutta la mattinata in altre cose.

          No, ci sono al massimo 16 canali per scrivere e 16 canali per leggere; però quasi tutti i file ausiliari sono letti e scritti, quindi ogni file ausiliario occupa un canale di scrittura e un canale di lettura.

          I canali sono i mezzi attraverso i quali scorre l’informazione dal processore al disco (scrittura) o dal disco al processore (lettura).

          Non mi risulta che si possa aumentare il numero di canali, perché il loro numero indicativo (da 0 a 15) è codificacato con un nipple (cioè mezzo byte) e l’altro mezzo byte serve per specificare il tipo di informazione da leggere. Per la verità non mi sono mai premurato di leggere la descizione del programma TeX di Knuth, che ha scritto in linguaggio Web (pascal commentato) e io non ho mai programmato in pascal; ricordo solo che i canali (stream) di scrittura e lettura erano identificati con numeri, ma non mi sono mai preoccupato di vedere quanto fossero limitati. In fortran i canali da e verso le periferiche sono ugualmente identificati mediante numeri, ma io non ho mai dovuto usare numeri più alti di 14 nei miei programmi; mi pare però che il fortran moderno ammetta 100 canali numerati da o a 99; non ci metterei le mani nel fuoco.

          Nel caso di LaTeX non si parla solo dei file che contengono cose importanti come i toc, lof, lot e simili. ci sono anche i file .log, .aux (questi possono essere molti, se si usa \include, ma se ne usano al massimo due alla volta); ci sono anche i file di navigazione di hyperref (.out) i file idx e ind, per l’indice analitico e anche questi possono essere molti se si scrivono più indici analitici per lo stesso documento, tutti usati contemporaneamente, e via di questo passo.

          A me non è mai successo di arrivare con LaTeX a superare il numero di 16 canli contemporaneamente aperti, ma sono al corrente del problema, non solo perché il TeXbook ne parla diffusamente, ma anche perché la scrittura dei file .dtx per documentare il codice di diversi pacchetti contemporaneamente potrebbe richiedere diversi, moli, troppi canali aperti simultaneamente.

          Quindi vedi che anche se è raro, il problema è previsto.

        • #88241
          Up
          0
          Down
          ::


          Ciao Claudio,

          ci mancherebbe che tu debba scusarti! Anzi, grazie mille delle spiegazioni!

          Ho provato e riprovato a scrivere un esempio che fosse più vicino possibile a un “esempio minimo compilabile”, ma non sono riuscito a riprodurre l’errore. Pazienza; mal che vada fonderò l’elenco degli acronimi con il glossario. Direi che, tutto sommato, è accettabile anche così.

          Grazie ancora e buona serata,
          Marco.

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

      Go to top