항목별 테이블 레이아웃

항목별 테이블 레이아웃

간단한 질문: 이 코드를 복사했습니다.

\documentclass{article}
\usepackage{amsmath,amssymb,calc}
\def\horizlist#1#2#3{%
  \setcounter{enumi}{0}%
  #3%
  \flushleft
  \newlength\stringlength
  \setlength\stringlength{#2}
  \advance\stringlength by #1 \relax
  \def\item{\hfil\egroup\penalty50 \hfill
  \refstepcounter{enumi}%
  \leavevmode\hbox to \stringlength \bgroup\space(\theenumi)\space}
  \leavevmode\bgroup\hskip 0pt plus -1fill }

\def\endhorizlist{\hfil\egroup\endflushleft}

\begin{document}
\begin{enumerate}
\item blah
    \begin{horizlist}{2cm}{\widthof{null}}{\renewcommand\theenumi{\alph{enumi}}}
    \item null
    \item null
    \item null
    \item null
    \item null
    \item null
    \item null
    \item null
    \item null
    \item null
    \end{horizlist}
\end{enumerate}
\end{document}

해야 할 일을 수행합니다. 유일한 문제는 마지막 항목이 왼쪽의 이전 항목과 인접하지 않고 오른쪽에 나타난다는 것입니다. 이 문제를 어떻게 해결할 수 있나요? 문제를 밝히려면 다음을 수행하십시오.

출력은 다음과 같습니다:

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

나는 이것을 원한다:

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

도움이 필요하세요?

답변1

현재 열을 추적해야 합니다. 환경 horizlisttabular. 이 방법으로 / \item대신 사용할 수 있을 뿐만 아니라 원하는 대로 정렬을 지정할 수도 있습니다( env의 두 번째 인수).&\\horizlist

\documentclass{article}
\usepackage{calc}

\newcount\horizlistcount
\newenvironment{horizlist}[2]{%
  \setcounter{enumi}{0}%
  \renewcommand\theenumi{\alph{enumi}}%
  \def\nextsep{}%
  \global\horizlistcount=#1
  \def\item{%
    \nextsep
    \refstepcounter{enumi}(\theenumi)
    \ifnum\horizlistcount=0 \global\horizlistcount=#1 \fi
    \global\advance\horizlistcount-1
    \ifnum\horizlistcount=0 \def\nextsep{\\}\else\def\nextsep{&}\fi
  }%
  \begin{tabular}[t]{*{#1}{#2}}
}{%
  \end{tabular}
}

\begin{document}
\begin{enumerate}
\item blah
    \begin{horizlist}{4}{p{\widthof{null}+2cm}}
    \item null
    \item null
    \item null
    \item null
    \item null
    \item null
    \item null
    \item null
    \item null
    \item null
    \end{horizlist}
\end{enumerate}
\end{document}

결과

(임베디드 테이블 앞에 새 줄을 입력하려면 \\앞에 말하거나 정의에 포함시키세요.)

답변2

완전히 자동화되지는 않았지만 필요한 작업을 수행합니다. \noitem"팬텀 아이템"을 삽입하는 명령을 소개합니다 . 자동화되지 않은 것은 얼마나 많은 것이 \noitems있어야 하는지 미리 알 수 없다는 것입니다 .

\documentclass{article}
\usepackage{amsmath,amssymb,calc}
\def\horizlist#1#2#3{%
  \setcounter{enumi}{0}%
  #3%
  \flushleft
  \newlength\stringlength
  \setlength\stringlength{#2}
  \advance\stringlength by #1 \relax
  \def\item{\hfil\egroup\penalty50 \hfill
  \refstepcounter{enumi}%
  \leavevmode\hbox to \stringlength \bgroup\space(\theenumi)\space}
  \def\noitem{\hfil\egroup\penalty50 \hfill
  \leavevmode\hbox to \stringlength \bgroup}
  \leavevmode\bgroup\hskip 0pt plus -1fill }

\def\endhorizlist{\hfil\egroup\endflushleft}

\begin{document}
\begin{enumerate}
\item blah
    \begin{horizlist}{2cm}{\widthof{null}}{\renewcommand\theenumi{\alph{enumi}}}
    \item null
    \item null
    \item null
    \item null
    \item null
    \item null
    \item null
    \item null
    \item null
    \item null
    \noitem\noitem
    \end{horizlist}
\end{enumerate}
\end{document}

관련 정보