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