- Questo topic ha 15 risposte, 5 partecipanti ed è stato aggiornato l'ultima volta 12 anni, 10 mesi fa da
egreg9.
-
CreatoreTopic
-
15 Novembre 2013 alle 9:30 #90422::
Buongiorno a tutti,
sto scrivendo un documento in latex che per semplicità ho ridotto ai minimi termini.
Questo è il codice del documento principale:
`\documentclass[12pt,a4paper,twoside,openright]{book}\usepackage[italian]{babel}
\usepackage[utf8]{inputenc}\begin{document}
\include{ringraziamenti}\end{document}
`
Mentre il capitolo “ringraziamenti” incluso è questo:
`\chapter*{Ringraziamenti}
fi fi fi`Il pdf (in allegato) risultante codifica le sillabe “fi” in modo incomprensibile, cioè se provo a copiare i vari “fi fi fi” dal pdf in un documento qualsiasi mi da dei caratteri sconosciuti.
Secondo voi cosa può essere? Ho provato anche a cambiare font usando `\renewcommand{\familydefault}{\sfdefault}` ma l’errore si presenta comunque.
Grazie in anticipo
Attachments:
You must be logged in to view attached files. -
CreatoreTopic
-
AutoreRisposte
-
-
15 Novembre 2013 alle 9:36 #90423::
Ciao, benvenuto!
se aggiungi anche i comandi relativi alla codifica del font risolvi il problema:`\usepackage[T1]{fontenc}`. Così facendo se fai un copia-incolla dal tuo pdf la legatura viene gestita come due lettere separate. (e qella riga di codice andrebbe sempre usata!) La lettura della documentazione di fontenc è certamente istruttiva…Fran
-
15 Novembre 2013 alle 10:11 #90424
-
15 Novembre 2013 alle 10:25 #90425::
Strano, perché qui da me il tuo esempio riproduceva l’errore e l’aggiunta di fontenc permetteva di fare un corretto copia-incolla dal pdf.
Il fatto che il problema si ponga solo quando la f e la i sono vicine dipende dal fatto le LaTeX genera una “legatura”, cioè usa un altro carattere per stampare “fi”.
A questo punto non so come altro aiutarti, qui se ne è parlato: http://tex.stackexchange.com/questions/33476/why-cant-fi-be-separated-when-being-copied-from-a-compiled-pdf , forse dipende dal tuo visualizzatore (io ho usato un vecchio adobe reader 9)Fran
-
15 Novembre 2013 alle 11:46 #90426::
Il problema si ripresenta regolarmente nonostante la specifica della codifica utf8 per il file sorgente e la codifica T1 epr il file di uscita; e la causa è la legatura.Allora può darsi che il rpoblmea si semplifichi con la codifica T1 per l’uscita, ma ne ho seri dubbi; il problema si risolve stando attenti che nel file sorgente non compaia la legatura.
Mi spiego meglio: quando si usa la codifca utf8 questa non viene immediatamante seguita dalla lettura del file *enc.def come per le altre codifiche a 8 bit; essa viene dilaziona al momneto del \begin{document} quanto tutto ciò che riguarda i font è già stato specificato; a quel momento sono note tutte le codifiche da usare per le uscite; OT1, T1, LY1, eventualmente LGR, T2A, eccetera. A quel punto vengono ricodificati tutti i caratteri utf8 codificati con più di un byte e che sono presenti nei font di uscita; quindi, se vogliamo, anche la legatura fi, o ffi, o fl, o ffl possono venire codificate correttamnte, in quanto non appartengono alla serie di font a aASCII codificati a 7 bit, che formano al prima mezza pagina dei font UNICODE.
Quando però copi da un file PDF avendo composto con un font che non è UNICODE, come succede per i fotn Type1 che si usano con la codifica T!, meno che mai con i font LGR ecc., vengono copiate delle legature che erano presenti in quei font, ma che non corrispondono a codici né unicode né a nessun’altra codifica. Se incolli questi caratteri in una finestra di un editor che per sua natura no usa di default le legature, probabilmente nella finestra di editing il carattere appare correttamante, ma successivamente il pacchetto inputenc con l’opzione utf8 non riesce a convertirlo nella sequenza dei due o più byte che corrispondono alla legatura T1, e quindi componendo appaiono caratteri strani. Oppure appare il warning che il carattere fi (legato) non ha un corrispondente e non può essere codificato. risultato restano nel flusso di caratteri da inviare all’uscita nel documento composto due o più bite che non hanno nessuna significato epr gli umani.Se si esamina con molta attenzione il file dove si è copiata la legatura, la si cancelli sostituendola con i due caratteri slegati, e tutto file liscio; questa operazione può venire eseguira con un find&replace globale, cosicché non si sostituisce una sola istanza, ma si sostituiscono tutte le istanze dei caratteri legati.
Non è tutto esatto quello che ho scritto, ma rende l’idea. Il fatto che a @franen sia andato tutto a posto esplicitando la codifica T!, secondo me è un caso, mentre non sarebbe, anzi non è un caso se la cosa si è aggiustata da sola perché usa un editor diverso con un diverso font’d’entrata e quindi salva i caratteri immessi i modo diverso.
Capisco che questa spiegazione sia complessa e volutamente imprecisa, perché sarebbe troppo complicato verificare quello che ho detto andando a leggere i codici dei vari pacchetti nominati e i file .def o .dfu coinvolti nelle specificazioni di codifica, ma sostanzialmente la cosa dovrebbe essere chiara: quando succedono queste cose, si eseguano delle sostituzioni globali dei glifi legati con i corrispondenti caratteri slegati.
PS: dopo aver inviato il messaggio precedente, sono andato ad aprire il file t1enc.dfu che viene usato da input enc per mappare i caratteri UNICODE in entrata nei comandi interni di LaTeX per gestire quei glifi; il file si trova (con Texlive) in texlive/2013,texmf-distr/tex/latex/base/
Se si scorrono le varie mappature non ce ne è nessuna per gestire le legature, perché in effetti non dovrebbe essercene bisogno; le legature sono una proprietà del font, non una proprietà della codifica.
-
15 Novembre 2013 alle 12:05 #90427
-
15 Novembre 2013 alle 12:43 #90428::
Grazie ad entrambi.Non avevo mai sentito prima il concetto di legatura, detto ciò non ho inserito la legatura nel file sorgente, forse però il mio editor lo fa in automatico, uso TeXstudio 2.4.
Ho provato a usare il pacchetto `\usepackage{cmap}` come suggerito dal link di Fran ma senza alcun risultato.Cosa posso fare?
-
15 Novembre 2013 alle 13:47 #90429::
nedyar” post=89946Grazie ad entrambi.
Non avevo mai sentito prima il concetto di legatura, detto ciò non ho inserito la legatura nel file sorgente, forse però il mio editor lo fa in automatico, uso TeXstudio 2.4.
Ho provato a usare il pacchetto `\usepackage{cmap}` come suggerito dal link di Fran ma senza alcun risultato.Cosa posso fare?
Se modifico il tuo file facendolo diventare
`\documentclass[12pt,a4paper,twoside,openright]{book}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}\usepackage[italian]{babel}
\begin{document}
\chapter*{Ringraziamenti}
fi fi fi\end{document}`
([tt]\include[/tt] è del tutto irrilevante) e guardo il PDF con Adobe Reader, copio la riga con le tre legature e incollo sulla finestrella a sfondo verde in http://rishida.net/tools/conversion/ ottengo, nella riga delle conversioni in esadecimale
`0066 0069 0020 0066 0069 0020 0066 0069`
che significa una corretta interpretazione come [tt]f+i+spazio+f+i+spazio+f+i[/tt].Se proprio insisti a usare la codifica OT1 (cioè a non caricare fontenc con l’opzione T1), puoi ugualmente ottenere l’interpretazione corretta con cmap devi chiamarlo con
`\usepackage[resetfonts]{cmap}`
Ma gli svantaggi di OT1 rispetto a T1 per l’italiano sono talmente tanti che non vale proprio la pena.Dov’è il problema? Semplice, i font Type1 che vengono usati quando T1 è la codifica di output possiedono la risorsa CMAP al loro interno, quelli corrispondenti alla codifica OT1 no (del resto sono stati prodotti molto tempo prima che il formato PDF prendesse piede).
Ciao
Enrico
-
15 Novembre 2013 alle 13:56 #90430
-
15 Novembre 2013 alle 14:12 #90431
-
15 Novembre 2013 alle 15:46 #90432
-
16 Novembre 2013 alle 13:43 #90433
-
16 Novembre 2013 alle 14:41 #90434::
Mi fa piacere che lmodern ti abbia risolto il problema, ma la soluzione vera sta specialmente nell’aver specificato la codifica T!, l’hai fatto vero? se non l’hia fatto e hai risolto ugualmente il tuo problema, allora sei fortunato (cioè il risultato è frutto della fortuna).Le legature fi ffi, fl e ffl sono presenti sia nei font CM (codificati OT1, la codifica di default e font di default), sia nel font CM-Super (codificati (T1, e usati di default quando specifichi la codifica T1), sia nei font Latin Modern (usati se specifichi l’uso di questa collezione di font sia in codifica OT1, sia in codifica T1 sia in altre codifiche). Quindi non è la questione se i font contengano quelle legature (tutti i font che ti ho indicato le contengono); dipende da come interagiscono la specifica della codifica utf8 a inputenc, con la codifica specificata all pacchetto fontenc; e dipendono dal fatto che copiando e incollando si copi e incolli anche la legatura oppure si incollino i caratteri slegati.
-
16 Novembre 2013 alle 14:52 #90435::
OldClaudio” post=89995Mi fa piacere che lmodern ti abbia risolto il problema, ma la soluzione vera sta specialmente nell’aver specificato la codifica T!, l’hai fatto vero? se non l’hia fatto e hai risolto ugualmente il tuo problema, allora sei fortunato (cioè il risultato è frutto della fortuna).
Le legature fi ffi, fl e ffl sono presenti sia nei font CM (codificati OT1, la codifica di default e font di default), sia nel font CM-Super (codificati (T1, e usati di default quando specifichi la codifica T1), sia nei font Latin Modern (usati se specifichi l’uso di questa collezione di font sia in codifica OT1, sia in codifica T1 sia in altre codifiche). Quindi non è la questione se i font contengano quelle legature (tutti i font che ti ho indicato le contengono); dipende da come interagiscono la specifica della codifica utf8 a inputenc, con la codifica specificata all pacchetto fontenc; e dipendono dal fatto che copiando e incollando si copi e incolli anche la legatura oppure si incollino i caratteri slegati.
Mi sa che per una volta sono stato fortunato, ho sì usato la codifica T1 ma per sfizio ho provato a commentare quella riga e il problema non si presenta più. Sicuramente è più corretto il suggerimento che mi avete dato, cioè che il problema era nella codifica, infatti d’ora in avanti continuerò ad usarlo, ma, per qualche strano motivo, non ha risolto.
Sono arrivato a questa soluzione per caso notando che il font utilizzato con la codifica T1 era di tipo bitmap, cercando un po’ in rete ho risolto aggiungendo lmodern che casualmente ha risolto il mio problema originario. 😎
-
16 Novembre 2013 alle 15:55 #90436::
nedyar” post=89996
Mi fa piacere che lmodern ti abbia risolto il problema, ma la soluzione vera sta specialmente nell’aver specificato la codifica T!, l’hai fatto vero? se non l’hia fatto e hai risolto ugualmente il tuo problema, allora sei fortunato (cioè il risultato è frutto della fortuna).
Le legature fi ffi, fl e ffl sono presenti sia nei font CM (codificati OT1, la codifica di default e font di default), sia nel font CM-Super (codificati (T1, e usati di default quando specifichi la codifica T1), sia nei font Latin Modern (usati se specifichi l’uso di questa collezione di font sia in codifica OT1, sia in codifica T1 sia in altre codifiche). Quindi non è la questione se i font contengano quelle legature (tutti i font che ti ho indicato le contengono); dipende da come interagiscono la specifica della codifica utf8 a inputenc, con la codifica specificata all pacchetto fontenc; e dipendono dal fatto che copiando e incollando si copi e incolli anche la legatura oppure si incollino i caratteri slegati.
Mi sa che per una volta sono stato fortunato, ho sì usato la codifica T1 ma per sfizio ho provato a commentare quella riga e il problema non si presenta più. Sicuramente è più corretto il suggerimento che mi avete dato, cioè che il problema era nella codifica, infatti d’ora in avanti continuerò ad usarlo, ma, per qualche strano motivo, non ha risolto.
Sono arrivato a questa soluzione per caso notando che il font utilizzato con la codifica T1 era di tipo bitmap, cercando un po’ in rete ho risolto aggiungendo lmodern che casualmente ha risolto il mio problema originario. 😎Per carità non voglio insistere, ma guarda il file che ti allego; spero che compaia come compare da me, visto che uso font aprticolari e editor specifici; leggi i commenti e dopo \end document guarda i messaggi d’errore. Tieni presente come ho agito, puoi provare a ripetere l’esperimento compilando solo la prima riga di testo commentando le righe successive e togliendo i commenti dai pacchetti usati secondo quanto dicono le righe di commento; poi copia dal file appena prodotto l’ultima riga e ricopilala sotta alla riga appena compilata, mdifica la situazione dei pacchetti da usare, e ricompila; via avanti così; Noterai che finché uso il font Monaco nell’editor TeXshop (e potrei usare lo stesso font con TeXstudio configurando l’editor in modo adatto, così come potrei scegliere per TeXShop il font Arial–la differenza fra Monaco e Arial è che il primo e monospaziato, mentre il secondo è proporzionale; il primo non ha le legature, il secondo sì)`% !TEX TS-program = pdflatex
% !TEX encoding = UTF-8 Unicode
\documentclass[12pt]{article}
\usepackage[utf8]{inputenc}
%\usepackage[T1]{fontenc}
%\usepackage{lmodern}
\begin{document}% % % % % % % % % % % % % % % % % % % TEXSHOP % % % % % % % % % % % % % % % % % % % % % %
% Nei quattro esempi qui sotto TeXShop usa il font monospaziato Monaco
affine afflato difficile finale fluido
% Ora copio dal file PDF e incollo qui sotto, avendo composto con LatinModern e T1
affine afflato difficile finale fluido %Si noti che le lettere sono state copiate slegate
% Ora copio dal file PDF e incollo qui sotto, avendo composto senza LatinModern ma con T1
affine afflato difficile finale fluido %Si noti che le lettere sono state copiate slegate
% Ora copio dal file PDF e incollo qui sotto, avendo composto senza LatinModern ma con OT1
affine afflato difficile finale fluido %Si noti che le lettere sono state copiate slegate
% % % % % % % % % % % % % % % % % % % % % TEXSTUDIO % % % % % % % % % % % % % % % % % %
% Nei quattro esempi qui sotto ho usato Texstudio con il font Arial% Ora copio dal file PDF e incollo qui sotto, avendo composto senza LatinModern ma con OT1
% come si vedem ho copiato da Adobe Reader le legature non compaiono nemmeno nella schemrata, ma ci sono.ane aato dicile nale
uidoI messaggi d'errore sono
\end{document}
I messaggi d'errore sono! Package inputenc Error: Keyboard character used is undefined
(inputenc) in inputencoding `utf8'.See the inputenc package documentation for explanation.
Type Hfor immediate help.
…l.29 a^^N
ne a^^Oato di^^Ncile ^^Lnale
You need to provide a definition with \DeclareInputText
or \DeclareInputMath before using this key.! Package inputenc Error: Keyboard character used is undefined
(inputenc) in inputencoding `utf8'.See the inputenc package documentation for explanation.
Type Hfor immediate help.
…l.29 a^^Nne a^^O
ato di^^Ncile ^^Lnale
You need to provide a definition with \DeclareInputText
or \DeclareInputMath before using this key.! Package inputenc Error: Keyboard character used is undefined
(inputenc) in inputencoding `utf8'.See the inputenc package documentation for explanation.
Type Hfor immediate help.
…l.29 a^^Nne a^^Oato di^^N
cile ^^Lnale
You need to provide a definition with \DeclareInputText
or \DeclareInputMath before using this key.
`Hai seguito i messaggi d’errore? Il file è sempre lo stesso, quello che si copia lo si incolia nella finestra dell’editor configurato per usare font diversi; e il risultato è diverso.Ripeto quindi quello che ho detto; le legature nel file d’entrata .tex NON devono essere presenti; le lettere accentate non sono legature, sono semplici glifi; le legature che si producono nel font di uscita sono il risultato delle proprietà del font; se le copi e incolli in un altro file sorgente, sempre codificato utf8, quei particolari glifi non sono presi in considerazione né da \inputenc con l’opzione utf8, nè da fontenc con l’opzione T1, Sembra che il pacchetto cmap possa mettere a posto le cose, ma è certo che usando font Type 1 a 256 glifi, i glifi delle legature hanno indirizzi numerici inferiori a 32 (il codice dello spazio) e non hanno quindi un indirizzo unicode valido. Usando i nomi dei glifi, invece che gli indirizzi numerici, è possibile superare questa “incongruenza” e cmap svolge questo delicato incarico di rimappare gli indirizzi ai nomi.
Sempre per approfondire, ma ritenendo il tuo problema risolto per scienza o per fortuna, dai un’occhiata alla guida tematica sui font; la figura 1.1 rappresenta la tabella dei fon codificati OT1, e vedi che le legature della lettera f sono tutte nella prima riga della tabella verso destra con indirizzi esadecimali che vanno da “0B a “0F; i font in codifica T sono rappresentati nella tabella 1.3, dove le legature della lettera f sono alla fine della seconda riga con indirizzi esadecimali che vanno da “1B a “1F; questi indirizzi esadecimali inferiori a “20 sono tutti vuoti nella tabella unicode (che non è riportata perché conterrebbe centinai di miglia di glifi); la prima pagina unicode negli indirizzi da “20 a “FF contiene i caratteri ASCII’, invece nelle prime 32 posizioni, da “00 a “1F, la tabella ASCII contiene i caratteri di controllo per le trasmissioni in telescrivente (ormai quasi del tutto abbandonate) e quelle posizioni nella tabella UNICODE sono vuote. Ecco perché i messaggi d;errore fanno riferimento a caratteri indicati, per esempio, con ^^N, che vuol dire “l’indirizzo di N diminuito di “20 esadecimale: se guardi la tabella l’indirizzo esadecimale di N, esso è “4E e se gli togli “20, ottieni “1e, cioè l’indirizzo della legatura ffi. A me la cosa non disturba più di tanto, nel senso che l’ho capita e l’ho usata a mio beneficio tante volte, ma capisco che sia un problema per chi non si occupa degli indirizzi dei glifi; e non dovrebbe preoccupare affatto perché le tabelle t1enc.def e t1enc.dfu dovrebbero essere fatte diversamente, ma purtroppo questo è quanto ci lega al passato quando in font Type1 non esistevano e meno che mai esisteva la codifica UNICODE, ma TeX e LaTeX esistevano già.
-
16 Novembre 2013 alle 17:09 #90437::
nedyar” post=89996Mi sa che per una volta sono stato fortunato, ho sì usato la codifica T1 ma per sfizio ho provato a commentare quella riga e il problema non si presenta più. Sicuramente è più corretto il suggerimento che mi avete dato, cioè che il problema era nella codifica, infatti d’ora in avanti continuerò ad usarlo, ma, per qualche strano motivo, non ha risolto.
Sono arrivato a questa soluzione per caso notando che il font utilizzato con la codifica T1 era di tipo bitmap, cercando un po’ in rete ho risolto aggiungendo lmodern che casualmente ha risolto il mio problema originario. 😎Ah! Quelli che non installano i font CM-Super! 😉 Sinceramente non ho mai capito perché MiKTeX non li fornisce nella versione base, ma nemmeno perché la gente non installi la distribuzione completa e non ci pensi più (tranne che per aggiornare di tanto in tanto).
Ciao
Enrico
-
-
AutoreRisposte
- Devi essere connesso per rispondere a questo topic.