Как сделать текст *заполняющим* строку (с помощью новой команды)?

Как сделать текст *заполняющим* строку (с помощью новой команды)?

Я хочу реализовать коды, подобные приведенным ниже:

\mbox{}I\hfill like\hfill the\hfill world\hfill because\hfill it\hfill is\hfill beautiful\mbox{}

так что я могу получить первую линию вместо второй на картинке.

Но это неудобно из-за слишком большого количества \hfill. Как мне создать новую команду для этого?

решение1

Попробуйте это (в отдельном абзаце):

\noindent\makebox[\linewidth][s]{I like the world because it is beautiful}

Объяснение: второй необязательный аргумент — для выравнивания внутри рамки. s— для stretch.

Редактировать: как предложил @egreg, мы можем упростить набор текста с помощью макроса и добавить код, чтобы избежать bad boxсообщений. Демонстрация:

\newcommand\linefillwith[1]{\par\noindent\makebox[\linewidth][s]{\spaceskip=\fontdimen2\font plus 1fil minus \fontdimen4\font #1}}
\lipsum[11]\medskip 
\linefillwith{\color{red}I like the world because it is beautiful}

введите описание изображения здесь

Связанный контент