Как отформатировать набор абзацев с подписями слева от первой строки

Как отформатировать набор абзацев с подписями слева от первой строки

Я пытаюсь написать документ со списком абзацев, которые имеют вводную подпись, отображаемую слева от первой строки каждого абзаца, так что подписи отображаются как левая колонка, а абзацы как правая колонка. Все это отображается в стандартной статье с одной колонкой.

Я придумал использовать таблицу. У меня есть:

\begin{tabularx}{\linewidth}{l X}
First row caption & \lipsum[1]\\
Second row caption & \lipsum[2]\\
Third row caption & \lipsum[3]\\
Fourth row caption & \lipsum[4]
\end{tabularx}

Если lipsumв этом примере заменить настоящий текст абзаца, он становится довольно громоздким из-за того, что все это встроено вместе, и необходимость продолжения строк делает все это довольно беспорядочным. Я бы хотел что-то вроде этого:

\begin{captioned-text}{First row caption}
\lipsum[1]}
\end{captioned-text}
\begin{captioned-text}{Second row caption}
\lipsum[2]}
\end{captioned-text}
\begin{captioned-text}{Third row caption}
\lipsum[3]}
\end{captioned-text}
\begin{captioned-text}{Fourth row caption}
\lipsum[4]}
\end{captioned-text}

Если бы на месте был настоящий текст (возможно, несколько абзацев настоящего текста), это было бы более читабельно.

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

решение1

Ну, спасибо Петру Выдрычу, я наткнулся на него mdwlist, и он делает именно то, что мне нужно:

\usepackage{mdwlist}
\begin{basedescript}{\desclabelwidth{4cm}}
    \item[First caption] \lipsum[1]
    \lipsum[2]
    \item[Second caption] \lipsum[3]
    \item[Third caption] \lipsum[4]
 \end{basedescript}

решение2

Обычно таблицы следует использовать для сравнения ряда фактов, а не для набора списков абзацев. Вы смотрели на окружающую descriptionсреду? Это хорошо работает с более чем одним абзацем на подпись.

\begin{description}
\item[First caption] \lipsum[1]

\lipsum[2]

\item[Second caption] \lipsum[3]
\item[Third caption] \lipsum[4]
\end{description}

решение3

Следующий вариант не идеален (расстояние между captioned-textблоками, фиксированная ширина левой колонки/заголовка и разбиение на страницы внутри блоков), но обеспечивает тот интерфейс, который вам нужен:

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

\documentclass{article}
\usepackage{environ,lipsum}% http://ctan.org/pkg/{environ,lipsum}
\NewEnviron{captioned-text}[2][0.3\linewidth]{%
  \noindent%
    \begin{tabular}{@{}p{#1}p{\dimexpr\linewidth-#1-2\tabcolsep}@{}}
      #2 & \BODY
    \end{tabular}
}
\begin{document}
\begin{captioned-text}{First row caption}
\lipsum[1]
\end{captioned-text}
\begin{captioned-text}{Second row caption}
\lipsum[2]
\end{captioned-text}
\begin{captioned-text}{Third row caption}
\lipsum[3]
\end{captioned-text}
\begin{captioned-text}{Fourth row caption}
\lipsum[4]
\end{captioned-text}
\end{document}

Theenvironупаковкапредоставляет интерфейс, захватывая все содержимое captioned-textи помещая его в столбец фиксированной ширины tabular. Левый столбец имеет ширину по умолчанию 0.3\linewidth, в то время как правый столбец занимает оставшееся пространство.

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


parcolumnsтакже может быть использован для обхода недостатка предыдущего подхода и отсутствия возможности разрыва страниц:

\usepackage{environ,lipsum,parcolumns}% http://ctan.org/pkg/{environ,lipsum,parcolumns}
\NewEnviron{captioned-text}[2][0.3\linewidth]{%
  \begin{parcolumns}[colwidths={1=#1,2=\dimexpr\linewidth-#1-2em},nofirstindent]{2}
    \colchunk[1]{#2}%
    \colchunk[2]{\BODY}%
  \end{parcolumns}
}

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