各位有经验的朋友,我尝试在我的表格中插入一个较长的段落。但是我发现无论我使用p
as 段落还是使用c
,文本都无法漂亮地换行。我希望上下文可以:
- 单词左对齐。
- 整个段落位于单元格的中央和左侧。
- 单元格的长度是固定的。(我用过,
w{c}{30mm}
但是不起作用。)
您能给我一些提示吗?非常感谢!
这是我的代码:
\begin{table}[htbp!]
\caption{Set the content in the middle center of the table}
\centering
\def\arraystretch{1.1}
\begin{tabular}{*{1}{p{30mm}}*{5}{w{c}{10mm}}}
\toprule
\multicolumn{2}{c}{Content} & A & B & C & D \\ [1ex]
\midrule
\multicolumn{2}{c}{The content} & & & & \\ [0.5ex]
\cmidrule(lr){1-2}
\multirow{9}{2em}{Here is the text contect that I want to beautifully aligned in the middle center} & A & 0 & 0 & 0 & 0 \\ [0.5ex]
& A & 0 & 0 & 0 & 0 \\ [0.5ex]
& A & 0 & 0 & 0 & 0 \\ [0.5ex]
& A & 0 & 0 & 0 & 0 \\ [0.5ex]
& A & 0 & 0 & 0 & 0 \\ [0.5ex]
& A & 0 & 0 & 0 & 0 \\ [0.5ex]
& A & 0 & 0 & 0 & 0 \\ [0.5ex]
& A & 0 & 0 & 0 & 0 \\ [0.5ex]
& A & 0 & 0 & 0 & 0 \\ [0.5ex]
\bottomrule
\end{tabular}
\label{table_main}
\end{table}
以下是我想要实现的目标:
遗憾的是,我的代码可以实现以下效果:
答案1
如果您要求使用 2em 的文本宽度,TeX 会这样做。当\multirow
材料位于“固定宽度”列中时,请改用=
。
不要 污染 你的 餐桌\\[0.5ex]
。
\documentclass{article}
\usepackage{array,booktabs}
\usepackage{multirow}
\begin{document}
\begin{table}[htbp!]
\centering
\renewcommand{\arraystretch}{1.1}
\caption{Set the content in the middle center of the table}
\label{table_main}
\medskip % or set the caption below, or load caption
\begin{tabular}{*{1}{p{30mm}}*{5}{w{c}{10mm}}}
\toprule
\multicolumn{2}{c}{Content} & A & B & C & D \\
\midrule
\multicolumn{2}{c}{The content} & & & & \\
\cmidrule(r){1-2}
\multirow{9}{=}{Here is the text contect that I want to beautifully aligned in the middle center} & A & 0 & 0 & 0 & 0 \\
& A & 0 & 0 & 0 & 0 \\
& A & 0 & 0 & 0 & 0 \\
& A & 0 & 0 & 0 & 0 \\
& A & 0 & 0 & 0 & 0 \\
& A & 0 & 0 & 0 & 0 \\
& A & 0 & 0 & 0 & 0 \\
& A & 0 & 0 & 0 & 0 \\
& A & 0 & 0 & 0 & 0 \\
\bottomrule
\end{tabular}
\end{table}
\end{document}
需要注意的一些事项。
标准类是为表格下方的标题设置的。因此,要么添加一些垂直空间,要么加载
caption
更改表格上方标题参数的加载项。标签应放在 之后(或 之内)
\caption
。将其放在 之后tabular
会使文档维护更加困难。污染
tabular
了\\[0.5ex]
使得 无法\multirow
猜测正确的位置;使用\arraystretch
和绝不做\def
。(最重要的。)我不喜欢它
\multirow
,而且我总是想办法不用它。在这个特定情况下,文本似乎是所有行都通用的解释。因此它应该外部表格。例如在表格下方,这样文本宽度可以更宽,读者在解析文本时也不会遇到太多困难。
\documentclass{article}
\usepackage{array,booktabs}
\usepackage{multirow}
\begin{document}
\begin{table}[htbp!]
\centering
\renewcommand{\arraystretch}{1.1}
\caption{Set the content in the middle center of the table}
\label{table_main}
\medskip % or set the caption below, or load caption
\begin{tabular}{*{5}{w{c}{10mm}}}
\toprule
Content & A & B & C & D \\
\midrule
A & 0 & 0 & 0 & 0 \\
A & 0 & 0 & 0 & 0 \\
A & 0 & 0 & 0 & 0 \\
A & 0 & 0 & 0 & 0 \\
A & 0 & 0 & 0 & 0 \\
A & 0 & 0 & 0 & 0 \\
A & 0 & 0 & 0 & 0 \\
A & 0 & 0 & 0 & 0 \\
A & 0 & 0 & 0 & 0 \\
\midrule[\heavyrulewidth]
\multicolumn{5}{@{}p{\dimexpr50mm+10\tabcolsep}@{}}{
Here is the text contect that I want to beautifully aligned in the middle center}
\end{tabular}
\end{table}
\end{document}
答案2
抱歉,但不太清楚你的桌子应该是什么样子