作为一个新手,我在设置此表中的多行/多列时遇到了一些麻烦。我试图让所有单元格的文本居中并自动换行,但是我无法让这些功能在多行单元格中工作。如您所见,多行中的文本目前已正确居中,但我实现此目的的方式似乎相当“笨拙”。\centering
此行中应使用正确的解决方案吗?还是有更优雅的解决方案(例如使用列类型的等效项)?
接下来是多列问题。x 和 y 应该等距,并且垂直线应位于它们各自的侧面。我尝试了几种使用不同列类型来实现此目的的方法,但结果要么是字母间距不正确,要么是字母间距正确但垂直线位置不正确(例如使用\multicolumn{3}{c|}{\hfill x \hfill y } \hfill
)。
如果可能的话,我想大致保留行的当前间距。另外,我不明白为什么如果我将第一行设置为C{.3\textwidth}
整个表格,它不会达到文本宽度的 100%,而是超出右边距。我目前只使用 Y 列类型,因为它使表格的垂直边框适合...
\documentclass[12pt]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{geometry}
\geometry{a4paper,left=25mm,right=25mm}
\usepackage{tabularx}
\usepackage{multirow}
\newcolumntype{L}[1]{>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}m{#1}}
\newcolumntype{C}[1]{>{\centering\let\newline\\\arraybackslash\hspace{0pt}}m{#1}}
\newcolumntype{R}[1]{>{\raggedleft\let\newline\\\arraybackslash\hspace{0pt}}m{#1}}
\newcolumntype{Y}{>{\centering\arraybackslash}X}
\begin{document}
\noindent
\begin{tabularx}{\textwidth}{ | Y | C{.25\textwidth} | C{.15\textwidth} | C{.15\textwidth} | C{.15\textwidth} | }
\hline
Some centered text here & A bunch of words too long for one line & A bunch of words too long for one line & A bunch of words too long for one line & A bunch of words too long for one line \\
\hline
\multirow{2}{\hsize}{\centering this should be centered} & a line of words & a & b & c \\
\cline{2-5}
& a line of words & a & b & c \\
\hline
\hline
a line of words & a line of words & \multicolumn{3}{l|}{\hfill x \hfill y \hfill} \\
\hline
\end{tabularx}
\end{document}
答案1
对于多行问题,您可以重新定义\multirowsetup
,\raggedright
默认情况下是。对于多列问题,我提出了一个解决方案,但我不确定我是否完全理解了你想要什么。
\documentclass[12pt]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{geometry}
\geometry{a4paper,left=25mm,right=25mm, showframe}
\usepackage{tabularx}
\usepackage{multirow}
\newcolumntype{L}[1]{>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}m{#1}}
\newcolumntype{C}[1]{>{\centering\let\newline\\\arraybackslash\hspace{0pt}}m{#1}}
\newcolumntype{R}[1]{>{\raggedleft\let\newline\\\arraybackslash\hspace{0pt}}m{#1}}
\newcolumntype{Y}{>{\centering\arraybackslash}X}
\begin{document}
{\centering\setlength{\extrarowheight}{2pt}\small
\renewcommand{\multirowsetup}{\centering}
\begin{tabularx}{\textwidth}{ | Y | C{.25\textwidth} | C{.15\textwidth} | C{.15\textwidth} | C{.15\textwidth} | }
\hline
Some centered text here & A bunch of words too long for one line & A bunch of words too long for one line & A bunch of words too long for one line & A bunch of words too long for one line \\
\hline
\multirow{2}{=}{ this text is centered} & a line of words & a & b & c \\
\cline{2-5}
& a line of words & a & b & c \\
\hline
\hline
a line of words & a line of words & \multicolumn{1}{c}{} & \multicolumn{1}{!{\makebox[0pt]{x}}c!{\makebox[0pt]{y}}}{} & \\
\hline
\end{tabularx}}
\end{document}