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