Newsgroup: it.comp.software.tex
Titolo: Sillabazione ITA in TeX (non LaTeX) con MiKTeX

Mi hanno indicato un metodo molto interessante per inserire la 
sillabazione italiana in un documento TeX (non LaTeX).
Poiché in passato avevo cercato su internet la procedura ma trovando 
solo quella per LaTeX riporto quanto ho fatto nella speranza possa 
essere utile anche ad altri.
La procedura è valida per qualsiasi distribuzione TeX. Nel seguito 
riporto la procedura dettagliata per MiKTeX di cui ho personalmente 
testato il funzionamento.
------------------------------------------------------
1) Creare un file .tex con il seguente contenuto (copiare e incollare 
dove indicato il contenuto del file 
C:\texmf\tex\generic\hyphen\hyphen.tex) e chiamarlo hyphen.tex
Attenzione a non confondere il NUOVO hyphen.tex con il VECCHIO 
hyphen.tex (contenuto in C:\texmf\tex\generic\hyphen\hyphen.tex) che 
copieremo integralmente nel nuovo hyphen.tex.
-------------------
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% HyMaster.tex  A simple recipe for compilation of            %
%%% Plain TeX for more than one European language.              %
%%% Set up for American English and Italian, but readily        %
%%% adaptable to other combinations.                            %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% NOT TO BE COMPILED AS IS; SEE INSTRUCTIONS AFTER \endinput  %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% Modified by e.g.and m.f.                                    %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%
\newlanguage\USEnglishHyphenation
\language=\USEnglishHyphenation
%\input ehyphen.tex % US English hyphenation table
%%%
Copiare e incollare qui tutto il contenuto del file 
C:\texmf\tex\generic\hyphen\hyphen.tex
\newlanguage\ItalianHyphenation
\language=\ItalianHyphenation
\input ithyph.tex%
%%%
%%% Use ISO nationality codes: FR, IT, US, ...
\def\IT{\language=\ItalianHyphenation \lccode`\'=`\'
   \lefthyphenmin=2 \righthyphenmin=2}
   % Apostrophe is a letter in Italian and we permit
   % xx- and -xx hyphenations.
