我如何才能生成 3 个居中列,并且中间一列的宽度适合其内容?

我如何才能生成 3 个居中列,并且中间一列的宽度适合其内容?

我怎样才能制作类似的文档,但使中间列仅占用其所需的空间(而不是明确指定宽度),以便左右列有尽可能多的空间?

\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。请参阅手册以了解更多信息。

这将产生:

在此处输入图片描述

相关内容