Как выровнять текст в таблице по вертикали

Как выровнять текст в таблице по вертикали

У меня возникли проблемы с вертикальным выравниванием текста в таблице.

Я определяю новый тип столбца следующим образом:

\newcolumntype{M}{>{\centering\arraybackslash}m{\dimexpr.25\linewidth-2\tabcolsep}}

И это работает для всех столбцов, кроме последнего. Есть идеи, почему это не работает для последнего?

Второй вопрос: как выровнять текст по вертикали в строках из нескольких столбцов?

Вот полный пример моего кода.

\documentclass[aps,pre,superscriptaddress,unsortedaddress,twocolumn,showpacs]{revtex4}

\usepackage{tabulary}
\usepackage{tabularx}
\usepackage{threeparttable} 
\usepackage{array}% http://ctan.org/pkg/array
\newcolumntype{M}{>{\centering\arraybackslash}m{\dimexpr.25\linewidth-2\tabcolsep}}



\begin{document}
\begin{table}[!htp]
\begin{threeparttable}
\caption{Summary.} {\small\label{table:S2}}\centering 
\small
\begin{tabularx}{\textwidth}{ |X|M|M| }


\multicolumn{3}{M}{LONG TEXT}\\[4ex]\hline
      &  text         &   text \\\hline
text  &  complex text & complex text \\[6ex]\hline
text  &  complex text &  complex text   \\[6ex]\hline
text  & complex text  & complex text  \\[6ex]\hline

\multicolumn{3}{M}{LONG TEXT}  \\[4ex]\hline
     & text            &  text  \\\hline
text &  complex text   & complex text \\[6ex]\hline
text & complex text    & complex text   \\[6ex]\hline
text &   complex text  & complex text \\[6ex]\hline


  \hline
  \end{tabularx}
    \end{threeparttable}
\end{table}

\end{document}

Большое спасибо за вашу помощь!!!

решение1

Я думаю, вы можете упростить свой код, используя tabularray:

\documentclass[aps,pre,superscriptaddress,unsortedaddress,twocolumn,showpacs]{revtex4}

\usepackage{tabularray}

\begin{document}
\begin{table}[!htp]
    \caption{Summary.}\label{table:S2}
    \begin{tblr}{
        width=\linewidth,
        colspec={X[2]X[c]X[c]},
        hline{2-Z}={solid},
        vline{1-Z}={2-5, 7-Z}{solid},
        row{1,6}={ht=4ex},
        row{3-5,8-Z}={ht=6ex},
        row{2,7}={abovesep=1ex},
        row{1,6}={abovesep=2ex},
        }
        \SetCell[c=3]{c} LONG TEXT & & \\     
        & text & text \\
        text & complex text & complex text \\
        text & complex text & complex text \\
        text & complex text & complex text \\
        \SetCell[c=3]{c} LONG TEXT & & \\
        & text & text \\
        text & complex text & complex text \\
        text & complex text & complex text \\
        text & complex text & complex text 
    \end{tblr}
\end{table}
\end{document}

введите описание изображения здесь

Связанный контент