LaTeX \ правило заполнения строки

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

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

Насколько я понимаю, это должно напечатать текст "Hello”, За которым следует горизонтальное правило, которое продолжается до конца строки, аналогично макросу \hfill который фактически эквивалентен \hspace\fill, - Но в действительности эта команда просто выдает текст:Hello", Без правил.

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

5 ответов

Решение

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

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

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

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

Есть пакет ulem, который делает это

% !TEX encoding = UTF-8 Unicode
% !TEX TS-program = xelatex
\documentclass{article}
\usepackage[normalem]{ulem}

\begin{document}
normal text \uline{\textit{underline text}\hfill}
\end{document}

который будет производить

https://i.stack.imgur.com/6AWmB.jpg

Для вашего любопытства вариант normalem для пакета ulem предотвращает появление ulem лишнего подчеркивания с помощью \em или \emph.

Вы можете сделать это с помощью команды \ hrulefill see http://en.wikibooks.org/wiki/LaTeX/Lengths

% Я это сделал!%

      \documentclass{article}
\usepackage[normalem]{ulem}

\begin{document}
\uline{Some text \hfill\phantom{.}}
\end{document}
Другие вопросы по тегам