Su alcune definizioni sperimetali di fontsize

  • Creatore
    Topic
  • #118750
    Up
    0
    Down
    ::


    Ciao a tutti!

    [attachment]C:\fakepath\fontsize.zip[/attachment]
    Purtroppo non sono riuscito ad allegare il file.

    Vorrei condividere con voi alcune questioni tecniche che riguardano le definizioni contenute nei file bk*.clo, in relazione al pacchetto fontsize.
    Il pacchetto fontsize si basa su screxted e scrfontsizes e permette, tra le altre cose, di produre un file .clo per qualsiasi valore del font principale.
    Nei file scr*, quando viene generato il file .clo vengono omesse alcune lunghezze. in particolare:
    \parindent
    \headheight
    \smallskipamount,
    \medskipamount,
    \bigskipamount
    \headsep
    \topskip
    \footskip

    Nel pacchetto fontsize, attualmente, vengono già definite le seguenti
    \parindent
    \headheight

    In questa versione sperimentale vengono definite anche le altre lunghezze, in funzione del font principale (ovvero \normalsize), prendendo come riferimento il file bk11.clo.

    Qui incollo un EMC. Dopo averlo compilato verrà generato il file test14.clo.
    `
    \documentclass{article}
    \usepackage[T1]{fontenc}
    \usepackage[experimental]{fontsize}
    \usepackage{layout}

    \makeatletter
    \chardef\fsbslash=`\\
    \newcommand{\printlength}[1]{\noindent\texttt{\fsbslash#1} = \the\csname#1\endcsname\\}
    \newcommand{\printexample}[2]{%
    \changefontsize[#1]{#2}
    \noindent \section*{The \texttt{\fsbslash normalsize} is \normalsize\textbf{\csname#1\endcsname\f@size\,pt}}
    \normalsize
    \printlength{smallskipamount}
    \printlength{medskipamount}
    \printlength{bigskipamount}
    \printlength{parindent}
    \printlength{headheight}
    \printlength{headsep}
    \printlength{topskip}
    \printlength{footskip}
    }
    \makeatother

    \begin{document}
    \printexample{12}{10}
    \printexample{12.5}{10.5}
    \printexample{13}{11}
    \printexample{13.5}{11.5}
    \printexample{14}{12}
    \printexample{14.5}{12.5}
    \printexample{15}{13}
    \printexample{15.5}{13.5}
    \end{document}
    `

    Le definizioni sono le seguenti:
    `
    \setlength\parindent{\the\@tempdimb}
    \setlength\headheight{\dimexpr(\@tempdima+2.5pt)}
    \setlength\smallskipamount{\dimexpr((\@tempdima+1pt)/4) \@plus 1\p@ \@minus 1\p@}
    \setlength\medskipamount{\dimexpr((\@tempdima+1pt)/2) \@plus 2\p@ \@minus 2\p@}
    \setlength\bigskipamount{\dimexpr(\@tempdima+1pt) \@plus 4\p@ \@minus 4\p@}
    \setlength\headsep {1.80\@tempdima}
    \setlength\topskip {\@tempdima}
    \setlength\footskip{2.49\@tempdima}
    `
    \@tempdima corrisponde a \normalsize; \@tempdimb corrisponde a \baselineskip.
    Come si può vedere, tutte le lunghezze tranne la \parindent, sono in funzione di \@tempdima.
    I fattori sono stati scelti in modo che le lunghezze corrispondana a quelle definite nel file bk11.clo.

    Ecco quindi le domande:

    1) E’ corretto questo approccio?
    2) Perché il file scrfontisizes non le definisce? Forse definirle può far sorgere qualche problema?

    Ciao
    Ivan

Visualizzazione 1 filone di risposte
  • Autore
    Risposte
    • #118751
      OldClaudio
      Partecipante
        Up
        0
        Down
        ::



        @Ivan
        , hai fatto benissimo a condividere il tuo lavoro con il GuIT. E spero che alri intervengano in questo filone. Io ti dico la mia.

        Il pacchetto Koms Script contiene diverse classi e diversi file ausiliari; tutti questi moduli sono pensati per interagire, in particolare scrextend e scrfontsize possono essere usati anche fuori dell’ambito del mega pacco Koma Script, ma sono fatti per interagire con le classi di quella collezione; molto probabilmente le grandezze che tu non hai trovato definite in scrextend sono definite nelle classi e quindi scrextend si limita a gestire i font e on gli spazi che non sono propriamente legati al font specifico e al suo copro normale. In fondo, se ci pendi geometry, in campo totalmente diverso, definisce tutto quel che forma la geometria della pagina ma parte dal presupposto che \headsep, \headheight, \footskip e altre spaziature verticali esterne al singolo blocco di stampa siano definite prima di cominciare a lavorare. Anche in quel caso direi che il motivo sia sempre lo stesso: cioè che non sono strettamente legate al testo composto con un particolare font. Anche geometry quando calcola l’altezza del blocco del testo impone che sia composto da un numero intero di righe in corpo normale, ma se in una pagina scrivi tutto in corpo large, ricevi un messaggio di overful o underful vbox.
        Tu, invece hai fatto bene a modificare le altezze e le distanze in funzione del corpo normale, e se un utente usa il tuo pacchetto per un suo documento e lo carichi prima di geometry ottieni che anche il disegno della pagina sia configurata con tutto quello che occorre per impostare bene l’intero documento.

        Il mio parere personale è che hai fatto il tutto molto meglio di Markus Kohm (di cui Ko-Ma forma un acronimo per qualificare lo “script), anche se hai preso come modello i suoi pacchetti.

      • #118752
        Up
        0
        Down
        ::


        Grazie Claudio, il tuo parere mi conforta. Allora faccio qualche test per verificare le nuove definizioni e poi aggiorno il pacchetto.

        Ciao
        Ivan

        P.S.
        Più che come modello, per correttezza devo dire che ho preso il suo codice pari pari. Ho solo eliminato tutto ciò che lo rende dipendente dal “Koma bundle”…
        E ho aggiunto qualche definizione. Ma l’architettura del pacchetto è sua.

    Visualizzazione 1 filone di risposte
    • Devi essere connesso per rispondere a questo topic.

    Go to top