我想在文档中列出一些内容。列表中的每个要点都有一个简短的标题(一个单词,例如“Usecase”)。该单词应位于添加到此要点下的文本左侧的单独列中。文本相当长。
使用表格执行此操作不起作用,因为如果所有内容都是多页的,表格不支持此功能。我知道 longtable,但 longtable 将整个文本(右侧)放在一行中。如果我这样做\begin{longtable}{l|p{\textwidth}}
或类似的事情,它也有点糟糕。
(正如您在上面的代码片段中所看到的,我想用垂直线将该部分的“标题”/名称与文本分开)
手动调整右侧文本的大小似乎不是一个好的解决方案。无论如何,如果这个方法可行,那么一个项目的文本也不能成为多页文本。
所以,我希望我已经说清楚我的问题是什么了。关键是,我甚至不知道该用 Google 搜索什么。
答案1
看起来你对parcolumns
环境:
\documentclass{article}
\usepackage{lipsum,parcolumns}
\newcommand{\heading}[1]{\colchunk[1]{\hspace*{-\parindent}\textbf{#1}}}
\newcommand{\desc}[1]{\colchunk[2]{#1}\colplacechunks}
\begin{document}
\begin{parcolumns}[
colwidths = {1=3cm},% 2=\dimexpr\linewidth-3cm-2em\relax
rulebetween = true,
sloppy = true]{2}
\heading{Usecase}
\desc{\lipsum[1-2]}
\heading{Another type of heading}
\desc{\lipsum[1-2]}
\end{parcolumns}
\end{document}
答案2
这是另一个基于的解决方案mdframed
:
\documentclass{article}
\usepackage{enumitem}
\usepackage{lipsum}
\usepackage[framemethod=tikz]{mdframed}
\newlength{\defparindent}
\setlength{\defparindent}{\parindent}
% The leftrule environment
\newmdenv[
linecolor=black,%
topline=false,
bottomline=false,
rightline=false,
rightmargin=0pt,
skipabove=0pt,
innertopmargin=0pt,
innerrightmargin=0pt,
backgroundcolor=white]{leftrule}
% Fix top alignment
\makeatletter
\renewrobustcmd*\mdf@makebox@out[2][\linewidth]{%
\noindent\hb@xt@\z@{%
\noindent\makebox[\dimexpr #1\relax][l]{\vtop{\vskip-\ht\strutbox\vskip-\dp\strutbox\relax#2}}%
\hss}%
}%
\makeatother
\begin{document}
\lipsum[1-2]
\begin{description}[style=multiline,leftmargin=2cm,font=\normalfont]
\item[Usecase:]
\begin{leftrule}
\lipsum[9-11]
\end{leftrule}
\item[Whatever:]
\begin{leftrule}
\lipsum[3-8]
\end{leftrule}
\item[Works:]
\begin{leftrule}
\lipsum[1-2]
\end{leftrule}
\end{description}
\end{document}