Я пытаюсь написать документ со списком абзацев, которые имеют вводную подпись, отображаемую слева от первой строки каждого абзаца, так что подписи отображаются как левая колонка, а абзацы как правая колонка. Все это отображается в стандартной статье с одной колонкой.
Я придумал использовать таблицу. У меня есть:
\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}
}