web-dev-qa-db-ja.com

LaTeX \ ruleが行を埋める

次のコマンドが、行の終わりまでスペースを埋める水平方向のルールを生成しないのはなぜですか?

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

これにより、テキスト「Hello」の後に、実質的に\hfillと同等のマクロ\hspace\fillと同様に、行の終わりまで延びる水平方向のルールが出力されるはずです。 –ただし、実際には、このコマンドは「Hello」というテキストを生成するだけで、ルールはありません。

効果は\hrulefillによって生成されることは承知していますが、raisedルールが必要であり、\hrulefill\raiseboxと連携せず、ルールをハングさせたいため、ここでは使用できません- ベースライン(せいぜい行の真ん中)。

13
Konrad Rudolph

提示したコマンドが機能しない理由について満足のいく答えはありませんが、効果的な回避策を提供できます。プット

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

高さ1パイント、1.5パイント上げた水平方向のルール。

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

これを行う lem というパッケージがあります

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

生成されます

underline

好奇心のために、パッケージulemのオプションnormalemは、ulemが\emまたは\emphで余分な下線を生成するのを防ぎます。

0
zyy