如何實現內容獨立的多列項目清單?

如何實現內容獨立的多列項目清單?

我需要三個彼此相鄰的項目列表,每個列表都有一個居中的標題。使用multicol-package似乎不符合我的需求作為它不允許我獨立填寫我的專欄,是嗎?

將所有內容放入表中,似乎也不合適。

我想出了一個使用 的解決方案minipage,雖然感覺有點矯枉過正,但它非常接近我想要的。但我無法設法將迷你頁並排排列,並在列之間留出一些間距。如何讓三個小頁面使用 100% 的空間,比方說:

第一列 30%,空間 5%,第二列 30%,空間 5%,第三列 30%

我嘗試過,\hspace但沒有成功。

\documentclass[11pt,a4paper]{article}%
\usepackage{enumitem}

\begin{document}

\begin{minipage}[t]{0.30\textwidth}
{\centering \subsection*{Header 1}}
\begin{itemize}[align=left,leftmargin=*,labelsep=1ex]
\item one one one one one one
\item two
\item three
\item four
\end{itemize}
\end{minipage}
\begin{minipage}[t]{0.30\textwidth}
{\centering \subsection*{Header 2}}
\begin{itemize}[align=left,leftmargin=*,labelsep=1ex]
\item one one one one one one
\item two.one \\ two.two
\item three
\item four
\end{itemize}
\end{minipage}
\begin{minipage}[t]{0.30\textwidth}
{\centering \subsection*{Header 3}}
\begin{itemize}[align=left,leftmargin=*,labelsep=1ex]
\item one one one one one one
\item two
\item three
\end{itemize}
\end{minipage}

\end{document}

在此輸入影像描述

有什麼更容易實現我想要的嗎?

答案1

您不僅需要新增列間空間,還需要\noindent在第一個小頁之前新增一個。否則,您超出了列寬。事實上,小型頁面是處理此類多列問題的好方法。

已修訂,透過插入行尾百分號來刪除 David 指出的 2 個雜散空格。

\documentclass[11pt,a4paper]{article}%
\usepackage{enumitem}

\begin{document}

\noindent\begin{minipage}[t]{0.30\textwidth}
{\centering \subsection*{Header 1}}
\begin{itemize}[align=left,leftmargin=*,labelsep=1ex]
\item one one one one one one
\item two
\item three
\item four
\end{itemize}
\end{minipage}%
\kern.05\textwidth%
\begin{minipage}[t]{0.30\textwidth}
{\centering \subsection*{Header 2}}
\begin{itemize}[align=left,leftmargin=*,labelsep=1ex]
\item one one one one one one
\item two.one \\ two.two
\item three
\item four
\end{itemize}
\end{minipage}%
\kern.05\textwidth%
\begin{minipage}[t]{0.30\textwidth}
{\centering \subsection*{Header 3}}
\begin{itemize}[align=left,leftmargin=*,labelsep=1ex]
\item one one one one one one
\item two
\item three
\end{itemize}
\end{minipage}

\end{document}

在此輸入影像描述

答案2

只是為了顯示一個表格解決方案:

% arara: pdflatex

\documentclass{article}
\usepackage{array}
\usepackage{booktabs}
\usepackage[inline]{enumitem}
\newcommand*\myTableHeader[1]{\multicolumn{1}{c}{\large\textbf{#1}}}

\begin{document}
\noindent\begin{tabular*}{\linewidth}{@{\extracolsep{\fill}}p{0.3\linewidth}p{0.3\linewidth}p{0.3\linewidth}@{}}
    \myTableHeader{Header 1} & \myTableHeader{Header 2} & \myTableHeader{Header 3} \\\addlinespace
    \begin{itemize*}[itemjoin={\newline}]
        \item one one one one one one
        \item two
        \item three
        \item four
    \end{itemize*}
    &
    \begin{itemize*}[itemjoin={\newline}]
        \item one one one one one one
        \item two.one \newline two.two
        \item three
        \item four
    \end{itemize*}
    &
    \begin{itemize*}[itemjoin={\newline}]
        \item one one one one one one
        \item two
        \item three
    \end{itemize*}\\
\end{tabular*}
\end{document}

在此輸入影像描述


更新

您仍然可以itemize在這裡使用舊的定義。但為此,您必須操縱第二行前面的空白區域的高度。影像顯示未經校正的結果。程式碼已經包含一個\vspace{-10pt}看起來相當不錯的程式碼。

\documentclass{article}
\usepackage{array}
\usepackage{enumitem}
\newcommand*\myTableHeader[1]{\multicolumn{1}{c}{\large\textbf{#1}}}

\begin{document}
\noindent\begin{tabular*}{\linewidth}{@{\extracolsep{\fill}}p{0.3\linewidth}p{0.3\linewidth}p{0.3\linewidth}@{}}
    \myTableHeader{Header 1} & \myTableHeader{Header 2} & \myTableHeader{Header 3} \vspace{-10pt}\\
    \begin{itemize}[align=left, leftmargin=*,labelsep=1ex]
        \item one one one one one one
        \item two
        \item three
        \item four
    \end{itemize}
    &
    \begin{itemize}[align=left, leftmargin=*,labelsep=1ex]
        \item one one one one one one
        \item two.one \newline two.two
        \item three
        \item four
    \end{itemize}
    &
    \begin{itemize}[align=left, leftmargin=*,labelsep=1ex]
        \item one one one one one one
        \item two
        \item three
    \end{itemize}\\
\end{tabular*}
\end{document}

在此輸入影像描述

相關內容