Re: Espansione macro all’interno di \ref

#93240
OldClaudio
Partecipante
    Up
    0
    Down
    ::

    Nate River” post=92854Sto utilizzando il pacchetto currfile, che fornisce la macro \currfilename contenente il nome del file .tex correntemente elaborato.
    Supponendo che il file è main.tex, questo codice funziona:

    `
    \label{\currfilename}
    \ref{main.tex}
    `

    Mentre questo no:

    `
    \label{\currfilename}
    \ref{\currfilename}
    `
    Perchè?

    Mi pare che tu non abbia letto, o abbia letto molto superficialmente, sia la documentazione di cuurfile, sia le guide di LaTeX. Se mi sbaglio perdonami.

    1) l’argomento di \label non viene sviluppato e può cotenere qualunque carattere,( se ben ricordo, tranne la virgola); dunque [tt]\label{\currfilename}[/tt]
    crea un etichetta foramata dai caratteri [tt]\ c u r r f i l e n a m e[/tt], non lo sviluppo di \currfilename che sarebbe il nome del file corrente. Nello stesso tempo [tt]\ref{main.tex}[/tt] legge il significato numerico associato all’etichetta foramta dai caratteri [tt]m a i n . t e x[/tt], etichetta che non hai mai definito; con certe glassi le etichette di cui LaTeX non conosca il significato sono stampate mediante un apio di punti interrogativi e oppure le etichette senza significato vengo stampate come tali, cioè come etichette, non come quello che esse rappresentino.

    2) Se carichi il pacchetto currefile, ogni volta che direttamente o indirettamente vine aperto un nuovo file, con \input, con \include, con \InputIfFileExists, con \RequirePackage, eccetera, le caratteristiche del file vengono messe dentro quelle macro. \currfilenmae, \curfileext, \currfilepath, eccetera.
    Certamente, quindi, queste macro non sono da mettere dentro \label e dentro \ref, perché contengono già le parti di nome che interessano.

    3) Dunque non è affatto chiaro che cosa ti voglia fare a usare quelle macro come argomenti di \label o di \ref.. Ecco perché ho il sospetto che tu abbia fatto un po’ di confusione, oppure che tu non abbia letto con abbastanza attenzione le varie guide e la documentazione dei pacchetti che vuoi usare.

    Go to top