2010-03-31 4 views
11

Почему следующая команда не создает горизонтальное правило, заполняющее пробел до конца строки?LaTeX rule, заполняющий строку

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

Это мое понимание того, что это должно напечатать текст «Hello» с последующим горизонтальным правилом, что не проходит до конца строки, аналогично макросъемки \hfill которое эффективно эквивалентно \hspace\fill. - Но на самом деле эта команда только что создает текст «Hello», нет правила.

Я знаю, что эффект может быть получен \hrulefill, но он не может быть использован здесь, потому что я хочу поднял правило и \hrulefill не работает вместе с \raisebox и я хочу, чтобы мое правило повесить выше базовый уровень (в лучшем случае в середине линии).

ответ

11

У меня нет удовлетворительного ответа, почему команда, которую вы представили, не работает, но я могу предложить эффективное обходное решение. Помещенный

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

в предисловии вашего документа, а затем вы можете сделать то, что вы надеялись с:

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

К сожалению, я не понимаю, как это работает, так как '\ hfill' есть * вне *' \ hbox', но это работает спасибо, спасибо. –

+4

Эта часть я могу объяснить. Лидерами являются общий клей в TeX; Обычно клей заполняет пространство ничем. Но лидеры заполняют пространство тем, что вы хотите. Общей формой этого является '\ leader {box или rule} \ hskip {glue}'. Поскольку '\ hfill' - это особый тип бесконечно растяжимого клея, команда лидеров имеет две вещи, в которых он нуждается: элемент для повторения и клей, чтобы сказать, как далеко продлить повторение. – RTBarnard

+0

С помощью некоторого кода из http://tex.stackexchange.com/a/17130/13450 это также работает, чтобы окружать текст с обеих сторон: '\ newcommand {\ raiserule} [2] [0em] {\ leavevmode \ leader \ hbox {\ правило [# 1] {1pt} {# 2}} \ hfill \ kern0pt} '. – Christian

6

Горизонтальное правило 1PT высоты и поднятый 1.5pt.

Hello \leaders\vrule height 2.5pt depth -1.5pt \hfill \null 
Смежные вопросы