테이블 환경 내 `itemize` 목록 위의 공백 제거

테이블 환경 내 `itemize` 목록 위의 공백 제거

공간을 절약하기 위해 간결한 방법으로 -environment itemize내에 -list를 포함하고 싶습니다 . table그러나 표에 있을 때는 목록 위에 큰 간격이 있지만 일반 텍스트의 단락 다음에는 그렇지 않습니다.

\documentclass[12pt]{scrbook}
%\usepackage[autooneside=false, headsepline, plainheadsepline, automark]{scrlayer-scrpage}
\linespread{1}
\usepackage{paralist}
\usepackage{enumitem} % enumerate?
\usepackage{tabularx}

\begin{document}
some text
\begin{compactitem}  \item  point1  \item point2 \end{compactitem}
\begin{table}[ht!]
    \setlength{\leftmargini}{7pt}
    \begin{tabularx}{\linewidth}{l | X | X }\hline \hline
        & ECB& FED\\ \hline
    M1 & \begin{itemize}[noitemsep,topsep=0pt]   \item  point1  \item point2 \end{itemize} 
      & \begin{compactitem}  \item  point1  \item point2   \end{compactitem}
    \end{tabularx}
\end{table}

\end{document}

보시다시피 compactitemfrom paralist패키지와 itemizefrom 패키지를 모두 테스트했습니다 enumitemoptions [noitemsep,topsep=0pt]. 그들은 약간 다른 높이를 생산합니다. 이는 일반 단락 사이에서는 작동하지만 표에서는 작동하지 않습니다.나는 "point1"이 "M1"과 같은 레벨에 있기를 원합니다.

여기에 이미지 설명을 입력하세요


줄 바꿈("Assets"라는 단어가 "during"이라는 단어보다 조금 더 오른쪽에서 시작함)이 있을 때 눈에 보이는 약간의 들여쓰기가 있는 이 항목은 다음의 결과입니다.

\begin{minipage}[t]{\hsize}\begin{compactitem}
 \item Assets can be \textbf{difficult to value} during periods of hyperinflation
\end{compactitem}\end{minipage}

여기에 이미지 설명을 입력하세요


제안된 두 가지 솔루션 비교:다음 MWE는 두 가지 솔루션을 직접 비교하여 각각 compactitemt및 라는 이름의 새 환경을 정의합니다 compactitemm.

\documentclass%[12pt,abstracton,titlepage,parskip=false, no, no,twoside=true,open=right]
{scrbook}
%\usepackage[autooneside=false, headsepline, plainheadsepline, automark]{scrlayer-scrpage}

%\usepackage{listings}
\usepackage{paralist}
%\usepackage{newtxtext}%antpolt mathpazo %\usepackage{mathptmx} %\usepackage{newtxtext} 
\usepackage{enumitem} % enumerate?
\newenvironment{compactitemm}{\begin{minipage}[t]{\hsize}\begin{compactitem}}{\end{compactitem}\end{minipage}} %this solution requires enumitem package
\newenvironment{compactitemt}{\begin{itemize}[nosep, wide=0pt,
  %left=0pt %for neat, wide=0pt %for flush left to save space
  before={\begin{minipage}[t]{\hsize}},
  after ={\end{minipage}} ]   }{ \end{itemize} }
\renewcommand{\familydefault}{\sfdefault}

\usepackage{tabularx}

\begin{document}

\begin{table}
\setlength{\leftmargini}{7pt} %this impacts the left margin of itemize package, i.e. ``stuff 2'' in table. 7pt aligns with the other solution. 
\begin{tabularx}{\linewidth}{X | X }\hline
\multicolumn{2}{c}{stuff 1}\\ \hline
\begin{compactitemt}
  \item x This line should break and we see where the next begins
  \item y
  \item z
\end{compactitemt}
& \begin{compactitemt}
  \item a This line should break and we see where the next begins
  \item b
\end{compactitemt}\\ \hline 
\multicolumn{2}{c}{stuff 2}\\ \hline
\begin{compactitemm}
  \item x This line should break and we see where the next begins
  \item y
  \item z This line should break and we see where the next begins
\end{compactitemm}
& \begin{compactitemm}
  \item a This line should break and we see where the next begins
  \item b
\end{compactitemm}\\ \hline 
\end{tabularx}
\caption{MWE}
\end{table}

\end{document}

여기에 이미지 설명을 입력하세요

답변1

  • 환경 을 사용하는 경우 이를 and 문 compactitem으로 묶어야 합니다 .\begin{minipage}[t]{\hsize}\end{minipage}
  • itemize패키지 와 함께 환경을 사용하는 경우 enumitem다음 명령문을 추가할 수 있습니다.

    before={\begin{minipage}[t]{\hsize}},
    after ={\end{minipage}}
    

    와 함께 제공되는 옵션 목록으로 이동합니다 \begin{itemize}.

여기에 이미지 설명을 입력하세요

\documentclass[12pt]{scrbook}
\usepackage{paralist,enumitem,tabularx}
\begin{document}

\begin{table}[ht!]
    \setlength\extrarowheight{2pt} % optional, for a slighly more open "look"
    \setlength{\leftmargini}{7pt}
    \begin{tabularx}{\linewidth}{l | X | X }
    \hline \hline
       & ECB & FED\\ 
    \hline
    M1 & \begin{itemize}[nosep, left=0pt,
                         before={\begin{minipage}[t]{\hsize}},
                         after ={\end{minipage}} ]   
         \item point1  
         \item point2 
         \end{itemize} 
       & \begin{minipage}[t]{\hsize}
         \begin{compactitem}  
         \item point1  
         \item point2   
         \end{compactitem}
         \end{minipage}\\
    \hline
    \end{tabularx}
\end{table}

\end{document}

답변2

위의 공간에서는 LaTeX가 셀이 미니페이지라고 믿게 만드는 것만으로도 충분합니다. 이를 위해 \compress이 사이트의 질문에 대한 답변에 있는 명령을 빌렸습니다. 아래 공간의 경우 끝에 음수 \baselineskip을 추가해야 합니다.

\documentclass[12pt]{scrbook}
%\usepackage[autooneside=false, headsepline, plainheadsepline, automark]{scrlayer-scrpage}
\linespread{1}
\usepackage{paralist}
\usepackage{enumitem} % enumerate?
\usepackage{tabularx}
\makeatletter
\newcommand{\compress}{\@minipagetrue}
\makeatother

\begin{document}
some text
\begin{compactitem} \item point1 \item point2 \end{compactitem}
\begin{table}[ht!]
    \setlength{\leftmargini}{7pt}
    \begin{tabularx}{\linewidth}{l | >{\compress}X |>{\compress} X }\hline \hline
        & ECB& FED\\ \hline
    M1 & \begin{itemize}[nosep, after=\vspace{-\baselineskip}] \item point1 \item point2 \end{itemize}\\
\hline
    & & \begin{compactitem} \item point1 \item point2 \end{compactitem}\leavevmode\vspace*{-\baselineskip}
       \\
\hline
    \end{tabularx}
\end{table}

\end{document} 

이를 위해 `` \copress` 명령을 빌려서

관련 정보