是否可以定义一个列表环境,其中每个项目下面都有用户指定的空间量?我正在寻找类似的东西
\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}