![我如何才能生成 3 个居中列,并且中间一列的宽度适合其内容?](https://linux22.com/image/256348/%E6%88%91%E5%A6%82%E4%BD%95%E6%89%8D%E8%83%BD%E7%94%9F%E6%88%90%203%20%E4%B8%AA%E5%B1%85%E4%B8%AD%E5%88%97%EF%BC%8C%E5%B9%B6%E4%B8%94%E4%B8%AD%E9%97%B4%E4%B8%80%E5%88%97%E7%9A%84%E5%AE%BD%E5%BA%A6%E9%80%82%E5%90%88%E5%85%B6%E5%86%85%E5%AE%B9%EF%BC%9F.png)
我怎样才能制作类似的文档,但使中间列仅占用其所需的空间(而不是明确指定宽度),以便左右列有尽可能多的空间?
\documentclass{article}
\begin{document}
\noindent
\fbox{\parbox{0.333\textwidth}{\centering Left content centered \\ between margin and title }}
\fbox{\parbox{0.333\textwidth}{\centering \Huge Title }}
\fbox{\parbox{0.333\textwidth}{\centering Right content \\ also centered }}
\end{document}
答案1
您可以计算内容的宽度并将其存储在辅助长度中;然后您可以使用该值计算另外两个宽度(您还需要考虑\fboxsep
和\fboxrule
):
\documentclass{article}
\newlength\mylen
\newcommand\MyCont{\Huge Title}
\settowidth\mylen{\MyCont}
\begin{document}
\noindent
\fbox{\parbox{\dimexpr0.5\textwidth-0.5\mylen-3\fboxsep-3\fboxrule\relax}{\centering Left content centered \\ between margin and title }}%
\fbox{\parbox{\mylen}{\centering\MyCont}}%
\fbox{\parbox{\dimexpr0.5\textwidth-0.5\mylen-3\fboxsep-3\fboxrule\relax}{\centering Right content \\ also centered }}
\end{document}
当然,如果你对制作表格材料感兴趣,最好的方法是使用包tabularx
(如第零个的答案),或者tabu
包。后者的一个小例子:
\documentclass{article}
\usepackage{tabu}
\begin{document}
\noindent
\begin{tabu}{|X[c]|c|X[c]|}
Left content centered between margin and title & \Huge Title &
Right content also centered
\end{tabu}
\end{document}
答案2
你可以使用的包是tabularx
。这允许您指定需要宽度参数的表格环境。此外,还X
引入了新的列说明符。
这新的列类型将占据剩余的可用空间,并将该空间划分到各X
列之间。
就你的情况来说,这相当于:
% \usepackage{tabularx}
\begin{tabularx}{\textwidth}{|>{\centering}X|c|>{\centering\arraybackslash}X|}
o & o & o
\\
o & o & o
\end{tabularx}
这\arraybackslash
是解决无法正确解释的 的一个方法\cr
。请参阅手册以了解更多信息。
这将产生: