![建立小固定寬度和 raggedright/centered/raggedleft 的表格欄位?](https://rvso.com/image/370313/%E5%BB%BA%E7%AB%8B%E5%B0%8F%E5%9B%BA%E5%AE%9A%E5%AF%AC%E5%BA%A6%E5%92%8C%20raggedright%2Fcentered%2Fraggedleft%20%E7%9A%84%E8%A1%A8%E6%A0%BC%E6%AC%84%E4%BD%8D%EF%BC%9F.png)
我讀過這個問題的第一個答案
如何使用文字 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}
這使:
當然,您可以定義其他列寬,但它們不應小於 letter 的寬度M
,即1em
。
注意:請今後始終提供 mwe,而不僅僅是程式碼片段。這樣你就會幫助我們幫助你。
答案2
為什麼不使用「禁忌」來代替?
一個例子可以是
\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}