如何製作多個獨立的列,然後水平填充它們?

如何製作多個獨立的列,然後水平填充它們?

我正在實現一個渲染作者的想法。據我所知,沒有其他軟體包可以為我做到這一點,但我很高興得到糾正。這個想法是將作者放在幾個獨立的專欄中,但我目前的問題具體是關於我在 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是由\parindentso縮排的\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}

相關內容