\topsep 未计入新列表

\topsep 未计入新列表

我的总体目标是重新定义 [ ] ,实际上我已经这样做了,而且效果很好,但我刚刚注意到,我的新 trivlist trivilist2 在上述文本行和 \item 之间留下的空格方面表现不佳。根据 latex 上的书籍,从文本到列表的分离是 \topsep+\parskip。但是当我将 \topsep 设置为 -\parskip 时,仍然有一个空格!

\documentclass[twoside,a4paper, 11pt]{article}
\usepackage{amsmath}
\usepackage{lipsum}

%\parskip=0.5\baselineskip %\advance\parskip by 0pt plus 2pt
\parskip=1ex
\parindent=0ex

\newenvironment{trivlist2}
{\begin{list}
{}
{
\setlength{\labelwidth}{0ex}
\setlength{\leftmargin}{0ex}
\setlength{\labelsep}{0ex}
\setlength{\itemindent}{1\parindent}
\setlength{\listparindent}{1\parindent}
\setlength{\itemsep}{0ex}
%\setlength{\topsep}{0.5\parskip plus 0.25\parskip minus 0\parskip}
\setlength{\topsep}{-3\parskip}
\setlength{\parsep}{0ex}
%useless only \topsep counts anyway as there is no \[ ]\ alone in an environment
\setlength{\partopsep}{0ex}
}}
{\end{list}}

\begin{document}
blablablablablablablablablablablablablablablablablabla,
\begin{trivlist2}
\item blablablablablablablablablablablablablablablablablabla
\end{trivlist2}
blablablablablablablablablablablablablablablablablabla
\end{document}

只有列表和底部文本之间的空间被占用了...我不明白为什么。我需要 \setlength{\topsep}{-3\parskip} 才能使底部文本接触 \item。

答案1

假设所需的输出是列表的内容位于以下文本行的顶部,则正确的数量是-\parskip-\baselineskip

示例输出

\documentclass[twoside,a4paper, 11pt]{article}
\usepackage{amsmath}
\usepackage{lipsum}

\parskip=1ex
\parindent=0ex

\newenvironment{trivlist2}
{\begin{list}
{}
{
\setlength{\labelwidth}{0ex}
\setlength{\leftmargin}{0ex}
\setlength{\labelsep}{0ex}
\setlength{\itemindent}{1\parindent}
\setlength{\listparindent}{1\parindent}
\setlength{\itemsep}{0ex}
\setlength{\topsep}{\dimexpr-\parskip-\baselineskip}
\setlength{\parsep}{0ex}
\setlength{\partopsep}{0ex}
}}
{\end{list}}

\begin{document}
blablablablablablablablablablablablablablablablablabla,
\begin{trivlist2}
\item Trblablablablablablablablablablablablablablablablablabla
\end{trivlist2}
blablablablablablablablablablablablablablablablablabla
\end{document}

\showoutput向文件中添加框信息有助于.log找到这些东西。

相关内容