2010-03-31 12 views
11

Perché il seguente comando non produce una regola orizzontale che riempie lo spazio fino alla fine della riga?LaTeX regola che riempie la linea

Hello \rule[0.5em]{\fill}{1pt} 

È la mia comprensione che questo dovrebbe stampare il testo “Hello” seguito da una linea orizzontale che si estende fino alla fine della riga, analogamente alla macro \hfill che è effettivamente equivalente a \hspace\fill. - Ma in effetti, questo comando produce solo il testo "Hello", nessuna regola.

Sono consapevole del fatto che l'effetto può essere prodotto da \hrulefill ma non può essere utilizzato qui perché voglio un sollevato regola e \hrulefill non funziona insieme con \raisebox e voglio la mia regola per appendere sopra la linea di base (nella migliore delle ipotesi nel mezzo della linea).

risposta

11

Non ho una risposta soddisfacente al motivo per cui il comando che hai presentato non funziona, ma posso offrire una soluzione efficace. Mettere

% Raised Rule Command: 
% Arg 1 (Optional) - How high to raise the rule 
% Arg 2   - Thickness of the rule 
\newcommand{\raisedrule}[2][0em]{\leaders\hbox{\rule[#1]{1pt}{#2}}\hfill} 

nella prefazione del documento, e quindi si può realizzare quello che speravano di con:

Hello \raisedrule[0.5em]{1pt} 
+0

Purtroppo, non capisco come funziona in quanto la '\ hfill' è * * al di fuori del' \ hbox' ma funziona come un incantesimo, grazie. –

+4

Quella parte che posso spiegare. I leader sono il caso generale della colla in TeX; di solito, la colla riempie lo spazio con niente. Ma i leader riempiono lo spazio con tutto ciò che vuoi. La forma generale di questo è '\ leaders {box or rule} \ hskip {glue}', Poiché '\ hfill' è un tipo speciale di colla infinitamente rigida, il comando leader ha le due cose di cui ha bisogno: un elemento da ripetere e incollare per dire fino a che punto estendere la ripetizione. – RTBarnard

+0

Con un codice da http://tex.stackexchange.com/a/17130/13450 questo funziona anche per circondare il testo su entrambi i lati: '\ newcommand {\ raisedrule} [2] [0em] {\ leavevmode \ leaders \ hbox {\ regola [# 1] {1pt} {# 2}} \ hfill \ kern0pt} '. – Christian

6

La regola orizzontale dell'altezza 1pt sollevata dal 1.5pt.

Hello \leaders\vrule height 2.5pt depth -1.5pt \hfill \null 
Problemi correlati