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}