strutturare libro: problema con le variabili

  • Creatore
    Topic
  • #86691
    dianoia
    Partecipante
      Up
      0
      Down
      ::


      Salve a tutti,
      avrei bisogno di aiuto per perfezionare il codice di un libro che sto scrivendo con LaTeX. Per la precisione si tratta di una traduzione dal greco, composto da più parti:
      – un saggio introduttivo con note a piè di pagine (e forse bibliografia indipendente)
      – il testo, che prevede greco nelle pagine parie ed italiano nelle pagine dispari, entrambe prive di note a piè di pagina
      – le note relative alla traduzione divise per capitoli
      – i sommari relativi a ciascun capitolo
      – glossario bibliografia tabella delle abbreviazioni

      Per cercare di mantenere una certa elasticità nella stesura del progetto, la cui struttura ha subito e continua a subire variazioni, ho strutturato le varie parti di testo in modo da avere files distinti per ciascun capitolo e per ciascuna tipologia, ovvero per il capitolo 1 ho un file per il greco, uno per la traduzione ed uno per le note (tralascio per le altre parti del documento), con una struttura di cartelle di questo tipo:

      `
      ├── greco
      │   ├── greco-01.tex
      │   ├── greco-02.tex

      ├── note
      │   ├── note-01.tex
      │   ├── note-02.tex

      ├── sommari
      │   ├── sommario-01.tex
      │   ├── sommario-02.tex

      ├── traduzione
      │   ├── traduzione-01.tex
      │   ├── traduzione-02.tex

      `

      Il problema che vi pongo riguarda in particolare il modo in cui legare le note, tutte contenute nei singoli file note-01, note-02… ai file che fanno loro riferimento mediante il comando \endnote. Non so se c’è un modo migliore o più semplice (se qualcuno ne ha esperienza…). Io ho cercato di costruire una soluzione mediante il pacchetto
      catchfilebetweentags, che permette di includere singole parti di file esterni delimitati da tag.

      Nel main file ho questo:
      `

      \usepackage{catchfilebetweentags}

      \usepackage{enotez}
      \DeclareInstance{enotez-list}{section}{paragraph}{heading=\part{#1}}
      \setenotez{split=section,list-style=section,reset}
      \setenotez{split-sectioning=textbf,%
      split-title=\par\noindent Note al capitolo :}

      \newcommand{\leading}[1]{\ifnum\value{#1}<10 0\fi\arabic{#1}}
      \newcounter{last}
      \setcounter{last}{9}
      \newcounter{chap}

      \newcommand{\unanota}[2]%
      {\endnote{\ExecuteMetaData[rnote/rnote-#1]{#2}}}

      \newcommand{\nota}{\textbf}

      \begin{document}

      \forloop{chap}{1}{\value{chap} < \value{last}}{ \section{} \input{traduzione/traduzione-\leading{chap}} \newpage } ... ` Nei singoli file contenenti la traduzione uso quindi il comando \unanota per inserire le note a fine volume. Per esempio nel file dedicato alla traduzione del capitolo 9 potrei avere un codice di questo genere: ` Una frase complicatissima.\unanota{09}{100b200} ` Al momento della compilazione il comando \unanota richiama quindi il testo della singola nota pescandolo dal file note/note-09.tex che è strutturato mediante i tag richiesti dal pacchetto catchfilebetweentags: ` %<*100b200>
      \nota{100b200}
      Il lunghissimo testo di una nota
      %
      `

      Sono sodisfatto di questa organizzazione, perché mi permette di modificare la struttura del documento finale ridefinendo i vari comandi usati nel mainfile, e perché mi permette di separare il testo delle note, spesso davvero prolisse, dal corpo della traduzione, permettendomi di concentrami volta per volta su singoli “strati” del mio lavoro.

      Vorrei però ottimizzare il comando \unanota, che al momento richiede due argomenti: 1) il numero del capitolo, necessario per completare il nome del file che dovrebbe contenere i tag cui la nota si riferisce; 2) il tag stesso, ovvero nel mio caso le righe del testo cui la nota si riferisce.
      Mi piacerebbe infatti fornire solo la seconda informazione, lasciando a latex l’onere di desumere il numero del capitolo e quindi il nome del file contenente le note. Ciò mi permetterebbe di lavorare più velocemente, e di avere un codice più pulito 🙂

      La prima soluzione che mi è venuta in mente è stata quella di passare il numero del capitolo direttamente nella definizione del comando \unanota:
      `
      \newcommand{\unanota}[1]%
      {\endnote{\ExecuteMetaData{#1}}}
      `

      Il pacchetto enotez però compone le note solo durante la seconda compilazione, quando la variabile \chapter è ormai definita al numero dell’ultimo capitolo. Di conseguenza le singole note vengono composte, ma cercandone il contenuto sempre e solo nel file delle note dell’ultimo capitolo, dove chiaramente LaTeX non può trovare alcun riferimento ai tag dei capitoli precedenti.

      Non saprei come risolvere il problema.
      L’unica idea che mi è venuta, ma non la so mettere in pratica, è quella di appoggiarmi ad un qualche contatore dello stesso enotez. Ridefinendo il comando “split-title” ho dovuto mantenere il riferimento alla variabile ““, che viene perfettamente associata al numero del capitolo. Solo che del codice di questo pacchetto capisco poco o niente 🙁

      Grazie dell’aiuto e scusate se sono stato prolisso.
      Saluti
      Pietro

    • Devi essere connesso per rispondere a questo topic.

    Go to top