Newsgroup: it.comp.software.tex
Titolo: Il font charter

Io uso Linux + distribuzione teTeX.
Trovo il font charter (\usepackage{charter}) molto carino, ma mi da` un 
piccolo problema: l'apostrofo dopo la `L' maiuscola viene messa troppo a
sinistra, ovvero "sopra" la `L' e non subito dopo, con la conseguenza
che la parola successiva viene troppo attaccata (per inciso digitando
"L'apostrofo" ottengo qualcosa che somiglia a "Lapostrofo", dove la `a'
addirittura e` sovrapposta alla `L'). 
Come posso risolvere il problema? (a parte continure ad usare CMR
forever :-)
-- 
Alessandro Colantonio
http://web.tiscalinet.it/cocciasik
http://www.cocciasik.org

 wrote


 
Sinceramente non so se si tratti veramente di un "errore". In effetti,
il fatto che la `L' permetta ad altre lettere "sporgenti" di sovrapporsi
crea degli effetti gradevoli; ad esempio combinazioni come "LT" o "LV"
(secondo me) appaiono meglio di CMR (dove invece non c'e` nessuna
sovrapposizione delle lettere).
Ho pensato alle varie situazioni possibili, ho fatto un po' di prove e,
a quanto pare, il problema (nella lingua italiana) susiste solo con la
combinazione << L' >>; in particolare quello che avviene e` qualcosa del
genere (leggere l'e-mail con font a spaziatura fissa!)
   ****  **
    **   **   ***
    **    *     **
    **   *    ****
    **       ** **
    **     * ** **
   *********  *****    (L'a)
dove l'apostrofo e` ad una distanza "buona" dall'asta verticale della
`L' ma comunque sovrapposta all'intera lettera, e la `a' e` ad una
distanza giusta dall'apostrofo; in CMR, invece, l'apostrofo e` dopo la
lettera L:
   ****       **
    **        **   ***
    **         *     **
    **        *    ****
    **            ** **
    **     *      ** **
   *********       *****    (L'a)
Allora ho pensato di trattare questo caso particolare come ... caso
particolare! Ho provato un codice del genere: (wow, per la prima volta
"smanetto" con macro TeX un po' piu` avanzate!)
  \catcode`\'=\active
  \gdef'{\ifmmode{\sp\prime}\else\null\char`\'\fi}
che va ancora rifinito perche', in un contesto del tipo $P''_1$, viene
espanso in $P{\sp\prime}{\sp\prime}_1$, che ovviamente e` errato.
(dovrebbe essere $P\sp{\prime\prime}_1$)
Ho provato con \catcode`\L=\active, ma mi da` problemi con la riga
\NeedsTeXFormat{LaTeX2e} dei pacchetti.
Prima che perda altro tempo per riadattare la definizione di <<'>> del
plain.tex, che ne pensate della mia soluzione? 


 
Non ho potuto farne a meno... ho "rifinito" il codice! Spero tanto che
si "fatto bene"; l'ho provato mettendolo in fondo al mio file di stile
(per evitare il piu` possibile i conflitti con i pacchetti vari) e a
quanto pare funziona. *Criticate gente, criticate!* ;)
  \catcode`\'=\active
  \mathcode`\'="8000
  \gdef'{%
    %% comandi alternativi per { e ^, così li posso disabilitare
    \let\inizio@apice=\bgroup
    \def\@apice{^}%
    \ifmmode\else
    %% siamo in modo testo: stampo apostrofo preceduto da scatola vuota
    \null\char`\'
    %% evito l'esecuzione dei comandi dopo \fi
    \let\inizio@apice=\relax
    \def\@apice##1##2{}%
    \fi
    %% se sono in modo matematico, eseguo i seguenti comandi
    \@apice\inizio@apice\stampa@apice}
 
  %% questo codice è simile a quello presente in ``plain.tex''; ho solo
  %% rinominato le macro (per renderle meno criptiche!)
  \def\stampa@apice{\prime\futurelet\next\controlla@prossimo}
  \def\controlla@prossimo{%
    %% caso 1: il prossimo token e` un apice allo stesso livello
    \ifx'\next\let\prossima@azione\ancora@apice\else
    %% caso 2: il prossimo token e` un elevamento a potenza
    \ifx^\next\let\prossima@azione\elevamento@potenza\else
    %% caso 3: qualsiasi altra cosa => fine
    \let\prossima@azione\egroup\fi\fi
    %% prossima azione!
    \prossima@azione}
  \def\ancora@apice#1{\stampa@apice}
  \def\elevamento@potenza#1#2{#2\egroup}
