列表环境中项目之间的可变分隔

列表环境中项目之间的可变分隔

是否可以定义一个列表环境,其中每个项目下面都有用户指定的空间量?我正在寻找类似的东西

\begin{myitemize}
    \item[1in] One
    \item[.5in] Two
    \item[2in] Three
\end{myitemize}

Some text...

在编译后的文档中,“One”和“Two”之间应该有 1 英寸的间距,“Two”和“Three”之间应该有 .5 英寸的间距,“Three”和“Some text”之间应该有 2 英寸的间距。

我迄今为止最好的尝试类似于

\documentclass{article}

\newlength{\itemspace}
\let\olditem\item

\newenvironment{myitemize}{
    \setlength{\itemspace}{0in}
    \begin{itemize}
    \renewcommand{\item}[1][0in]{
        \vspace{\itemspace}
        \olditem
        \setlength{\itemspace}{##1}}
}{
    \vspace{\itemspace}
    \end{itemize}
}


\begin{document}
 Some text
\begin{myitemize}
\item[0in] Foo\underline{\hspace{4.3in}}
\item Bar
\item Baz
\end{myitemize}
Some other text
\end{document}

问题出现在第一项中。指定 0in 后,Foo 和 Bar 之间的间距应该与 Bar 和 Baz 之间的间距相同。但是,我得到了如下结果:

图像

问题似乎是第一行的长度是确切地最大行宽。之后添加 vspace 似乎也会添加少量水平空间,迫使 TeX 在下一个项目之前开始新行。将 hspace 缩短到仅 4.2 英寸会导致多余的行消失。

编辑:对于我的问题的一个更简单的例子,

\begin{itemize}
\item Foo\underline{\hspace{4.3in}}\vspace{0in}
\item Bar
\item Baz
\end{itemize}

没有多余的线条,但是

\begin{itemize}
\item Foo\underline{\hspace{4.3in}}
\vspace{0in}
\item Bar
\item Baz
\end{itemize}

为什么会出现这种情况?

答案1

示例中的不良间距是由于您从行尾字符添加了虚假空格造成的,这只是在垂直模式下使用\par之前添加的,以避免添加空格\vspace%

\documentclass{article}

\newlength{\itemspace}
\let\olditem\item

\newenvironment{myitemize}{%
    \setlength{\itemspace}{0in}%
    \begin{itemize}%
    \renewcommand{\item}[1][0in]{%
        \par\vspace{\itemspace}%
        \olditem
        \setlength{\itemspace}{##1}}%
}{%
    \par\vspace{\itemspace}%
    \end{itemize}%
}


\begin{document}
 Some text
\begin{myitemize}
\item[0in] Foo\underline{\hspace{4.3in}}
\item Bar
\item Baz
\end{myitemize}
Some other text
\end{document}

在此处输入图片描述

相关内容