%%%
\def\US{\language=\USEnglishHyphenation \lccode`\'=0
   \lefthyphenmin=2 \righthyphenmin=3}
   % Apostrophe is not a letter in English and we permit
   % xx- and -xxx hyphenations.
%%%
% We have also the possibility to not hyphenate words at all;
% this is useful if we have words in languages which are not
% defined; all we need is to select \language0.
\def\nohyphens{\language=0 \lccode`\'=0}
%%%
% Now we establish the default language
\US % english is used by default
%%%
% Here equivalents for language names can be set:
% for example
\let\italian\IT
\let\italiano\IT
\let\inglese\US
\let\english\US
%%%
\endinput
-------------------
2) Aprire la cartella C:\texmf\tex\generic\hyphen e rinominare il file 
hyphen.tex in ehyphen.tex
3) Copiare il nuovo file hyphen.tex creato secondo le istruzioni al 
punto al punto 1) nella cartella C:\texmf\tex\generic\hyphen.
4) Aprire Start - Tutti programmi - MiKTeX Options. Selezionare il tab 
TeX Formats, selezionare la riga tex, premere il pulsante Build, premere OK.
Ora la lingua di sillabazione di default per il TeX sarà sempre 
l'inglese ma basterà includere il comando \IT nei documenti TeX per 
avere la sillabazione italiana.
------------------------------------------------------
Ecco un esempio di documento con la sillabazione italiana:
-------------------
\magnification=\magstep1
\font\tensym=msbm10
\font\sevensym=msbm7
\font\fivesym=msbm5
\newfam\symfam
\textfont\symfam=\tensym \scriptfont\symfam=\sevensym
\scriptscriptfont\symfam=\fivesym
\def\sym{\fam\symfam}
\def\p{\phantom 3}
\def\q{\phantom -}
\font\grande=cmr10 scaled \magstep1
\font\grasso=cmbx10 scaled \magstep1
\font\grassso=cmbx10 scaled \magstep4
\nopagenumbers
\IT
\showhyphens {dell'aria dell'apostrofo}
\noindent Dell'aria dell'aria
dell'aria dell'aria dell'aria dell'apostrofo dell'apostrofo
dell'aria dell'apostrofo dell'aria dell'aria dell'aria dell'aria
dell'aria dell'aria dell'aria dell'aria.
\bigskip \bigskip
\centerline {{\grande Corsi di studio in} {\grasso Matematica} e
{\grasso Matematica per le Applicazioni} } \centerline {{\grande
Esame scritto di} {\grasso Geometria II}} \centerline {{\grande
assegnato il 10 febbraio 2006}}
\bigskip \bigskip \bigskip \bigskip
\centerline {\grasso Esercizio 1}
\bigskip \bigskip
Sono assegnati in ${\sym R}^5$ i vettori
$$v_1=(-1,0,0,k,1),\ v_2=(0,1,0,0,1),\ v_3=(-1,2,0,0,3)$$
e il sottospazio vettoriale $V$ da essi generato, in ${\sym
A}^5({\sym R})$ i sottospazi affini
$$ {\cal S} :\  x_1=1,\ x_3-x_4+1=0,\ x_2-x_5=0,\ \ \
\pi :\  x_1-x_2+x_3-x_4+x_5-3=0 $$ e il punto $P(1,0,0,1,0).$
\par Determina dimensioni ed equazioni cartesiane di
$\ {\cal T}=(P;V),\  {\cal S}\cap {\cal T},\  {\cal S} \vee {\cal T}
$ al variare di $k\in {\sym R}$.
\par Trova, se esistono, valori reali di $k$ per i quali ${\cal S}\vee 
{\cal T} $
e $\pi$ sono paralleli.
\bigskip \bigskip
\centerline {\grasso Esercizio 2} \bigskip \bigskip  Siano $A, B, C,
D$ i punti fondamentali,  $E$ il punto unit\`a del riferimento
proiettivo standard di ${\sym P}^3({\sym R})$.
\par Determina la matrice che definisce la proiettivit\`a $f$ di ${\sym 
P}^3({\sym
R})$ tale che
$$f(A)=B,\ f(B)=C,\ f(C)=D,\ f(D)=A,\ f(E)=[1,1,1,16].$$
\par Determina i punti uniti  di $f$.
\end
-------------------
L'unica differenza con il documento senza la sillabazione italiana è 
l'aggiunta del comando \IT
In più è stato aggiunto
---
\showhyphens {dell'aria dell'apostrofo}
\noindent Dell'aria dell'aria dell'aria dell'aria dell'aria 
dell'apostrofo dell'apostrofo dell'aria dell'apostrofo dell'aria 
dell'aria dell'aria dell'aria dell'aria dell'aria dell'aria dell'aria.
---
per consentire di verificare l'effettivo funzionamento della 
sillabazione italiana.
Basta guardare l'output .dvi per rendersi conto che con il comando \IT 
il compilatore riesce ad andare a capo correttamente mentre levandolo o 
sostituendolo con \US o con %\IT c'è un problema.
Per maggiore sicurezza andiamo a guardare il file log del documento, in 
cui abbiamo chiesto di indicare la sillabazione delle parole "dell'aria 
dell'apostrofo" (che sicuramente non vengono correttamente sillabate con 
la sillabazione inglese proprio per la presenza dell'apostrofo). 
Ovviamente il log conferma che la sillabazione italiana funziona infatti:
con \IT
Underfull \hbox (badness 10000) in paragraph at lines 23--23
[][] \tenrm del-l'a-ria del-l'a-po-stro-fo
levandolo o sostituendolo con \US o con %\IT
Underfull \hbox (badness 10000) in paragraph at lines 23--23
[][] \tenrm dell'aria dell'apostrofo
------------------------------------------------------
Approfitto dell'occasione per porgervi un problema che non sono riuscito 
a risolvere.
In altre distribuzioni TeX non era necessario copiare tutto il contenuto 
del file hyphen.tex originale (cioè il dizionario per la sillabazione 
inglese) nel nuovo file hyphen.tex. Bastava infatti rinominarlo in 
ehyphen.tex e darlo in ingresso al nuovo hyphen.tex che risultava più 
semplicemente:
-------------------
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% HyMaster.tex  A simple recipe for compilation of            %
%%% Plain TeX for more than one European language.              %
%%% Set up for American English and Italian, but readily        %
%%% adaptable to other combinations.                            %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% NOT TO BE COMPILED AS IS; SEE INSTRUCTIONS AFTER \endinput  %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% Modified by e.g.and m.f.                                    %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%
\newlanguage\USEnglishHyphenation
\language=\USEnglishHyphenation
\input ehyphen.tex % US English hyphenation table
%%%
\newlanguage\ItalianHyphenation
\language=\ItalianHyphenation
\input ithyph.tex%
%%%
%%% Use ISO nationality codes: FR, IT, US, ...
\def\IT{\language=\ItalianHyphenation \lccode`\'=`\'
   \lefthyphenmin=2 \righthyphenmin=2}
   % Apostrophe is a letter in Italian and we permit
   % xx- and -xx hyphenations.
