Окружение 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}