Re: Greco, microtype e XeLaTeX

#57264
Up
0
Down
::

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

Prova 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

Go to top