%%%
\def\US{\language=\USEnglishHyphenation \lccode`\'=0
   \lefthyphenmin=2 \righthyphenmin=3}
   % Apostrophe is not a letter in English and we permit
   % xx- and -xxx hyphenations.
%%%
% We have also the possibility to not hyphenate words at all;
% this is useful if we have words in languages which are not
% defined; all we need is to select \language0.
\def\nohyphens{\language=0 \lccode`\'=0}
%%%
% Now we establish the default language
\US % english is used by default
%%%
% Here equivalents for language names can be set:
% for example
\let\italian\IT
\let\italiano\IT
\let\inglese\US
\let\english\US
%%%
\endinput
-------------------
Purtroppo MiKTeX sembra accettare in ingresso solo file di cui già 
conosce l'esistenza come ithyphen.tex e hyphen.tex. Quindi ehyphen.tex 
non viene riconosciuto (dà un errore quando si preme Build). Fermo 
restando che la soluzione indicata sopra è perfettamente equivalente e 
funzionante, vorrei sapere come è possibile fare riconoscere il file 
ehyphen.tex ottenendo così una soluzione più elegante.
------------------------------------------------------
Sentiti ringraziamenti al Prof. Michele Frasca che mi ha guidato nella 
configurazione.

non viene riconosciuto (dà un errore quando si preme Build).
Non ho capito rigorosamente nulla di tutta la procedura, ma la soluzione di
questo specifico problema è molto semplice: metti MikTeX a conoscenza
dell'esistenza del file.
Copia il file in una directory di ...\texmf\tex (un buon candidato potrebbe
essere ...\texmf\tex\generic\hyphen) o (meglio) di ...\localtexmf (ad
esmpio ...\localtexmf\tex\generic\hyphen), ed esegui il refresh del
database dei file (da MikTeX options: refresh the filename database).
Ciao.

 configurazione.
Quanto tempo è passato! Credo di riconoscermi nelle iniziali "e.g.".
Intanto manda i miei saluti al prof. Michele Frasca.
Poi ti avviso che da tempo è disponibile il supporto di babel a plain,
che si ottiene con bplain.ini in una distribuzione teTeX o direttamente
compilando bplain.tex
Quello era un vecchissimo trucco quando non c'era babel per plain e il 
supporto di LaTeX alla matematica era scarsissimo, tanto che si doveva 
impiegare AMS-TeX per fare cose serie.
Se guardi come è scritto bplain.tex puoi imparare un sacco di cose.
Ciao
Enrico


Così ho risolto anche questo problema. Grazie!
La procedura risulta così semplificata:
1) Aprire la cartella C:\texmf\tex\generic\hyphen e rinominare il file 
hyphen.tex in ehyphen.tex
2) 1) Creare un file .tex con il seguente contenuto 
C:\texmf\tex\generic\hyphen\hyphen.tex e chiamarlo hyphen.tex

3) Copiare il nuovo file hyphen.tex creato secondo le istruzioni al 
punto al punto 2) nella cartella C:\texmf\tex\generic\hyphen.
4) Aprire Start - Tutti programmi - MiKTeX - MiKTeX Options.
Selezionare il tab General, premere il pulsante File name database - 
Refresh Now.


 Se guardi come è scritto bplain.tex puoi imparare un sacco di cose.
Sicuramente dovendo iniziare un nuovo documento oggi converrebbe usare 
LaTeX. Purtroppo ci sono molti documenti scritti negli anni passati in 
plain basandosi sul comando \IT per la sillabazione. Visto che ormai 
anche l'ultimo problema per l'inserimento del comando \IT in MikTeX è 
stato risolto (vedi mio post 21/2/2006 14:11) questa mi sembra una buona 
soluzione.
Una soluzione più elegante dovrebbe essere quella di usare il bplain 
come mi hai proposto tu.
Non essendo un esperto di TeX credo che quello che dovrei fare per usare 
il bplain è questo:
Compilare bplain, inserire l'italiano tra i dizionari e aggiornare i 
file di formato, inserire un comando (forse \input bplain ?) nel 
documento per indicare di utilizzare il bplain, inserire un comando che 
indichi a babel di usare la lingua italiana (usepackage[italian]{babel} 
funziona solo in LaTeX o va bene anche per plain?)
E corretto? Quali sono i comandi giusti?
Grazie mille, Ciao.