여러 개의 독립된 열을 만든 다음 가로로 채우는 방법은 무엇입니까?

여러 개의 독립된 열을 만든 다음 가로로 채우는 방법은 무엇입니까?

저는 작성자를 렌더링하기 위한 아이디어를 구현하고 있습니다. 내가 볼 수 있는 한 다른 어떤 패키지도 나를 대신해 줄 수는 없지만 수정되어서 기쁩니다. 아이디어는 저자를 여러 개의 독립된 열에 배치하는 것입니다. 그러나 제가 현재 질문하는 것은 구체적으로 MWE에서 발생하는 나쁜 점에 관한 것입니다.

첫 번째 단계로 저는 3개의 독립된 열을 만들고 콘텐츠로 채우고 싶었습니다. 선이 너무 가까워지는 경우를 대비하여 열을 분리하기 위해 약간의 접착제를 추가했습니다. 내가 원하는 대로 작동하지만 너무 많은 경고가 표시됩니다.

\documentclass{article}

\begin{document}

\makebox[\textwidth][c]{
  \parbox[t]{0.3\textwidth}{
    \noindent{}Item 1

    Item 4

    Item 7
  }
  \hskip 10pt plus 5pt minus 5pt\relax
  \parbox[t]{0.3\textwidth}{%
    \noindent{}Item 2

    Item 5 is a little bit longer

    Item 8
  }
  \hskip 10pt plus 5pt minus 5pt\relax
  \parbox[t]{0.3\textwidth}{%
    \noindent{}Item 3

    Item 6
  }
}

\end{document}

가로 상자의 너비를 중앙에 맞추거나 줄임으로써 사라지게 할 수 있지만, 그 이유를 설명할 수 있는 사람이 있습니까? 매크로를 사용한다기보다 아직도 욕설을 하고 있다는 느낌이 듭니다.

이 효과를 얻을 수 있는 더 좋은 방법이 있다면 알려주시기 바랍니다. 테이블보다는 박스로 가기로 결정했는데 재방문하게 되어 기쁘네요. 열과 행의 개수를 미리 알 수 없을 때 상자가 더 자연스럽다고 생각했습니다.

답변1

당신은 얻는다

Overfull \hbox (15.0pt too wide) in paragraph at lines 5--28

외부 항목이 \makebox들여쓰기되어 \parindent있으면 \noindent문제가 해결되지만 내부 목록에서 상자가 너무 가득 차 있을 수도 있습니다.

당신은 \textwidth들어있는 상자가 있습니다

SPACE .3\textwidth SPACE 10pt  .3\textwidth SPACE 10pt .3\textwidth SPACE

따라서 4 단어 공백 + 20pt가 .1\textwidth보다 큰지에 따라 맞을 수도 있고 맞지 않을 수도 있습니다.

\documentclass{article}

\begin{document}

\noindent\makebox[\textwidth][c]{%%%%
  \parbox[t]{0.3\textwidth}{%
    Item 1

    Item 4

    Item 7
  }\hfill
  \parbox[t]{0.3\textwidth}{%
    Item 2

    Item 5 is a little bit longer

    Item 8
  }\hfill
  \parbox[t]{0.3\textwidth}{%
   Item 3

    Item 6
  }%%%%
}

\end{document}

표시된 줄의 끝 부분에 %주석을 달 필요는 없지만 좋은 습관입니다. 표시된 부분은 %%%%나쁜 공간을 피하기 위해 필요합니다.


이러한 종류의 레이아웃에 테이블 형식이 자주 사용되는 한 가지 이유는 세 개의 동일한 너비 상자가 기술적으로 동일한 간격으로 전체 너비에 걸쳐 있지만 항목이 짧을 가능성이 있는 경우 왼쪽으로 이동된 것처럼 보이기 때문입니다.

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

\documentclass{article}

\begin{document}

\hrule

\noindent X\dotfill X

\noindent\makebox[\textwidth][c]{%%%%
  \parbox[t]{0.3\textwidth}{
    Item 1

    Item 4

    Item 7
  }\hfill
  \parbox[t]{0.3\textwidth}{%
    Item 2

    Item 5 is a little bit longer

    Item 8
  }\hfill
  \parbox[t]{0.3\textwidth}{%
   Item 3

    Item 6
  }%%%
}

\bigskip

\hrule

\noindent X\dotfill X

\noindent\makebox[\textwidth][c]{%%%%
  \begin{tabular}[t]{@{}l@{}}
    Item 1\\
    Item 4\\
    Item 7
   \end{tabular}\hfill
   \begin{tabular}[t]{@{}l@{}}
    Item 2\\
    Item 5 is a little bit longer\\
    Item 8
   \end{tabular}\hfill
   \begin{tabular}[t]{@{}l@{}}
   Item 3\\
    Item 6
   \end{tabular}%%%
}


\end{document}

관련 정보