我怀疑我可以用更好的方式做这些事情,所以我希望大家能给我一些指导,让我做得更好。基于给出的例子这里,我创建了一个对话环境,以便可以模拟两个人之间对话的部分内容,这在大多数情况下都行得通。但是,我需要将对话限制在现有页边距内(因此 \leftmargin=*
),并且理想情况下,在所有实例中均匀缩进响应的整个部分(而不是人)。我怀疑我当前的实现导致了我的一些问题,但我不确定如何最好地将其转换为标准\begin{enumerate} ... \end{enumerate}
类型的环境。
以下是 MWE:
\documentclass{article}
\usepackage{enumitem}
\usepackage{xcolor}
\usepackage{lipsum}
\DeclareDocumentCommand\dia{ o m }{%
\begin{enumerate}[%
,label=\IfNoValueTF {#1} {}{#1:}
,labelsep=8mm
,nosep % optional
,font=\color{black}
,leftmargin=*
,listparindent=0pt
%,labelindent=0.5in
]
\item #2
\end{enumerate}%
}
\begin{document}
\dia[Name \#1]{\quad\lipsum[1-1]}
\dia{\quad\lipsum[4-4]}
\dia[Much Longer Name \#2]{\quad\lipsum[2-2]}
\dia{\quad \lipsum[3-3]}
\end{document}
输出如下所示:
我希望所有响应都基于最长的行标识符进行对齐,本质上是一种两列格式?我有点不知道该怎么做,非常感谢您能提供的任何帮助。这似乎只能在 XeLaTeX 上编译无错误(我非常致力于此),但我不确定为什么会这样。
編輯:
为了更清楚地说明我想要什么,这是我想要实现的目标的 Word 模型:
编辑#2:
根据用户的建议,我尝试将其处理为表格环境,但许多段落超出了标准页面的长度,溢出到页脚甚至更远。虽然原则上可以手动将 \parfillskip=0pt 和 \ 添加到这些段落中,但我强烈希望保留预期的引用格式,因为这些是直接从其他文本中引用的,我不希望引入错误的(通常是无意义的)新行。我愿意继续使用表格环境或其他选项,但似乎需要对这些分页符进行一些枚举修改。
编辑#3:根据此处提供的信息,我设法通过手动将标签的宽度设置为最长标签的宽度来解决我的问题,然后所有内容都正确对齐。Enumitem:右对齐标签。我认为如果有一种方法可以创建一个自定义环境来动态地找到最宽的标签(有点像 eqlist 包),这仍然会很有趣,但目前我对我自己的解决方案感到满意。
答案1
关于什么desclist
?
\documentclass[]{article}
\usepackage{desclist}
\newcounter{dianum}
\setcounter{dianum}{-1}
\usepackage{lipsum}
\begin{document}
\begin{desclist}{\sffamily}{\ \addtocounter{dianum}{1}(\arabic{dianum}):}[maxlabelwidth......]\itemsep2em\itemindent0em\parindent1em
\item[Peter] \lipsum[1][1-5] \par \lipsum[2][1-5]
\item[Bartholomew] \lipsum[3][1-5] \par \lipsum[4][1-5]
\item[Peter] \lipsum[5][1-5] \par \lipsum[2][1-9]
\item[Bartholomew] \lipsum[7-9]
\item[Bartholomew] \lipsum[10-11]
\end{desclist}
\end{document}