Dati in file e lettere accentate

  • Creatore
    Topic
  • #99614
    robitex
    Amministratore del forum
      Up
      0
      Down
      ::


      Ciao a tutti.
      Ho creato una classe LaTeX per costruire relazioni tecniche con alcune funzionalità.
      Una di queste è caricare un file nell’albero personale contenente i dati del progetto, dati comuni a tutta la documentazione e quindi utilmente salvati in un unico luogo.
      Il caricamento del file avviene tramite opzione di classe che viene gestita con il pacchetto xkeyval.
      Quindi la procedura è:
      scrivere il file con i dati e nominarlo come .dat dove è il codice del progetto.
      inserisco l’opzione di classe “job=
      ” e nella classe mi ritrovo nomi e dati pronti all’uso.

      Il frammento di codice di classe è:
      `
      %
      \DeclareOptionX{job}{\input{#1.dat}}

      % …

      % e poi
      \ProcessOptionsX
      `

      La procedura è semplice perché una volta scritto il file dati lo posso richiamare per ogni relazione che appartiene al progetto, tuttavia c’è un’imperfezione.
      Al momento del caricamento del file non è stata ancora caricata la terna fib dei pacchetti fontenc, inputenc e babel e quindi i caratteri accentati devono essere inseriti nel file dati con le apposite “macro carattere”.

      Come posso fare senza caricare la terna fib nella classe prima di caricare il file?
      Grazie.
      R.

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


          Non ti basta ritardare quegli \input all’inizio del documento?
          `\DeclareOptionX{job}{\AtBeginDocument{\input{#1.dat}}}`

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

            OldClaudio” post=99294Non ti basta ritardare quegli \input all’inizio del documento?
            `\DeclareOptionX{job}{\AtBeginDocument{\input{#1.dat}}}`

            Non ci sono controindicazioni?

            Ho sentito che \AtBeginDocument può dare problemi.
            R.

          • #99617
            OldClaudio
            Partecipante
              Up
              0
              Down
              ::


              A me non ne ha mai dati. è ovvio che dipende da come lo usi; se introduci il file .dat al momento di eseguire il \begin{document{ ma hai bisogno del suo contenuto prima, la cosa non funziona.

              Il pacchetto etoolbox contiene diversi hook che estendon l’unoco hokk fornito da LaTeX, vale a dire \AtBeginDocument; ci aggounge gli hook con After e con Preamble e End; vale la pena di leggerne la descrizione nella documentazione perché si imparano (o si intuiscono) molte cose relative a quello che avviene quando si esegue \begin{document}; in paricolare si cpaisce che il preambolo non finisce subito prma di \begin{document}, ma che si è ancora nel preambolo fino a circa la metà dello sviluppo di \begin{document}.

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


                Grazie Claudio.
                Appronterò la modifica per migliorare l’uso della classe.
                R.

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

                  robitex” post=99306Grazie Claudio.
                  Appronterò la modifica per migliorare l’uso della classe.
                  R.

                  Ho parlato troppo presto.
                  Dopo la modifica ricevo un errore di undefined field. Ciò vuol dire che i dati nel file vengono usati prima di \begin{document}.
                  La cosa mi è sembrata strana. Sono andato a vedere il codice e ho scoperto che la classe definisce un comando \frontespizio che contiene la richiesta di campi (comandi \get e \set personalizzati):
                  `\newcommand{\frontespizio}{%
                  \intestazione

                  \titolazione}`

                  A sua volta il comando \titolazione è:
                  `%
                  \newcommand{\titolazione}{%
                  \vspace*{10mm}

                  \begin{center}

                  \get{preambolo}
                  \vspace*{5mm}

                  \Large
                  \begin{tabular}{c}
                  \toprule
                  \get{titoloprog}\\[6pt]
                  \bottomrule
                  \end{tabular}

                  % eccetera
                  \end{center}
                  }`

                  Il comando \get compone il contenuto del campo dato come argomento così:
                  `\def\get#1{%
                  \@ifundefined{relfield@#1}
                  {\ClassError{rel}{Undefined field `#1`}{The field you used has not yet been defined}}
                  {\rel@render{\@nameuse{relfield@#1}}}%
                  }%`

                  Mi da errore sul primo campo ‘preambolo’ che contiene un testo relativo al progetto e non ha niente a che fare con il preambolo del sorgente.
                  Non capisco. Se definisco il comando \frontespizio con all’interno control sequence queste sono memorizzate come token e non sono espanse.
                  Allora cos’è che non va visto che \frontespizio è inserito dopo \begin{document} nel sorgente documento?
                  Indagherò oltre.
                  R.

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

              Go to top