Лестнично-мультилиния

Лестнично-мультилиния

Окружение multlineвыравнивает первую строку по левому краю, последнюю — по правому краю, а все строки между ними просто центрируются. Иногда результат выглядит неудовлетворительным, например, когда все строки чуть шире половины ширины текста.

Стандартный многострочный

Мне нужен инструмент, который сделает его более «похожим на лестницу», как на рисунке ниже, но без ручного добавления элементов \hspace{...}в каждую линию.

Скорректированная многострочная

Я знаю, что есть всевозможные исключения, такие как слишком широкие линии и т. д., и я не ожидаю, что решение всегда будет давать идеальный результат, но должно быть что-то, что работает в «общем» случае. Есть идеи?

решение1

Вы можете задать каждую строку в макросе, который распределит их «вручную», используя что-то вроде \setline[<align>]{<portion>}{<stuff>}того, что определено ниже:

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

\documentclass{article}

\usepackage{lipsum}

\newcommand{\setline}[3][c]{\hspace*{#2\linewidth}\makebox[0pt][#1]{#3}}
\newenvironment{spreadlines}
  {\par
   \setlength{\parindent}{0pt}%
   \obeylines}
  {\par}

\begin{document}

\lipsum[1]

\begin{spreadlines}
  \setline[l]{0}  {The first line is aligned to the left.}
  \setline   {.25}{The second line is (not) centred.}
  \setline   {.5} {And so is the third one.}
  \setline   {.75}{As well as the fourth --- not centred!}
  \setline[r]{1}  {The last line is aligned to the right.}
\end{spreadlines}

\lipsum[2]

\end{document}

Вероятно, при необходимости можно будет определить значение {<portion>}автоматически.

решение2

Пакет mathtoolsпредоставляет опцию \shoveleft[<ofset>]{<part of equation>}, с помощью которой вы можете легко получить лестницы, такие как multline: введите описание изображения здесь

Код основан на примере из руководства mathtools (стр. 17):

\documentclass[11pt, border=1mm,
               preview]{standalone}
    \usepackage{mathtools}

    \begin{document}
\[
\begin{multlined}
\framebox[.65\columnwidth]{First line} \\
\shoveleft[1cm]{\framebox[.5\columnwidth]{Second line} } \\
\shoveleft[2cm]{\framebox[.5\columnwidth]{Second line} } \\
\shoveleft[3cm]{\framebox[.5\columnwidth]{Second line} } \\
\framebox[.65\columnwidth]{Last line}
\end{multlined}
\]
    \end{document}

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