다음과 같은 최소한의 예가 주어지면
\documentclass[parskip=full]{scrreprt}
\usepackage[onehalfspacing]{setspace}
\usepackage{enumitem}
\usepackage{lipsum}
\setlist{
parsep=\parsep,
itemsep=-.5\parsep,
topsep=-.5\parsep,
partopsep=.5\parsep
}
\begin{document}
\lipsum[1]
\begin{itemize}
\item list
\item between
\item paragraphs
\end{itemize}
\lipsum[2]
\begin{itemize}
\item list
\item in
\item own
\item paragraph
\end{itemize}
\lipsum[3]
\begin{itemize}
\item list
\item above
\item paragraph
\end{itemize}
\lipsum[4-5]
\end{document}
첫 번째와 두 번째 목록은 예상대로 간격이 지정되어 있으며 두 번째 목록은 개별 단락으로 간격이 지정되어 있습니다(마지막 두 단락과 비교). 그러나 세 번째 목록 뒤에는 관련 없는 단락이 와도 첫 번째 목록과 같은 간격으로 표시됩니다.
이 답변\partopsep
새 단락을 시작하는 경우 목록 환경 위와 아래에 추가되는 상태입니다 . \partopsep
추가 를 얻는 (합리적으로 간단한) 방법이 있습니까?바닥까지만목록 환경 뒤에 새 단락이 오면?
답변1
흥미로운 질문입니다. 해결책에 대한 나의 시도는 다음과 같습니다. 를 추가하여 특정 목록에 대해 활성화해야 합니다 first={\useparbotsep}
. latex.ltx
( ) 에서 하나의 매크로를 수정 하지만 호출될 \@doendpe
때만 차이를 만드는 방식이기를 바랍니다 .\useparbotsep
최상위 목록에서만 작동합니다. 후속 레벨 목록은 정상적으로 작동합니다.
\documentclass[parskip=full]{scrreprt}
\usepackage[onehalfspacing]{setspace}
\usepackage{enumitem}
\makeatletter
\newskip\bottomsepadd
\newif\ifparbotsep
\def\useparbotsep{%
\ifnum\@listdepth=\@ne
\global\bottomsepadd\partopsep
\global\@topsepadd\topsep
\global\parbotseptrue
\fi}
\def\@doendpe{% <- modified from latex.ltx (hopefully with no side effects)
\@endpetrue
\def\par{\@restorepar
\clubpenalty\@clubpenalty
\everypar{}%
\ifparbotsep
\ifnum\@listdepth=\z@
\if@endpe\vskip\bottomsepadd\fi
\global\parbotsepfalse
\fi
\fi
\par\@endpefalse}
\everypar{{\setbox\z@\lastbox}%
\everypar{}\@endpefalse}}
\makeatother
\setlist{
parsep=\parsep,
itemsep=-.5\parsep,
topsep=-.5\parsep,
partopsep=.5\parsep,
first={\useparbotsep}
}
\begin{document}
\vskip 5pt\hrule\vskip 5pt
List within paragraph:
\begin{itemize}
\item List item.
\item List item.
\item List item.
\end{itemize}
End of List within paragraph.
\vskip 5pt\hrule\vskip 5pt
List as its on paragraph:
\begin{itemize}
\item List item.
\item List item.
\item List item.
\end{itemize}
Paragraph following list as its own paragraph.
\vskip 5pt\hrule\vskip 5pt
List above paragraph:
\begin{itemize}
\item List item.
\item List item.
\item List item.
\end{itemize}
Text following list.
\vskip 5pt\hrule\vskip 5pt
List below paragraph:
\begin{itemize}
\item List item.
\item List item.
\item List item.
\end{itemize}
Paragraph following list.
\vskip 5pt\hrule\vskip 5pt
\end{document}