Un consiglio: ogni volta che chiedi qualcosa, dovresti esporre in maniera puntuale il problema magari facendo un esempio minimo compilabile, in modo che chiunque possa riprodurlo facilmente. Per di più parli del pacchetto acronyms, ma non mi risulta che esista, si può solo supporre che tu ti riferisca ad acronym.
PoianaNana” post=79263Domanda nella domanda: a me piace molto che gli acronimi siano evidenziati perché così il lettore capisce che sono collegamenti che può navigare, tuttavia titoli e testatine stanno meglio se sono formattati in modo omogeneo. So che la cosa più semplice consiste nel non usare acronimi nei titoli, ma per amore della conoscenza di LaTeX mi chiedo: c’è modo di usarli ugualmente e ottenere una formattazione omogenea in titoli e testatine? Se si, quale?
Ecco: hai già capito che la cosa migliore in questo caso è fare a mano. Peraltro, come ha scritto OldClaudio, se davvero vuoi imparare a programmare in LaTeX, la via maestra è leggere una guida e soprattutto metter mano al codice: leggerne e scriverne, provare e riprovare, cercare le molte vie per risolvere un problema, sbatterci la testa.
O magari frequentare il forum e trovarvi ogni tanto qualcuno che ha un problema e cercare di risolverglielo 😉 …come ho tentato di fare io con te 😀
Andiamo al sodo. Oltre alla perfetta inutilità di avere un collegamento blu in ogni testatina, io dubiterei anche dell’utilità di avere tutte le occorrenze degli acronimi colorati e col link. Nella mia tesi triennale la pensavo come te, ma ora sinceramente mi sembra di aver appesantito la pagina con tutti quei link e punti di colore.
Comunque sia, per quello che so il problema non mi pare facile da risolvere in maniera soddisfacente. Ci sono diversi motivi. Per esempio, [tt]\acs[/tt] vorrebbe il suo argomento sempre in maiuscolo, per poterlo riconoscere, mentre classicthesis/arsclassica lo trasforma in minuscolo o maiuscolo a seconda del contesto (maiuscolo nei capitoli, minuscolo nei paragrafi e nelle testatine). Le cose si complicano ulteriormente a causa di hyperref.
Provo a esporre più in dettaglio cosa succede. Scrivendo
`\acro{EC}{…}` viene definito un comando [tt]\fn@EC[/tt], il quale, quando sarà chiamato (per esempio da [tt]\acs{EC}[/tt]), produrrà il testo dell’acronimo con il relativo collegamento. Ma già compare un problema: il link non funziona. Il motivo è che viene creata un’àncora (“hypertarget”) di nome “ec” (minuscolo), a causa del fatto che l’etichetta della description è composta in maiuscoletto spaziato minuscolo. Scrivendo [tt]\acs{EC}[/tt], invece, si richiama [tt]\fn@EC[/tt], che cerca l’àncora “EC” (maiuscolo).
Infatti, con il maiuscoletto spaziato a un certo punto si fa:
`\MakeTextLowercase{Families of \acs{EC} variants}` dove l’argomento di [tt]\acs[/tt] non è ciò che verrà stampato sul PDF, bensì serve proprio a richiamare il comando [tt]\fn@EC[/tt].
Ed ecco un altro problema: se si lascia agire [tt]\MakeTextLowercase[/tt], il comando precedente diventa
`families of \acs{ec} variants` e perciò [tt]\acs[/tt] cercherà il comando [tt]\fn@ec[/tt], non trovandolo. Per questo compare la segnalazione “ec!“.
Affinché [tt]\acs[/tt] trovi l’argomento in maiuscolo, si può usare [tt]\NoCaseChange[/tt], come hai fatto, che è una soluzione semplice e manuale. Si potrebbe pure automatizzare, facendo sì che [tt]\acs[/tt] trovi da sé anche l’acronimo minuscolo (dichiarando [tt]\fn@ec[/tt] equivalente a [tt]\fn@EC[/tt]).
Ma in ogni caso, come hai visto, sorgerebbe un problema ulteriore: per convertire il testo in maiuscolo o minuscolo, i comandi [tt]\MakeTextUpper/Lowercase[/tt] espandono tutto quello che hanno come loro argomento, a meno che non sia preceduto da [tt]\protect[/tt].
Ora, [tt]\protect[/tt] di solito viene usato per evitare che siano espansi i cosiddetti “comandi fragili” quando vengono scritti nei file ausiliari. E per questo motivo vale [tt]\noexpand[/tt] quando si scrive su file, mentre è [tt]\relax[/tt] quando si sta componendo nel documento. Gli acronimi non devono essere espansi quando si scrive sui file: perciò i comandi come [tt]\acs[/tt] sono tutti protetti con dei [tt]\protect[/tt]. Tuttavia, bisogna evitare l’espansione di determinati comandi anche in altri contesti, per esempio quando si usa [tt]\edef[/tt] con un comando che contiene del codice che va eseguito (anziché espanso; per esempio un assegnamento). Perciò, durante l’espansione del suo argomento, [tt]\MakeTextLowercase[/tt] tratta sempre i [tt]\protect[/tt] che incontra come fossero [tt]\noexpand[/tt], anche se ci si trova nel documento.
Ergo, [tt]\MakeTextLowercase[/tt] (o [tt]\MakeTextUppercase[/tt]) non espanderà mai [tt]\acs[/tt], quindi non arriverà mai a [tt]\fn@EC[/tt], quindi non opererà mai sul testo con link ipertestuale. Dunque, se pure si può impedire che venga ridotto in minuscolo quell’”EC” (cosa che impedirebbe di chiamare [tt]\fn@EC[/tt]), oppure trovare una soluzione equivalente, non si può però (con la definizione esistente di [tt]\acs[/tt]) adattare in maiuscolo o minuscolo il testo prodotto da [tt]\fn@EC[/tt].
Peggio: [tt]\fn@EC[/tt] è qualcosa del tipo
`\hyperlink {EC}{EC}` dove il primo argomento è il nome dell’àncora (“hypertarget”), mentre il secondo è il testo che verrà scritto (in blu) sul PDF. Di nuovo, il primo deve essere uguale a quello dichiarato sopra (minuscolo), il secondo invece varia.
La morale della favola è che una soluzione alla fine si può trovare, per piegare LaTeX al mio volere (cit.).
Magari non elegante o di compromesso, o una non-soluzione a un non-problema (cit. :- ), ma il bello ogni volta è ragionarci e capirci qualcosa di più.
😉
Ciao,
Antonio
.