illinguista1972″ post=63982
`\newcommand{\greco}{\foreignlanguage{greek}}`
Grazie, lo faccio appena possibile. Qualche mese fa, in uno scritto di un noto autore lessi appunto che il comando personale per scrivere in un altra lingua poteva avere una definizione “ingenua”
`\newcommand{\greco}[1]{\foreignlanguage{greek}{#1}}`
e una meno ingenua
`\newcommand{\greco}{\foreignlanguage{greek}}`
A parte che mi sfuggono ancora le differenze, mi chiedo se questa seconda definizione può andar bene per tutte le lingue: nella guida, dunque, per il latino e l’inglese. Vale la pena di sostituire le attuali definizioni ingenue?
Già che ci sono, cade a fagiuolo (notate il trittongo) un’altra curiosità: spesso ho visto che, parlando di babel, le lingue (che di fatto si caricano come opzioni del pacchetto) vengono anche chiamate “moduli”. Perciò si trova scritto:
il modulo latin di babel permette di ottenere eccetera eccetera
Posto che a me piace questo “modulo” (che userei soltanto per babel, non certo per altri pacchetti), chiedo: soltanto le opzioni che si esprimono con il nome di una lingua si possono chiamare anche “moduli”? È corretto usare questa parola? Qualcuno saprebbe dare una definizione breve di “modulo” in questo senso?
Grazie
Tommaso
Quella meno ingenua è (quasi) necessaria per il greco politonico, per via del cambio di codice di categoria di ~. In genere, se \xyz è un comando con argomento, il modo migliore (alla LaTeX) per crearne un alias è di scrivere
`\newcommand{\abc}{\xyz}`
Infatti TeX si limita a sostituire \abc con \xyz e quindi \abc{parola} diventa \xyz{parola}. Esempio “vero”:
`\newcommand{\numericset}{\mathbf}
\newcommand{\C}{\numericset{C}}
\newcommand{\R}{\numericset{R}}`
Il motivo della definizione di \numericset è che in questo modo non occorre cambiare le definizioni di \C e di \R se si cambiasse idea sulla loro “rappresentazione finale”. Con l’ingenuo
`\newcommand{\numericset}[1]{\mathbf{#1}}` l’argomento verrebbe letto due volte: una come argomento di \numericset e la seconda come argomento di \textbf. Pochi cicli di CPU, forse, ma concettualmente migliore.
La definizione più efficiente sarebbe \let\numericset\mathbf che risparmia anche un briciolo di memoria: TeX non deve ricordarsi la definizione di \numericset, ma attivare solo un puntatore da \numericset a \mathbf.
Che cosa intendo per “modulo”: un piccolo insieme di istruzioni che un pacchetto carica a seconda delle circostanze; per esempio, babel non carica tutte le lingue che conosce, ma si limita a leggere i moduli relativi alle lingue richieste. Anche le classi standard li hanno; quando il documento è della classe article, viene letto uno fra size10.clo, size11clo o size12.clo (dipende dall’opzione scelta per il corpo). Un altro pacchetto “modulare” è titlesec.
Ciao
Enrico