我使用enumitem
描述样式nextline
来模拟目录条目,代码如下:
\documentclass{article}
\usepackage{enumitem}
\newenvironment{DLdescription}[1][*]{%
\newcommand{\DLitem}[2][]{%
\item[##1\hfill\emph{##2}]
}
\begin{description}[style=nextline,leftmargin=#1]%
}{\end{description}}
\begin{document}
\begin{DLdescription}
\DLitem[dleft1]{dright1}
blah blah
\begin{itemize}
\item nested item correctly starts on its own line
\end{itemize}
\DLitem[dleft2]{dright2}
% nothing before itemize
\begin{itemize}
\item nested item shouldn't start on description label's line!
\end{itemize}
\end{DLdescription}
\end{document}
麻烦在于第二描述项以 : 开头itemize
,嵌套项出现在同一行 :-(
在其他地方找到的解决方法建议将 a 附加\hfill
到相关标签,在我的情况下,这将DLitem
使用以下方法修补命令
\item[##1\hfill\emph{##2}]\hfill
但结果并不令人满意,因为在描述标签的行和第一个嵌套项之间添加了太多的垂直空间:
如何在没有任何额外垂直空间的情况下获得第二幅图像中的结果?
答案1
我认为你滥用了这种nextline
风格。我建议你这样做:
\documentclass{article}
\usepackage{enumitem}
\newcommand{\DLitem}[2][]{%
\item[#1]\hfill \emph{#2}\par}
\newenvironment{DLdescription}[1][*]
{\begin{description}[leftmargin=#1]}
{\end{description}}
\begin{document}
\begin{DLdescription}
\DLitem[dleft1]{dright1}
blah blah
\begin{itemize}
\item nested item correctly starts on its own line
\end{itemize}
\DLitem[dleft2]{dright2}
% nothing before itemize
\begin{itemize}
\item nested item shouldn't start on description label's line!
\end{itemize}
\end{DLdescription}
\end{document}
\parskip
如果您希望第一行后的空间较少,您可以进行局部调整。
答案2
以下是有效的手动调整方法:
\documentclass{article}
\usepackage{enumitem}% http://ctan.org/pkg/enumitem
\newcommand{\DLitem}[2][]{%
\item[#1\hfill\emph{#2}]
}
\newenvironment{DLdescription}[1][*]{%
\begin{description}[style=nextline,leftmargin=#1]%
}{\end{description}}
\begin{document}
\begin{DLdescription}
\DLitem[dleft1]{dright1}
blah blah
\begin{itemize}
\item nested item correctly starts on its own line
\end{itemize}
\DLitem[dleft2]{dright2}
\hfill\\[\dimexpr-2\baselineskip-\topsep]
\begin{itemize}
\item nested item shouldn't start on description label's line!
\end{itemize}
\end{DLdescription}
\end{document}
插入一个空白行\null\hfill
,然后垂直跳过,相当于描述的开始加一个额外的\baselineskip
:\\[\dimexpr-2\baselineskip-\topsep]