我想在 LaTeX 中绘制下表。第一列中的文本应左对齐。所有其他单元格中的文本应居中。第一个问题出现在第一行的 D 上。如果我\centering
在 前面写一个D
,就会出现 LaTeX 错误。第二个问题是,我想垂直对齐所有单元格中的文本,但我不知道如何操作。我找到了一个解决方案,但如果指定了第一列的宽度,它就不起作用。
\documentclass{article}
\usepackage{blindtext}
\usepackage{tabularx}
\begin{document}
\begin{tabularx}{\textwidth}{|p{4cm}|X|X|X|X|}
\hline
& \centering A & \centering B & \centering C & D\\
\hline
\blindtext & 123 & 123 & 123 & 123\\
\hline
\end{tabularx}
\end{document}
答案1
对于水平和垂直居中的文本,重新定义 X 列定义:
\documentclass{article}
\usepackage{ragged2e}
\usepackage{tabularx}
\renewcommand\tabularxcolumn[1]{>{\Centering}m{#1}}
\newcommand\TEXT{%
I want to draw the following table in Latex. In the first column the text should be left aligned. The text in all other cells should be centered.}% only for demo
\begin{document}
\begin{tabularx}{\textwidth}{|m{4cm}*4{|X}|}\hline
& A & B & C & D \\\hline
\TEXT\TEXT & 123 & 123 & 123 & \TEXT\\\hline
\end{tabularx}
\end{document}
答案2
您可以使用标准 TeX 方法进行对齐,但使用 LaTeXragged2e
包效果更好:
\documentclass{article}
\usepackage{blindtext}
\usepackage{tabularx}
\usepackage{ragged2e}
\begin{document}
\begin{tabularx}{\textwidth}{|>{\RaggedRight}p{4cm}*{5}{|>{\Centering}X}|}
\hline
& A & B & C & D\\
\hline
\blindtext & 123 & 123 & 123 & 123\\
\hline
\end{tabularx}
\end{document}
列X
基本上就是列。因此,您可以在每个单元格的开头p{...}
使用命令,例如。要为每个单元格自动执行此操作,只需使用,它会将花括号的内容插入该行中每个单元格的开头。\RaggedRight
>{..}
为了避免最后五个单元格重复,我插入了构造*{5}{...}
。