Re: Spaziatura delle righe

#76509
OldClaudio
Partecipante
    Up
    0
    Down
    ::


    Ho provato a compilare il tuo esempio, ma siccome non è un esempio minimo compilabile, ho dovuto arrangiarmi un po’ nel crearne uno dove fossero presenti solo i pacchetti necessari.

    Il punto è la la definizione del \overarc da me va in loop infinito; da te evidentemente non entra in questa ricorsione senza terminazione.

    Vorrei capire bene; da te la riga con overarc ha il segno dell’arco che si sovrappone in parte ai caratteri della riga precedente/ oppure la presenza del segno dell’arco spazia di più del normale le righe adiacenti?

    Io mi sono risolto il problema con la seguente macro, ansi con il file minimo compilabile seguente, ma questo non sovrappone il segno dell’arco ai caratteri della riga precedente ma spazia le righe quanto basta per evitare sovrapposizioni:`% !TEX TS-program = pdflatex
    % !TEX encoding = UTF-8 Unicode
    \documentclass[10pt,a4paper]{book}
    \usepackage[utf8]{inputenc}
    \usepackage{graphicx}
    \usepackage{amsmath,amssymb}

    \makeatletter
    \newcommand*\overarc[1]{{%
    \setbox254\hbox{$#1$}%
    \dimen@=\wd254\relax
    \setbox254\hbox{(} %)
    \dimen\tw@=\ht254\advance\dimen\tw@\dp254\relax
    \edef\@tempA{\expandafter\strip@pt\dimexpr\dimen@*\p@/\dimen\tw@}
    \setbox254\hbox{\scalebox{\@tempA}[1]{\rotatebox{-90}{$(\mkern-1mu$}}} %)
    \vbox{\ialign{##\crcr
    \box254\crcr
    $\hfil\displaystyle #1\hfil$\crcr}}}}

    \usepackage{lipsum}

    \begin{document}
    Calcola le aree delle regioni finite di piano delimitate dall'arco $\overarc{AB}$ di $\gamma$ e dall'arco $\overarc{ABC}$ di $\Gamma$. \lipsum[1]

    \end{document}`

    Il risultato non è sgradevole, ma certo non è perfetto.

    Spiegazione; la macro fa ricoso a \ilaign che mette qualcosa sopra qualcos’altro mantenendo la linea di base invariata rispetto a ciò che sta di sotto.
    quello che sta di sopra non è altro che una parentesi adgiata sul fianco e dialtata quanto basta per coprire l’argomento.
    Per dire quanto basta dilatare, bisogna sapere quanto è largo l’argomento delle lettere che identificano l’arco e questa larghezza viene misurata e memorizzata in \dimen@ che è un registro dimensionale interno; poi viene fatta la spessa operazione sulla parentesi, ma qui bisogna sommare l’altezza e la profondità della parentesi, conservando questa somma nel registro dimensionale identificato con \dimen\tw@. Se ne fa il rapporto con le espressioni dimensionali facenti parte da diversi anni del programma pdf(la)tex, e si usa questo numero senza l’unità di misura (tirata via con il comando interno \strip@pt) come fattore di scala orizzontale da passare a \scalebox; come fattore di scala verticale si mantiene il valore unitario. Quindi l’argomento su cui \scalebox lavora è la scatola ottenuta ruotando verso destra di 90° la parentesi tonda, conservando il risultato nel registro scatola 254. Ecco quindi che \ialign può usare per il “sotto” le due o tre lettere che costituiscono l’argomento della macro, e per “sopra” la parentesi stiracchiata solo in orizzontale di quanto basta per coprirle tutte.

    Go to top