Несколько колонок: выравнивание по левому краю и заполнение неиспользуемого пространства слева. (Нечетные страницы.)

Несколько колонок: выравнивание по левому краю и заполнение неиспользуемого пространства слева. (Нечетные страницы.)

Уважаемое сообщество, у меня двухколоночный макет документа, и я знаю, что обычно я могу выбирать между

  1. выравнивание текста по левому краю, которое заполняет неиспользуемое пространство справа, и
  2. выравнивание текста по правому краю, которое заполняет неиспользуемое пространство справа.

Как сделать так, чтобы текст был выровнен по левому краю, но при этом весь текстовый блок был смещен как можно правее в столбце в соответствии с самой длинной строкой, тем самым заполняя неиспользуемое пространство слева?

Решение должно затрагивать целые столбцы на нечетных страницах (должно определяться централизованно), и я заранее не знаю ширину текста, она может быть разной для каждого столбца.

Большое спасибо за ваш вклад.

Требуемое поведение на нечетной странице

решение1

Нажмите на изображение, чтобы увидеть его в лучшем разрешении.

Редактирование 1: Добавлена ​​проверка четных/нечетных страниц

\documentclass{article}
\usepackage[showframe]{geometry}
\usepackage{lipsum}
\usepackage{array}
\usepackage{varwidth}
\usepackage{changepage}
\strictpagecheck
\def\maxwidth{13cm}
\newcolumntype{M}{>{\begin{varwidth}{\maxwidth}}l<{\end{varwidth}}}
\newenvironment{myenvi}
    {%
        \checkoddpage
        \ifoddpage
            \hfill\begin{tabular}{@{}M@{}}
        \fi
    }
    {%
        \checkoddpage
        \ifoddpage
            \end{tabular}\hspace{-3.5pt}
        \fi
    }

\setlength{\parskip}{1ex}
\begin{document}
\lipsum[1]

\begin{myenvi}
Oh, this is what I want!

I really want some lines like this

And this line is a bit too long, so it will be broken to some lines blah blah. And this line is a bit too long, so it will be broken to some lines. And this line is a bit too long, so it will be broken to some lines. And this line is a bit too long, so it will be broken to some lines.
\end{myenvi}

And some more normal lines

\begin{myenvi}
This is a short text for testing whose total width is clearly less than 10cm.

And this is an even shorter text.
\end{myenvi}

\lipsum[2-6]

\begin{myenvi}
This is the environment for check in an even page. It should be like normal text.

Yes, this is normal text!
\end{myenvi}

\lipsum[7]
\end{document}

Страница 1 (нечетная):

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

Страница 2 (четная):

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

Оригинальный ответ

Определите новый tabularтип столбца и используйте\hfill

\documentclass{article}
\usepackage{lipsum}
\usepackage{array}
\usepackage{varwidth}
\newcolumntype{M}{>{\begin{varwidth}{10cm}}l<{\end{varwidth}}}

\setlength{\parskip}{1ex}
\begin{document}
\lipsum[1]

\hfill\begin{tabular}{@{}M@{}}
Oh, this is what I want!

I really want some lines like this

And this line is a bit too long, so it will be broken to some lines blah blah. And this line is a bit too long, so it will be broken to some lines. And this line is a bit too long, so it will be broken to some lines. And this line is a bit too long, so it will be broken to some lines.
\end{tabular}

\lipsum[2]
\end{document}

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

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