我读了这个问题的第一个答案
如何创建带有文本“raggedright/centered/raggedleft”的固定宽度表格列?
我试过
\newcolumntype{C}[1]{>{\centering\let\newline\\\arraybackslash\hspace{0pt}}m{#1}}
\begin{tabular}{|C{0.2cm}|C{0.5cm}|}
\hline
b & c \\
\hline
B & C \\
\hline
\end{tabular}
结果如下所示。为什么小尺寸会出现这样的效果?如何解决?
答案1
让我详细阐述一下我对这个问题的评论:
- 字母的宽度
B
也b
超过 2 毫米,这是第一列宽度的定义。 \hspace{0pt}
列定义中的选项C
可防止单元格内容溢出到下一列。因此,latex
将单元格内容推送到下一行,此限制不起作用。因此,您获得了结果。
可能的治疗方法:
- 省略
\hspace{0pt}
,这样单元格内容就可以使用\tabcolsep
单元格右侧的空间,如果需要的话可以溢出到下一列 - 增加单元格宽度。例如,如果您希望列宽比为 2:5(可以从代码片段中得出),那么您可以将列宽定义为
\begin{tabular}{|C{1em}|C{2.5em}|}
一个完整的小文档示例(称为最小工作示例:mwe)是:
\documentclass{article}
\usepackage{array}
\newcolumntype{C}[1]{>{\centering\let\newline\\\arraybackslash}m{#1}}
\begin{document}
\begin{center}
\renewcommand\arraystretch{1.2}% for more vertical space in cells
\begin{tabular}{|C{1em}|C{2.5em}|}
\hline
b & c \\
\hline
B & C \\
\hline
\end{tabular}
\end{center}
\end{document}
这使:
当然你可以定义其他列宽,但它们不应该小于字母的宽度M
,即1em
。
注意:请在将来始终提供 mwe,而不仅仅是代码片段。这样,我们将能够帮助我们帮助您。
答案2
为什么不使用‘tabu’来代替?
举个例子
\documentclass{article}
\usepackage{tabu}
\begin{document}
\begin{tabu} to 3cm {|X[cm]|X[2cm]|}
\hline
b & c \cr
\hline
B & C \cr
\hline
\end{tabu}
\end{document}