2010-03-31 7 views
11

Pourquoi la commande suivante ne génère-t-elle pas une règle horizontale remplissant l'espace jusqu'à la fin de la ligne?LaTeX règle remplissant la ligne

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

Je crois comprendre que cela devrait imprimer le texte « Hello » suivie d'une règle horizontale qui se prolonge jusqu'à la fin de la ligne, par analogie à la \hfill macro qui est effectivement équivalent à \hspace\fill. - Mais en effet, cette commande produit juste le texte "Hello", pas de règle.

Je suis conscient que l'effet peut être produit par \hrulefill mais il ne peut pas être utilisé ici parce que je veux une règle soulevé et \hrulefill ne fonctionne pas avec \raisebox et je veux ma règle pour accrocher au-dessus la ligne de base (au mieux au milieu de la ligne).

Répondre

11

Je n'ai pas de réponse satisfaisante quant à la raison pour laquelle la commande que vous avez présentée ne fonctionne pas, mais je peux offrir une solution de contournement efficace. Mettre

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

dans la préface de votre document, et vous pouvez accomplir ce que vous espériez avec:

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

Malheureusement, je ne comprends pas comment cela fonctionne depuis le '\ hfill' est * à l'extérieur * le' \ hbox' mais il fonctionne comme un charme, merci. –

+4

Cette partie que je peux expliquer. Les leaders sont le cas général de la colle en TeX; Habituellement, la colle remplit l'espace avec rien. Mais les dirigeants remplissent l'espace avec tout ce que vous voulez. La forme générale de ceci est '\ leaders {box ou rule} \ hskip {glue}', Puisque '\ hfill' est un genre spécial de colle infiniment strechable, la commande leaders a les deux choses dont elle a besoin: un élément à répéter et colle pour dire jusqu'où étendre la répétition. – RTBarnard

+0

Avec un peu de code de http://tex.stackexchange.com/a/17130/13450 cela fonctionne également pour entourer le texte des deux côtés: '\ newcommand {\ raisedrule} [2] [0em] {\ leavevmode \ leaders \ hbox {\ rule [# 1] {1pt} {# 2}} \ hfill \ kern0pt} '. – Christian

6

La règle horizontale de la hauteur 1pt et soulevée par 1.5ex.

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