2010-03-31 25 views
11

Dlaczego poniższe polecenie nie generuje poziomej reguły wypełniającej przestrzeń do końca linii?LaTeX rule napełnia linię

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

To jest moje zrozumienie, że powinno to wydrukować tekst „Hello”, po której reguły poziomej, która rozciąga się aż do końca linii, analogicznie do makro \hfill która skutecznie równoważne \hspace\fill. - Ale w efekcie, to polecenie po prostu tworzy tekst "Hello", bez reguły.

Zdaję sobie sprawę, że efekt może być wytwarzany przez \hrulefill ale to nie może być używany tutaj, ponieważ chcę podniesiony\hrulefill regułę i nie współpracować z \raisebox i chcę mój przepis powiesić powyżej linię podstawową (najlepiej w środku linii).

Odpowiedz

11

Nie mam satysfakcjonującej odpowiedzi na pytanie, dlaczego przedstawione polecenie nie działa, ale mogę zaoferować skuteczne obejście tego problemu. Umieścić

% 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} 

przedmowie do swojego dokumentu, a następnie można osiągnąć to, czego ufaliśmy z:

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

Niestety, nie rozumiem, jak to działa, ponieważ '\ hfill' jest * poza * Opcja' \ hbox' ale działa jak urok, dzięki. –

+4

Ta część mogę wyjaśnić. Liderzy są ogólnym przypadkiem kleju w TeX; zwykle klej wypełnia przestrzeń bez niczego. Ale liderzy wypełniają przestrzeń cokolwiek chcesz. Ogólną formą tego jest '\ leaders {box lub rule} \ hskip {glue}' Ponieważ '\ hfill' jest specjalnym rodzajem nieskończenie rozciągliwego kleju, polecenie lidera ma dwie rzeczy, których potrzebuje: element do powtórzenia i klej, aby powiedzieć, jak daleko przedłużyć powtórzenie. – RTBarnard

+0

Z pewnym kodem z http://tex.stackexchange.com/a/17130/13450 to działa również otoczyć tekst po obu stronach: '\ {\ raisedrule nowakomenda} [2] [0em] \ {\ leavevmode liderów \ hbox {\ rule [# 1] {1pt} {# 2}} \ hfill \ kern0pt} '. – Christian

6

w poziomie rządów wysokości 1pkt i podniesiony przez 1.5pt.

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