间距较小的项目符号列表应与上下段落/行保持普通行距

间距较小的项目符号列表应与上下段落/行保持普通行距

为了获得更紧密的行距(我的文档的主间距是 1.5 倍间距,我正在使用memoir),我通常使用自定义的“紧密列表”(tightlist在下面的代码中)。这很有效。然而我希望列表与上下文本的间距与普通的(此处:1.5)行距,也就是说,我希望列表相对于文档的其余部分表现得像一条垂直线状的原子。

在以下文档中

\documentclass{memoir}

\OnehalfSpacing

\newenvironment{mytightlist}[3]{%
  % noticeably tighter than the memoir class's tightlist facilities
  \begin{Spacing}{1}%
  \begin{list}{#1}{%
    \setlength{\topsep}{0pt}%
    \setlength{\parskip}{0pt}%
    \setlength{\parsep}{0pt}%
    \setlength{\itemsep}{0pt}%
    \setlength{\leftmargin}{#2}%
    \setlength{\labelwidth}{#3}%
    \setlength{\labelsep}{0.5em}%
  }%
}%
{\end{list}\end{Spacing}}


\begin{document}

Text. HHHHHHHHHH

Text. HHHHHHHHHH

\begin{mytightlist}{\(\bullet\)}{1.5em}{0.5em}
\item Text. HHHHHHHHHH
\item Text. HHHHHHHHHH
\end{mytightlist}

Text. HHHHHHHHHH

Text. HHHHHHHHHH

\end{document}

2/3 和 4/5 线对内的间距为轻微地小于预期间距,即线对 1/2 和 5/6 内的间距。为什么?如何解决此问题?

顺便说一句,我不关心列表是否“属于”它周围的段落:对我来说,这种间距应该是统一的。(“LaTeX 花费了大量精力来区分段内列表和段末或段首列表”;David Carlisle 的评论(大致引用)

使用来自此答案的环境MySpacing与有关块周围间距的相关问题在这种情况下,而不是Spacing不起作用。

答案1

您正在使用不同的基线跳跃,但并没有考虑到这个方面。

\documentclass{memoir}

\newlength{\tightlisttopsep}
\AtBeginDocument{
  \setlength{\tightlisttopsep}{-\baselineskip}
  \addtolength{\tightlisttopsep}{\fontchardp\font`j}% a descender
  \addtolength{\tightlisttopsep}{.15pt} % some overshoot
  \OnehalfSpacing
  \addtolength{\tightlisttopsep}{.7\baselineskip}% height of strut
  % Show the baselines
  \edef\myrule{\noexpand\smash{\vrule depth\the\baselineskip\kern-.4pt}}
}

\newenvironment{mytightlist}[3]{%
  % noticeably tighter than the memoir class's tightlist facilities
  \begin{Spacing}{1}%
  \begin{list}{#1}{%
    \setlength{\topsep}{\tightlisttopsep}%
    \setlength{\parskip}{0pt}%
    \setlength{\parsep}{0pt}%
    \setlength{\itemsep}{0pt}%
    \setlength{\leftmargin}{#2}%
    \setlength{\labelwidth}{#3}%
    \setlength{\labelsep}{0.5em}%
  }%
}%
{\end{list}\end{Spacing}}


\begin{document}

1. HHHHHHHHH\myrule H

2. HHHHHHHHHH\myrule

\begin{mytightlist}{\(\bullet\)}{1.5em}{0.5em}
\item 3. HHHHHHHHHH
\item 4. \myrule HHHHHHHHHH
\end{mytightlist}

5. HHHHHHHHHH

6. HHHHHHHHHH

\end{document}

如果在使用不同字体大小时,这是没有希望的mytightlist,因为设置只是针对标准大小进行的。

在我看来,结果肯定是糟糕的排版。

在此处输入图片描述

答案2

至于它为什么存在,我说不上来。至于如何修复它(至少对于你的 MWE),我在环境之前和之后添加了一个\vspace对称。.049\baselineskip

\documentclass{memoir}
\def\vertoffset{.049\baselineskip}

\OnehalfSpacing

\newenvironment{mytightlist}[3]{%
  % noticeably tighter than the memoir class's tightlist facilities
  \begin{Spacing}{1}%
  \begin{list}{#1}{%
    \setlength{\topsep}{0pt}%
    \setlength{\parskip}{0pt}%
    \setlength{\parsep}{0pt}%
    \setlength{\itemsep}{0pt}%
    \setlength{\leftmargin}{#2}%
    \setlength{\labelwidth}{#3}%
    \setlength{\labelsep}{0.5em}%
    \vspace{\vertoffset}%
  }%
}%
{\end{list}\vspace{\vertoffset}\end{Spacing}}


\begin{document}

Text. HHHHHHHHHH

Text. HHHHHHHHHH

\begin{mytightlist}{\(\bullet\)}{1.5em}{0.5em}
\item Text. HHHHHHHHHH
\item Text. HHHHHHHHHH
\end{mytightlist}

Text. HHHHHHHHHH

Text. HHHHHHHHHH

\end{document}

答案3

看了你的问题,我不确定你是否也想要 1.5之内列表环境。如果这很重要,那么 Steven 的修复就不完整,因为正常文本行项目之间的间距为 ,15pt而项目之间的间距仅为 12pt

我尝试修复这两个问题,只需将 \setlenght宏中的两个更改为:

\setlength{\topsep}{.7pt}% 
\setlength{\itemsep}{3pt}%

要查看此修复效果如何,一个简单的测试是,\vspace{-15pt}在某行或某项之后必须与下一行或某项完美重叠。在下图中,我\phantom在重叠的线条中使用了一些空格,并在整个重叠的线条项目中使用了红色,以便更好地检查。在 400% 下,这是输出:

平均能量损失

源代码可以自己测试一下:

\documentclass{memoir}
\usepackage{xcolor}
\OnehalfSpacing

\newenvironment{mytightlist}[3]{%
  % noticeably tighter than the memoir class's tightlist facilities
  \begin{Spacing}{1}%
  \begin{list}{#1}{%
    \setlength{\topsep}{.7pt}% .1ex
    \setlength{\parskip}{0pt}%
    \setlength{\parsep}{0pt}%
    \setlength{\itemsep}{3pt}%
    \setlength{\leftmargin}{#2}%
    \setlength{\labelwidth}{#3}%
    \setlength{\labelsep}{0.5em}%
  }%
}%
{\end{list}\end{Spacing}}


\begin{document}


Text. {\color{red}HHHHHHHHHH (1-2 li\vspace{-15pt}}

Text. HHHHHHHHHH \phantom{(1-2 li}ne)

Text. HHHHHHHHHH (3 line)

Text. {\color{red}HHHHHHHHHH (4-1 line \vspace{-15pt}}

\begin{mytightlist}{\(\bullet\)}{1.5em}{.5em}
\item Text. HHHHHHHHHH  \phantom{(4-1 line}item) 
\item Text. HHHHHHHHHH (2 item) 
\item {\color{red}Text. HHHHHHHHHH (3-4 it}\vspace{-15pt}
\item Text. HHHHHHHHHH \phantom{(3-4 it}em) 
\item Text. HHHHHHHHHH (5 item)
\item {\color{red}Text. HHHHHHHHHH (6-1 item\vspace{-15pt}}
\end{mytightlist}

Text. HHHHHHHHHH \phantom{(6-5 item}line)

Text. HHHHHHHHHH (6 line)

Text. {\color{red}HHHHHHHHHH (7-8 li\vspace{-15pt}}

Text. HHHHHHHHHH \phantom{(7-8 li}ne)

\end{document}

相关内容