vorrei proporre un testo di sintesi\conferma di quanto ho capito per questo comando, ho l’esigenza di collaborare sullo stesso file con diverse persone, utilizzatrici di LaTeX, differenti…con impostazioni differenti…su piattaforme differenti…
cominciamo:
quando apriamo\compiliamo\modifichiamo-salviamo un file .tex eseguiamo sostanzialmente tre operazioni differenti:
– leggiamo un file .tex codificato (traducendolo per “vederlo”) — apertura;
– produciamo un file .pdf interpretando il codice scritto .tex (in una certa codifica) — compilazione;
– codifichiamo un file .tex (codificandolo) — modifica-salvataggio.
il TeXShop (per gli utilizzatori del mac) di default unifica la prima e l’ultima operazione, ovvero ha un’unica impostazione “codifica” che individuiamo dal menù preferences>encoding (a metà schermata, la prima che appare, sulla destra).
[io ad esempio ho settato “Western (ISO Latin 1)”, quindi ogni file .tex lo aprirò interpretandolo come un “latin 1” e quando lo salverò lo codificherò come un “latin 1”]
è possibile “forzare” la lettura del file in una data codifica inserendo una riga commentata magica: “% !TEX encoding = IsoLatin” in testa al codice, ovvero la prima riga (senza virgolette iniziale e finale ovviamente…)
non mi è noto un “codice” da scrivere sul file .tex per “forzare” la codifica in fase di salvataggio\input da tastiera…(e non credo sia fattibile senza modificare i driver…)
quando creiamo un .pdf compilando il .tex, il motore TeX tradurrà quello che “legge” nel nostro file .tex come sta scritto in luogo di XXXXXX nella riga del preambolo “\usepackage[XXXXXX]{inputenc}”…che in linea di principio non corrisponde necessariamente a come noi “vediamo” il testo a video (cosa che riguarda TeXShop e non TeX…)…
facciamo un esempio per fare, e chiarire, un po’ di confusione:
1)io il mio TeXShop l’ho impostato su preferences>encoding “utf8” e nel preambolo del mio file scrivo \usepackage[utf8]{inputenc};
2)ti passo il file
3)tu hai impostato il tuo TeXShop con preferences>encoding su ISO Latin 1, apri il file e tutte le lettere accentate e altro non le vedi a video e noti caratteri strani (perché hai aperto un file codificato utf8 come fosse un latin1)!!
4)quando compili però funziona tutto e il pdf viene bene e bello (perché io ho scritto \usepackage[utf8]{inputenc} e quindi il TeXShop lo legge male e te lo fa vedere in modo incomprensibile ma il motore TeX lo interpreta giusto e quindi il pdf viene bene!)
5)trovi degli errori e fai delle modifiche al file .tex, lo salvi e me lo rimandi;
6)io lo apro e leggo tutto male (perché tu salvandolo lo ha salvato come un latin1 e io lo sto aprendo come utf8) tra l’altro compilo e non funziona niente..magari mi da pure errore e si blocca (perché quello che hai scritto tu è stato salvato in latin1 e il motore tex (di chiunque) lo interpreta utf8 per via della riga \usepackage[utf8]{inputenc})
7)macello e delirio generale.
8)tutto da buttare…
soluzione in prima approssimazione…
1)io il mio TeXShop l’ho impostato su preferences>encoding “utf8” e nel preambolo del mio file scrivo \usepackage[utf8]{inputenc}; 1bis) preventivamente so già che il file non lo aprirò (con lo scopo di modificarlo) solo io oppure quando sarà il momento di passare il file “penso” al fatto che se sto passando un .tex, forse, non lo modificherò solo io…
1ter) inserisco nella primissima riga la dicitura “% !TEX encoding = utf8” (a questo punto quando tu lo aprirai, il tuo TeXShop ignorerà le proprie impostazioni e lo “leggerà” come un utf8)
2)ti passo il file
3)lo apri e leggi tutto (grazie alla riga magica)
4)compili e funziona tutto (grazie alla riga nel preambolo \usepackage[utf8]{inputenc})
5)trovi degli errori e fai delle modifiche al file .tex, lo salvi e me lo rimandi;
6)io lo apro e leggo COMUNQUE tutto male (perché tu salvandolo lo hai salvato come un latin1 e io lo sto aprendo come utf8..tra l’altro per via della riga magica “% !TEX encoding = utf8” CHIUNQUE lo aprirebbe come un utf8…anche tu…e quindi una volta chiuso nessuno lo leggerà più bene!) tra l’altro compilo e non funzione (perché quello che hai scritto tu è stato salvato in latin1 e il motore tex lo interpreta utf8 per via della riga \usepackage[utf8]{inputenc})
7)macello e delirio generale…da te in poi…
8)tutto da buttare…
soluzione in approssimazione generale…non la conosco…
un’idea che mi è venuta è:
decido PRIMA con chi interagirà quel file…tutti impostano la codifica allo stesso modo…(utf8…che è lo standard mondiale o per lo meno latin 1 che è quello europeo…mac os roman non so che vantaggi ha…) e si lavora tutti in sinergia…
…ma…se non so a priori chi interagirà con il file .tex come faccio? e se chi interagirà non ha modo (o voglia) di cambiare impostazioni per ogni gruppo di lavoro che non usa le medesime impostazioni, come faccio?…
c’è una soluzione, in fase di creazione di un file nuovo in in generale, per fare in modo che sia “auto-etero-compatibile”? è giusto, perlomeno quello che ho capito? quando consigliate di usare utf8? quando latin1? perché e quando usare mac os roman e come mai se non va bene è di default su TeXShop? 🙂
vorrei proporre un testo di sintesi\conferma di quanto ho capito per questo comando, ho l’esigenza di collaborare sullo stesso file con diverse persone, utilizzatrici di LaTeX, differenti…con impostazioni differenti…su piattaforme differenti…
cominciamo:
quando apriamo\compiliamo\modifichiamo-salviamo un file .tex eseguiamo sostanzialmente tre operazioni differenti:
– leggiamo un file .tex codificato (traducendolo per “vederlo”) — apertura;
– produciamo un file .pdf interpretando il codice scritto .tex (in una certa codifica) — compilazione;
– codifichiamo un file .tex (codificandolo) — modifica-salvataggio.
il TeXShop (per gli utilizzatori del mac) di default unifica la prima e l’ultima operazione, ovvero ha un’unica impostazione “codifica” che individuiamo dal menù preferences>encoding (a metà schermata, la prima che appare, sulla destra).
[io ad esempio ho settato “Western (ISO Latin 1)”, quindi ogni file .tex lo aprirò interpretandolo come un “latin 1” e quando lo salverò lo codificherò come un “latin 1”]
è possibile “forzare” la lettura del file in una data codifica inserendo una riga commentata magica: “% !TEX encoding = IsoLatin” in testa al codice, ovvero la prima riga (senza virgolette iniziale e finale ovviamente…)
non mi è noto un “codice” da scrivere sul file .tex per “forzare” la codifica in fase di salvataggio\input da tastiera…(e non credo sia fattibile senza modificare i driver…)
quando creiamo un .pdf compilando il .tex, il motore TeX tradurrà quello che “legge” nel nostro file .tex come sta scritto in luogo di XXXXXX nella riga del preambolo “\usepackage[XXXXXX]{inputenc}”…che in linea di principio non corrisponde necessariamente a come noi “vediamo” il testo a video (cosa che riguarda TeXShop e non TeX…)…
facciamo un esempio per fare, e chiarire, un po’ di confusione:
1)io il mio TeXShop l’ho impostato su preferences>encoding “utf8” e nel preambolo del mio file scrivo \usepackage[utf8]{inputenc};
2)ti passo il file
3)tu hai impostato il tuo TeXShop con preferences>encoding su ISO Latin 1, apri il file e tutte le lettere accentate e altro non le vedi a video e noti caratteri strani (perché hai aperto un file codificato utf8 come fosse un latin1)!!
4)quando compili però funziona tutto e il pdf viene bene e bello (perché io ho scritto \usepackage[utf8]{inputenc} e quindi il TeXShop lo legge male e te lo fa vedere in modo incomprensibile ma il motore TeX lo interpreta giusto e quindi il pdf viene bene!)
5)trovi degli errori e fai delle modifiche al file .tex, lo salvi e me lo rimandi;
6)io lo apro e leggo tutto male (perché tu salvandolo lo ha salvato come un latin1 e io lo sto aprendo come utf8) tra l’altro compilo e non funziona niente..magari mi da pure errore e si blocca (perché quello che hai scritto tu è stato salvato in latin1 e il motore tex (di chiunque) lo interpreta utf8 per via della riga \usepackage[utf8]{inputenc})
7)macello e delirio generale.
8)tutto da buttare…
soluzione in prima approssimazione…
1)io il mio TeXShop l’ho impostato su preferences>encoding “utf8” e nel preambolo del mio file scrivo \usepackage[utf8]{inputenc}; 1bis) preventivamente so già che il file non lo aprirò (con lo scopo di modificarlo) solo io oppure quando sarà il momento di passare il file “penso” al fatto che se sto passando un .tex, forse, non lo modificherò solo io…
1ter) inserisco nella primissima riga la dicitura “% !TEX encoding = utf8” (a questo punto quando tu lo aprirai, il tuo TeXShop ignorerà le proprie impostazioni e lo “leggerà” come un utf8)
2)ti passo il file
3)lo apri e leggi tutto (grazie alla riga magica)
4)compili e funziona tutto (grazie alla riga nel preambolo \usepackage[utf8]{inputenc})
5)trovi degli errori e fai delle modifiche al file .tex, lo salvi e me lo rimandi;
6)io lo apro e leggo COMUNQUE tutto male (perché tu salvandolo lo hai salvato come un latin1 e io lo sto aprendo come utf8..tra l’altro per via della riga magica “% !TEX encoding = utf8” CHIUNQUE lo aprirebbe come un utf8…anche tu…e quindi una volta chiuso nessuno lo leggerà più bene!) tra l’altro compilo e non funzione (perché quello che hai scritto tu è stato salvato in latin1 e il motore tex lo interpreta utf8 per via della riga \usepackage[utf8]{inputenc})
7)macello e delirio generale…da te in poi…
8)tutto da buttare…
soluzione in approssimazione generale…non la conosco…
un’idea che mi è venuta è:
decido PRIMA con chi interagirà quel file…tutti impostano la codifica allo stesso modo…(utf8…che è lo standard mondiale o per lo meno latin 1 che è quello europeo…mac os roman non so che vantaggi ha…) e si lavora tutti in sinergia…
…ma…se non so a priori chi interagirà con il file .tex come faccio? e se chi interagirà non ha modo (o voglia) di cambiare impostazioni per ogni gruppo di lavoro che non usa le medesime impostazioni, come faccio?…
c’è una soluzione, in fase di creazione di un file nuovo in in generale, per fare in modo che sia “auto-etero-compatibile”? è giusto, perlomeno quello che ho capito? quando consigliate di usare utf8? quando latin1? perché e quando usare mac os roman e come mai se non va bene è di default su TeXShop? 🙂
Grazie a chiunque vorrà rispondere 🙂
ciao ciao,
Corrado.
Tutti i misteri sulle codifiche sono svelati nella guida tematica alle codifiche scritta da Claudio e da me. Puoi scaricarla dalla sezione documentazione qui sopra.
Dalla mia esperienza, è sempre preferibile lavorare in unicode (utf8).
Tutte le guide tematiche sono progetti collaborativi per esempio, ed invariabilmente sono codificate utf8.
Significa semplicemente che tutti DEVONO lavorare in unicode.
In questo modo non solo tutti i problemi spariscono, ma i membri del team possono lavorare sui sorgenti con diversi sistemi operativi.
Massima libertà di operare in condivisione.
Happy TeXing!
R.
1) Non è vero che la riga magica non abbia influenza sul modo di salvare il file dopo l’editing.
Il mio TeXShop è impostato per utf8; talvolata mi capita di riaprire dei file codificati latin1, ma ai quali ho messo la riga magica. Li apre perfettamente, li modifica senza problemi e li salva perfettamente in latin1.
2) nella guida tematica sulle codifiche c’è scritto chiaramente che la codifica usata dall’editor (anche sotto effetto della riga magica) e il codice dalla codifica passato a inputenc devono andare d’accordo, ed è spiegato, spero chiaramente, il perché ci voglia questa “doppia impostazione”. L’uso della riga magica ha due vantaggi anche per chi usasse editor incapaci di auto configurarsi: la sua informazione e quella per inputenc devono essere uguali. Per gli editor capaci di interpretare la riga magica questo è sufficiente; se c’è qualcuno ei collaboratori che non ne vuole sapere di usare editor capaci di auto configurarsi, legge la riga magica come prima cosa sul file appena lo apre e sa che deve cambiare codifica al file o deve cambiare codifica all’editor, ma che non pò modificare e salvare il file con una codifica diversa.
3) TeXshop non è l’unico editor che capisce le righe magiche; ci sono anche TeXworks e TeXstudio, entrambi multipiattaforma; non escludo che anche Texmaker possa essere già in grado di capire anche lui la riga magica. ma il fatto che siano multipiattaforma fa sì che non ci siano problemi ad usare editor capaci di auto configurarsi perché a questo punto “non ci sono scuse” per non voler usare un editor capace di auto configurarsi, se non la pigrizia di non voler imparare ad usare un altro editor; pigrizia che si paga con la necessità di dover cambiare e ricambiare la codifica dei file .tex che ci si scambia fra collaboratori.
4) certo che la soluzione più efficiente è quella che i vari collaboratori si accordino su una codifica comune; la diversità delle macchine e di sistemi operativi consiglia quindi di accordarsi anche sull’uso di editor multipiattaforma o almeno di editor capaci di auto configurarsi. Ora non più, ma fino a qualche tempo fa io tenevo a bordo di miei Mac due editor, uno impostato per utf8 e uno per latin1; poi sono state inventate le righe magiche e alcuni di questi editor sono stati dotati di capacità di autoconfigurarsi, quindi ho lasciato questa impostazione e mi affido solo alle righe magiche.
5) TeXshop, TeXworks e TeXstudio, sono in grado di aprire un file codificato in un certo modo e di salvarlo in un altro file codificato in modo diverso; le azioni da eseguire sono leggermente diverse, ma anche un TeXshop impostato per usare applemac, può aprire un file codificato utf8 e salvarlo in latin1 (esercizio di alta acrobazia, che non serve a niente se si lavora con una piano ben coordinato fra collaboratori); secondo me l’editor migliore, con azioni più semplici da eseguire per cambiare codifica è TeXworks, ma è una questione di gusti; inoltre TeXshop è quello più rigido per quanto rigurada le informazioni da scrivere nelle righe magiche, mentre TeXworks e TeXstudio hanno le loro sintassi ma possono leggere e capire righe magiche scritte con altre sintassi.
6) Non so perché TeXshop nasca preconfigurato per usare Western MacRoman (applemac); posso immaginare che essendo un editor nativo del Mac e fino al sistema operativo OS IX i Mac usavano solo la codifica Wester MacRoman, la scelta si dovuto a retrocompatibilità. Oggi Western MacRoman non dovrebbe più venire usato, specialmente per lavori collaborativi. Però sono d’accordo che TeXshop sotto questo punto di vista potrebbe essere migliorato; è fastidioso che si apra un file codificato latin1 e privo della riga magica e che lui avverta che il file è codificato in Western MacRoman; basterebbe che scrivesse che è codificato in una codifica diversa da quella con la quale è impostato l’editor, senza specificare il nome di una codifica che risulta essere sbagliata. È certo che questa codifica specifica del Mac non dovrebbe essere usata mai quando ci si scambia file TeX.
Scusa la prolissità di questo messaggio, ma vedi bene che le codifiche, una volta capito perché devono essere specificate due volte, una per l’editor e una per il programma di composizione, non presentano più nessun mistero.