Newsgroup: it.comp.software.tex
Titolo: lunghezza di \hrule

Salve NG,
avrei necessità di scrivere (o forse è meglio dire disegnare) una linea
orizzontale di lunghezza pari ad una frase data.
Avevo letto su un post o su qualche manuale come fare ma ora non ricordo e
non riesco a ritrovare quella informazione.
Faccio un esempio se ho "frase di cui vogli la lunghezza" dovrei ottenere
una linea orizzontale lunga esattamente come la frase, non intendo la
sottolineatura ma una linea separata.
Qualcuno sa aiutarmi?
Grazie mille.
Ciao,
nigno

sottolineatura ma una linea separata.
Un approccio (la cui genesi può essere rintracciata nelle faq) potrebbe
essere mettere la frase (meglio, il materiale orizzontale) in una scatola
(mbox o altro), farsene dare la lunghezza e quindi fare una riga di quella
lunghezza.
Non dubito però che la cosa sia già stata affrontata e risolta al meglio in
qualche pacchetto.
Ciao.

 
Come ottengo la lunghezza del testo da una mbox?
Chiedo scusa a te a al newsgruop se la domanda è una FAQ ma attualmente
non ho il tempo di leggere molto perchè sono impegnato a scrivere la
tesi. Appena posso le rileggo in cerca di info utili!
Ciao e grazie.
nigno

tesi.
Un po' debole, comunque diamola per buona:
    2.3.10. Come faccio a trovare la larghezza di una lettera, una
            parola o una frase con TeX? E con LaTeX?
    Con TeX occorre mettere l'oggetto in una scatola e quindi
    misurarne la larghezza; ad esempio
    \setbox0=\hbox{gnu}
    \newdimen\gnat
    \gnat=\wd0
    mette nel comando di lunghezza \gnat la larghezza del testo gnu.
    In effetti, se l'oggetto nella scatola è una frase, la misura è
    approssimata, perché in modalità paragrafo[7] la colla tra parole
    adiacenti è elastica.
    In LaTeX, come Leslie c'insegna
    \newlength{\gnat}\settowidth{\gnat}{gnu} mette nel comando di
    lunghezza \gnat la larghezza del testo gnu.
(Come vedi neppure io mi ricordavo tutta la storia)
Sicché un primo, molto grezzo, tentativo potrebbe essere:
\newlength{\gnat}
\newcommand{\fraseconriga}[1]{%
\settowidth{\gnat}{#1}%
\parbox{\gnat}{%
#1\\*
\rule{\gnat}{.5pt}%
}}%
Per poi usare \fraseconriga{un frase con una riga sotto} in contesti
appropriati ad una \parbox.
Naturalmente, può essere (molto) migliorato, aggiungendo per esempio
qualcosa per cambiare la distanza fra il testo e la riga, lo spessore e il
tipo di linea, ecc. e, soprattutto, si potrebbe tentare, se possibile, di
rendere locale al comando la variabile in cui viene memorizzata la
lunghezza.
Ciao.

 
Ok, funziona io volevo solo disegnare una linea orizzontale sul
frontespizio della stessa lunghezza di "università degli studi..." per
avere una grafica migliore.
Inoltre la linea non è sotto la scritta ma a fondo pagina quindi la macro
per ora non mi occorre ma la terrò a mente per il futuro.
Grazie di nuovo.

 orizzontale di lunghezza pari ad una frase data.
Si potrebbe usare calc.
\documentclass{article}
\usepackage{calc}
\begin{document}
\rule{\widthof{La vispa Teresa avea tra l'erbetta \dots}}{1pt}\par
La vispa Teresa avea tra l'erbetta \dots
\end{document}
Guldo

per ora non mi occorre ma la terrò a mente per il futuro.
Uguale: una volta che ti sei fatto dire la larghezza con \settowidth puoi
poi usarla nel punto in cui ti serve.
Ciao.



Si ho risolto, forse dal post precedente non si capiva! scusami.
Ciao,
nigno