- Questo topic ha 15 risposte, 4 partecipanti ed è stato aggiornato l'ultima volta 15 anni, 5 mesi fa da
OldClaudio.
-
CreatoreTopic
-
18 Marzo 2011 alle 7:28 #57256::
Com’è noto, il pacchetto microtype non è del tutto compatibile con XeLaTeX (permette soltanto la protrusione dei caratteri, ma non la microgiustificazione, stando a quanto ho appreso da chi ne sa enormemente più di me).Ora, però, compilando un testo in greco con LaTeX traslitterando i caratteri, mettere o no microtype non ha importanza: il risultato è esattamente lo stesso, senza variazioni.
Mi chiedo: lo stesso accadrebbe con XeLaTeX? Cioè: se microtype funzionasse perfettamente con Xe, metterlo o non metterlo sarebbe la stessa cosa?
Se la risposta fosse sì, allora questo significa, per me, che sono i font greci a neutralizzarne le funzioni e che, in ultima analisi, scrivere direttamente in greco con XeLaTeX non avrebbe la controindicazione che abbiamo scritto nell’appendice dell’Arte.
Che ne pensate?
Ciao
Tommaso
-
CreatoreTopic
-
AutoreRisposte
-
-
18 Marzo 2011 alle 8:23 #57257::
Con pdflatex microtype funziona se si usano i font giusti.
Con xelatex per ora microtype non funziona neanche con i font giusti.I font CBgreek NON sono font giusti. Che cosa vuol dire font giusto: vuol dire che per quel font esistono delle tabele che dicono carattere per carattere quanto può protrudere, quanto può venire compresso o espanso orizzontalmente, eccetera.
Io queste tabelle non le ho mai fatte; so che richiederebbero un tempo infinito e non mi ci sono mai messo; preferisco — preferivo fino a ieri — usare il mio tempo in modo diverso.Ieri ho cominciato a trasformare l’Introduzione per renderla compatibile con XeLaTeX. Ovviamente non posso usare microtype nemmeno con i font latini per i quali esistano le tabelle che li rendono giusti, perché la prima uscita di una compilazione xelatex è uno speciale file dvi che dietro le quinte viene subito trasformato in pdf; la cosa è talmente rapida che se si guarda la schermata della console so nota appena un secondo o due di sospensione alla fine prima che si chiuda questa finestra e si aggiorni o si apra la finestra del documento compilato in pdf (suoi nostri Mac).
Quello che ho notato è che lo stesso testo che con pdflatex+microtype veniva perfettamente giustificato, virtualmente senza una sola overfull o underfull hbox, compilato con xelatex senza microtype richiede numerosissimi aggiustamenti a mano, senza contare che polyglossia non fornisce le comodità che offre invece babel per gestire la lingua italiana.
Spero quindi che presto xelatex possa essere compatibile con microtype; nello stesso tempo mi rendo conto dell’importanza dei file specifici per i font greci e magari presto mi metterò a colmare questa lacuna con i CBgreek. Almeno la cosa potrà funzionare con pdflatex, intanto. poi per il resto si vedrà.
-
18 Marzo 2011 alle 8:57 #57258::
Ciao Claudio, ciao Tommaso,esiste una versione sperimentale di microtype che prevede anche il supporto per XeTeX (e LuaTeX). Si trova sul sito di TLcontrib e può essere installato tramite TeX Live manager (ma consiglio di farlo solo se davvero interessati, anche se con tlmgr dovrebbe essere minore il rischio di pasticciare con l’installazione):
http://tlcontrib.metatex.org/cgi-bin/package.cgi/ruid=3684530276/action=view/id=423
Non credo però che siano stati fatti passi avanti per il supporto delle impostazioni di microtipografia per il greco, né per pdfTeX né per XeTeX.
Max.
-
18 Marzo 2011 alle 9:39 #57259::
Grazie Claudio.
La mia domanda era soltanto per capire se quella precisazione su microtype era omissibile dall’appendice dell’Arte.
Ma ora mi rispondo da solo: va lasciata, perché se è vero (forse) che microtype non produce i suoi effetti nelle parti in greco anche compilando con pdflatex, un documento bilingue non vedrà microtype completamente all’opera nemmeno nelle parti in italiano.Mi sembra che questa cosa di microtype, anche se non la ritengo un dramma, possa far preferire ancora LaTeX a XeLaTeX (che per altri versi ha alcune altre cose più semplici).
Anche se scrivere direttamente in greco è bellissimo 😀Ciao
Tommaso
-
18 Marzo 2011 alle 9:41 #57260::
Dunque mi sembra di capire che il problema di microtype e CB siano proprio i CB, e che sistemandoli con le loro tabelle si potrebbe risolvere la cosa. E che almeno con pdflatex si potrebbe avere un testo greco microgiustificato. Bene 😀Claudio, potresti essere più chiaro su quelle comodità per l’italiano che polyglossia non avrebbe?
Ciao
Tommaso
-
19 Marzo 2011 alle 0:05 #57261::
Polyglossia contiene solo il richiamao alla giusta tabella di sillabazione e definisce i veri contenuti dei comandi \chaptername, \figurename, eccetera; definisce la data in italiano e basta.
Le altre comodità son il doppi apice attivo (detestato da tanti, e apprezzato dai pochi che lo usano, i comandi \ap. \ped, \unit, eccetera per soddisfare alcune delle norme ISO, la virgola intelligente. Forse è giusto che queste cose non compaiano solo per un lingua; ed è per wuesto che devo scrivere un piccolo file .sty che permetta di far funzionare quelle cose anche quando si usa XeLaTeX e si invoca il pacchettino.
-
19 Marzo 2011 alle 10:25 #57262::
Polyglossia contiene solo il richiamao alla giusta tabella di sillabazione e definisce i veri contenuti dei comandi \chaptername, \figurename, eccetera; definisce la data in italiano e basta.
Le altre comodità son il doppi apice attivo (detestato da tanti, e apprezzato dai pochi che lo usano, i comandi \ap. \ped, \unit, eccetera per soddisfare alcune delle norme ISO, la virgola intelligente. Forse è giusto che queste cose non compaiano solo per un lingua; ed è per wuesto che devo scrivere un piccolo file .sty che permetta di far funzionare quelle cose anche quando si usa XeLaTeX e si invoca il pacchettino.`\RequirePackage{realscripts}
\let\ap\textsuperscript
\let\ped\textsubscript
\protected\def\unit{%
\,\ifmmode\expandafter\mathrm\else\textrm\fi}`
Con il pacchetto realscripts vengono usati i “veri” caratteri per apici e pedici, se nel font ci sono. Purtroppo alcuni font ne hanno solo per alcuni caratteri e questo può confondere il meccanismo di decisione. Dato che dipende dal font si potrebbe creare un’opzione:
`\DeclareOption{realscripts}{\let\PREF@scripts=T}
\DeclareOption{fakescripts}{}
\ExecuteOptions{realscripts} % o l'altra, se si preferisce
\ProcessOptions\relax
\RequirePackage{realscripts}
\ifdefined\PREF@scripts
\let\ap\realsuperscript
\let\ped\realsubscript
\else
\let\ap\fakesuperscript
\let\ped\fakesubscript
\fi`
Sull’attivazione di ” nel modulo italiano di Polyglossia si può discutere.Ciao
Enrico
-
19 Marzo 2011 alle 11:50 #57263::
Grazie Enrico degli ottimi suggerimenti.Certo, lo so, per ” si può discutere. è per questo che sto pensando ad un pacchettino personale; io “pirsonalmente di pirsona” non ne posso più fare a meno, ma è probabile che la maggior parte delle persone ne faccia tranquillamente a meno.
Ciao
Claudio
-
19 Marzo 2011 alle 18:54 #57264::
Grazie Enrico degli ottimi suggerimenti.
Certo, lo so, per ” si può discutere. è per questo che sto pensando ad un pacchettino personale; io “pirsonalmente di pirsona” non ne posso più fare a meno, ma è probabile che la maggior parte delle persone ne faccia tranquillamente a meno.
Ciao
ClaudioProva questa versione modificata di gloss-italian.ldf
`\ProvidesFile{gloss-italian.ldf}[polyglossia: module for italian – unofficial test version]
\makeatletter
\PolyglossiaSetup{italian}{
hyphennames={italian},
hyphenmins={2,2},
frenchspacing=true,
indentfirst=true,
fontsetup=true,
}%%% CHANGES START %%%
\define@boolkey{italian}[italian@]{babelshorthands}[true]{}\ifsystem@babelshorthands
\setkeys{italian}{babelshorthands=true}
\else
\setkeys{italian}{babelshorthands=false}
\fi\ifcsundef{initiate@active@char}{%
\input{babelsh.def}%
\initiate@active@char{“}%
}{}\def\italian@shorthands{%
\bbl@activate{“}%
\def\language@group{italian}%
\declare@shorthand{italian}{“}{%
\relax\ifmmode
\def\xpgit@next{''}%
\else
\def\xpgit@next{\futurelet\xpgit@temp\xpgit@cwm}%
\fi
\xpgit@next}%
}\def\xpgit@@cwm{\nobreak\discretionary{-}{}{}\nobreak\hskip\z@skip}
\newrobustcmd*{\xpgit@cwm}{\let\xpgit@@next\relax
\ifcat\noexpand\xpgit@temp a%
\def\xpgit@@next{\xpgit@@cwm}%
\else
\if\noexpand\xpgit@temp \string|%
\def\xpgit@@next{\xpgit@@cwm\@gobble}%
\else
\if\noexpand\xpgit@temp \string<% \def\xpgit@@next{«\@gobble}% \else \if\noexpand\xpgit@temp \string>%
\def\xpgit@@next{»\@gobble}%
\else
\if\noexpand\xpgit@temp\string/%
\def\xpgit@@next{\slash\@gobble}%
\else
\ifx\xpgit@temp”%
\def\xpgit@@next{“\@gobble}%
\fi
\fi
\fi
\fi
\fi
\fi
\xpgit@@next}\def\noitalian@shorthands{%
\@ifundefined{initiate@active@char}{}{\bbl@deactivate{“}}%
}
%%% CHANGES END %%%\def\captionsitalian{%
\def\prefacename{Prefazione}%
\def\refname{Riferimenti bibliografici}%
\def\abstractname{Sommario}%
\def\bibname{Bibliografia}%
\def\chaptername{Capitolo}%
\def\appendixname{Appendice}%
\def\contentsname{Indice}%
\def\listfigurename{Elenco delle figure}%
\def\listtablename{Elenco delle tabelle}%
\def\indexname{Indice analitico}%
\def\figurename{Figura}%
\def\tablename{Tabella}%
\def\partname{Parte}%
\def\enclname{Allegati}%
\def\ccname{e~p.~c.}%
\def\headtoname{Per}%
\def\pagename{Pag.}% % in Italian the abbreviation is preferred
\def\seename{vedi}%
\def\alsoname{vedi anche}%
\def\proofname{Dimostrazione}%
\def\glossaryname{Glossario}%
}
\def\dateitalian{%
\def\today{\number\day~\ifcase\month\or
gennaio\or febbraio\or marzo\or aprile\or maggio\or giugno\or
luglio\or agosto\or settembre\or ottobre\or novembre\or
dicembre\fi\space \number\year}}\def\noextras@italian{%
\lccode\string”2019=\z@
\noitalian@shorthands}\def\blockextras@italian{%
\lccode\string”2019=\string”2019
%TODO ? \clubpenalty3000\widowpenalty3000\finalhyphendemerits50000000 << in Babel %%% CHANGES START %%% \ifitalian@babelshorthands\italian@shorthands\fi %%% CHANGES END %%% } \def\inlineextras@italian{% \lccode\string"2019=\string"2019 %%% CHANGES START %%% \ifitalian@babelshorthands\italian@shorthands\fi %%% CHANGES END %%% } \endinput` Occhio a registrarlo come UTF8, visto che contiene caratteri "alti". Il test che ho eseguito sembra funzionare. Occorre dichiarare la lingua con uno fra `\setmainlanguage[babelshorthands]{italian} \setotherlanguage[babelshorthands]{italian}` L'opzione babelshorthands può essere data anche ai comandi \selectlanguage e \foreignlanguage o agli ambienti otherlanguage e otherlanguage*. Non ho messo tutta la faccenda dei caporali, visto che nei font OpenType non dovrebbero mancare e mi pare difficile che qualcuno usi font OT1 con XeLaTeX, mi sono limitato a definire “< come « e “> come ». Analogamente “” è equivalente a “. La sequenza “| sarebbe obsoleta, ma per compatibilità con i vecchi documenti potrebbe servire: chi mai scrive qualcosa per XeLaTeX con i comandi come \`e?Sinceramente non metterei \ap, \ped e \unit dentro il modulo, non c’è nulla del genere in alcun altro modulo di Polyglossia. Ma non è complicato scriversi un pacchettino personale, che magari potrebbe essere inserito a parte, da chiamare a richiesta e così i comandi sarebbero disponibili anche nelle altre lingue.
Sulla modifica dei valori di \clubpenalty, \widowpenalty e \finalhyphendemerits bisogna vedere.
Ciao
Enrico
-
19 Marzo 2011 alle 19:25 #57265
-
19 Marzo 2011 alle 20:20 #57266
-
20 Marzo 2011 alle 0:20 #57267::
Certamente proverò il file.
Vorrei segnalare che in babel “< e "> non si limitano a mettere i caporali, ma eliminano anche gli spazi spuri dopo i caporali aperti e prima dei caporali chiusi.
Mi piace molto che fra le caratteristiche stilistiche della composizione italiana ci sia frenchspacing.
A proposito delle widowspenalty, clubpenalty e finalhyphendemerits: osservo quanto segue:
1) non so se XeLaTeX usi anche \@clubpenalty; credo di sì perché ho fatto un tracciamento di debug e mi pare di ricordare di aver visto anche \@clubpenalty.
2) \finalhyphendemerits ci vuole assolutamente: mi è già capitato di avere una riga vedova composta solo dall’ultima sillaba di due lettere della parola finale del capoverso: terribile!
Forse i valori di 3000 e 4000 per quelle penalità per le orfane e le vedove sono un po’ alti, ma le vedove sono veramente una pestilenza; le orfane mi dispiacciono un po’ meno ma sono brutte anche quelle.Grazie mille, Enrico
Ciao
Claudio
-
20 Marzo 2011 alle 11:00 #57268::
Certamente proverò il file.
Vorrei segnalare che in babel “< e "> non si limitano a mettere i caporali, ma eliminano anche gli spazi spuri dopo i caporali aperti e prima dei caporali chiusi.
Mi piace molto che fra le caratteristiche stilistiche della composizione italiana ci sia frenchspacing.
A proposito delle widowspenalty, clubpenalty e finalhyphendemerits: osservo quanto segue:
1) non so se XeLaTeX usi anche \@clubpenalty; credo di sì perché ho fatto un tracciamento di debug e mi pare di ricordare di aver visto anche \@clubpenalty.
2) \finalhyphendemerits ci vuole assolutamente: mi è già capitato di avere una riga vedova composta solo dall’ultima sillaba di due lettere della parola finale del capoverso: terribile!
Forse i valori di 3000 e 4000 per quelle penalità per le orfane e le vedove sono un po’ alti, ma le vedove sono veramente una pestilenza; le orfane mi dispiacciono un po’ meno ma sono brutte anche quelle.Cambia la definizione di \xpgit@cwm con questa:
`\newrobustcmd*{\xpgit@cwm}{\let\xpgit@@next\relax
\ifcat\noexpand\xpgit@temp a%
\def\xpgit@@next{\xpgit@@cwm}%
\else
\if\noexpand\xpgit@temp \string|%
\def\xpgit@@next##1{\xpgit@@cwm}%
\else
\if\noexpand\xpgit@temp \string<% \def\xpgit@@next##1{«\ignorespaces}% \else \if\noexpand\xpgit@temp \string>%
\def\xpgit@@next##1{\unskip»}%
\else
\if\noexpand\xpgit@temp\string/%
\def\xpgit@@next##1{\slash}%
\else
\ifx\xpgit@temp”%
\def\xpgit@@next##1{“}%
\fi
\fi
\fi
\fi
\fi
\fi
\xpgit@@next}`
Certamente va impostato anche il valore di \@clubpenalty, perché è questo che LaTeX va a vedere dopo che, in certe situazioni, ha modificato quello di \clubpenalty.Riguardo il meccanismo di Polyglossia per ricordare i valori e integro.
Ciao
Enrico
-
20 Marzo 2011 alle 15:45 #57269::
Versione “definitiva” di gloss-italian.ldf:
`\ProvidesFile{gloss-italian.ldf}[polyglossia: module for italian – unofficial test version]
\makeatletter
\PolyglossiaSetup{italian}{
hyphennames={italian},
hyphenmins={2,2},
frenchspacing=true,
indentfirst=true,
fontsetup=true,
}%%% CHANGES START %%%
\define@boolkey{italian}[italian@]{babelshorthands}[true]{}\ifsystem@babelshorthands
\setkeys{italian}{babelshorthands=true}
\else
\setkeys{italian}{babelshorthands=false}
\fi\ifcsundef{initiate@active@char}{%
\input{babelsh.def}%
\initiate@active@char{“}%
}{}\def\italian@shorthands{%
\bbl@activate{“}%
\def\language@group{italian}%
\declare@shorthand{italian}{“}{%
\relax\ifmmode
\def\xpgit@next{''}%
\else
\def\xpgit@next{\futurelet\xpgit@temp\xpgit@cwm}%
\fi
\xpgit@next}%
}\def\xpgit@@cwm{\nobreak\discretionary{-}{}{}\nobreak\hskip\z@skip}
\def\xpgit@cwm{\let\xpgit@@next\relax
\ifcat\noexpand\xpgit@temp a%
\def\xpgit@@next{\xpgit@@cwm}%
\else
\if\noexpand\xpgit@temp \string|%
\def\xpgit@@next##1{\xpgit@@cwm}%
\else
\if\noexpand\xpgit@temp \string<% \def\xpgit@@next##1{«\ignorespaces}% \else \if\noexpand\xpgit@temp \string>%
\def\xpgit@@next##1{\unskip»}%
\else
\if\noexpand\xpgit@temp\string/%
\def\xpgit@@next##1{\slash}%
\else
\ifx\xpgit@temp”%
\def\xpgit@@next##1{“}%
\fi
\fi
\fi
\fi
\fi
\fi
\xpgit@@next}\def\noitalian@shorthands{%
\@ifundefined{initiate@active@char}{}{\bbl@deactivate{“}}%
}
%%% CHANGES END %%%\def\captionsitalian{%
\def\prefacename{Prefazione}%
\def\refname{Riferimenti bibliografici}%
\def\abstractname{Sommario}%
\def\bibname{Bibliografia}%
\def\chaptername{Capitolo}%
\def\appendixname{Appendice}%
\def\contentsname{Indice}%
\def\listfigurename{Elenco delle figure}%
\def\listtablename{Elenco delle tabelle}%
\def\indexname{Indice analitico}%
\def\figurename{Figura}%
\def\tablename{Tabella}%
\def\partname{Parte}%
\def\enclname{Allegati}%
\def\ccname{e~p.~c.}%
\def\headtoname{Per}%
\def\pagename{Pag.}% % in Italian the abbreviation is preferred
\def\seename{vedi}%
\def\alsoname{vedi anche}%
\def\proofname{Dimostrazione}%
\def\glossaryname{Glossario}%
}
\def\dateitalian{%
\def\today{\number\day~\ifcase\month\or
gennaio\or febbraio\or marzo\or aprile\or maggio\or giugno\or
luglio\or agosto\or settembre\or ottobre\or novembre\or
dicembre\fi\space \number\year}}%%% CHANGES START %%%
\AtEndPreamble{ % the user or the class might define different values
\edef\xpgit@savedvalues{%
\clubpenalty=\the\clubpenalty\space
\@clubpenalty=\the\@clubpenalty\space
\widowpenalty=\the\widowpenalty\space
\finalhyphendemerits=\the\finalhyphendemerits}
}\def\noextras@italian{%
\lccode\string”2019=\z@
\noitalian@shorthands
\xpgit@savedvalues}\def\blockextras@italian{%
\lccode\string”2019=\string”2019
\clubpenalty=3000 \@clubpenalty=3000 \widowpenalty=3000
\finalhyphendemerits=50000000
\ifitalian@babelshorthands\italian@shorthands\fi
}\def\inlineextras@italian{%
\lccode\string”2019=\string”2019
\ifitalian@babelshorthands\italian@shorthands\fi
}
%%% CHANGES END %%%
\endinput`
Naturalmente è possibile evitare “indentfirst” con
`\PolyglossiaSetup{italian}{intentfirst=false}`
subito dopo aver definito la lingua con \setmainlanguage o \setotherlanguage. A qualcuno magari non va, a qualcun altro forse sì. 🙂Ciao
Enrico
-
20 Marzo 2011 alle 16:57 #57270
-
22 Marzo 2011 alle 0:13 #57271::
I test che ho fatto sono ambivalenti:Con un semplice file di prova come:
`
\documentclass{book}
\usepackage{polyglossia}
\setmainlanguage[babelshorthands]{italian}\begin{document}
“< Ciao, mondo! ">
\end{document}
`XeLaTeX produce il risultato perfetto, come ci si aspetta e senza spazi spuri fra i caporali e il testo che racchiudono.
Se invece uso questo file gloss-italian.ldf mettendolo nella stessa cartella dove compilo la Guida con Xelatex e avendo già corretto tutti i file sia per l’encoding sia per i file di macro personali (il tutto mi produce correttamente l’intera guida se uso il file ldf di sistema, tranne alcuni piccoli dettagli che erano legati alla gestione dei font con pdflatex e che non ho ancora corretto, ma che non bloccano la composizione) mi appare un errore che sembra legato al comando \AtEndPreamble, cisto che esce:
`
ABD: EveryShipout initializing macros
! Missing number, treated as zero.
\relax
l.309 \begin{document}?
`Se premo Q e “Enter”, la compilazione procede e il tutto sembra essere composto correttamente con i doppi apici correttamente funzionanti.
Ho trovato! c’è un conflitto con la “virgola intelligente” che è definita carattere matematico attivo usando il codice esadecimale “8000; è una questione di tempi: questo codice viene usato \AtBeginDocument quando ormai, evidentemente, il doppio apice è stato definito attivo. So come orientarmi per correggere la virgola intelligente…
Ti farò sapere; ora per me è tardi e non connetto più bene, forse per te è inizio della serata…
Grazie ancora
Claudio
-
-
AutoreRisposte
- Devi essere connesso per rispondere a questo topic.