Необходимо выровнять текст по центру ячейки в таблице Latex.

Необходимо выровнять текст по центру ячейки в таблице Latex.

Я пытаюсь разместить текст по центру (как по горизонтали, так и по вертикали) в ячейках таблицы в latex (см. последнюю картинку). Самое смешное, что код работает в онлайн-редакторе, например https://www.papeeria.com, когда я использую дистрибутив TeXLive 2016, но не в новейшем дистрибутиве 2019. Он не работает в texmaker. И я переустановил texmaker и LaTeX.

Мой код:

\documentclass[landscape]{article}
\usepackage{array}
\usepackage{geometry}
\geometry{a4paper, left =0.85cm, right= 0.85cm, top = 1.55cm, bottom = 1.55cm}
\newcolumntype{M}[1]{>{\centering\arraybackslash}m{#1}}
\newcolumntype{N}{@{}m{0pt}@{}}


\usepackage{array}    % for the first table

\usepackage{xcolor,colortbl} % <--- color cell in table





\begin{document}
    
    \begin{table}[ht]
        \centering
        \begin{tabular}{|M{5.1cm}|M{5.1cm}|M{5.1cm}|M{5.1cm}|M{5.1cm}|N}
            \hline 
            \cellcolor{orange!50} \huge Text &
            \huge Text &
            \huge Text & 
            \huge Text & 
            \huge Text &
            \\[85mm]
            
            \hline
            \huge Text &
            \huge Text &
            \huge Text & 
            \huge Text & 
            \huge Text &
            \\ [85mm]
            \hline
        \end{tabular}
    \end{table}
    
    \newpage
    
    
    \begin{table}[ht]
        \centering
        \begin{tabular}{|M{5.1cm}|M{5.1cm}|M{5.1cm}|M{5.1cm}|M{5.1cm}|N}
            \hline 
            \cellcolor{orange!50} \huge Text &
            \huge Text &
            \huge Text & 
            \huge Text & 
            \huge Text &
            \\[85mm]
            
            \hline
            \huge Text &
            \huge Text &
            \huge Text & 
            \huge Text & 
            \huge Text &
            \\ [85mm]
            \hline
        \end{tabular}
    \end{table}
    
\end{document} 

Я понимаю это: введите описание изображения здесь

Но я хочу это:

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

решение1

Вы можете использовать пустой столбец с определенной высотой, чтобы подделать вашу вертикальную высоту. Следующий пример заменяет ваш (неиспользуемый, зачем вы его добавили?) Nстолбец типа на H{85mm}, который является вертикально центрированным столбцом высотой 85 мм.

\documentclass[landscape]{article}
\usepackage{array}
\usepackage{geometry}
\geometry{a4paper, left =0.85cm, right= 0.85cm, top = 1.55cm, bottom = 1.55cm}
\newcolumntype{M}[1]{>{\centering\arraybackslash}m{#1}}
\newcolumntype{N}{@{}m{0pt}@{}}
\newcolumntype{H}[1]{@{}>{\rule{0pt}{#1}}m{0pt}@{}}


\usepackage{array}    % for the first table

\usepackage{xcolor,colortbl} % <--- color cell in table

\begin{document}
    \begin{table}[ht]
        \centering
        \begin{tabular}{|M{5.1cm}|M{5.1cm}|M{5.1cm}|M{5.1cm}|M{5.1cm}|H{85mm}}
            \hline 
            \cellcolor{orange!50} \huge Text &
            \huge Text &
            \huge Text & 
            \huge Text & 
            \huge Text &
            \\
            
            \hline
            \huge Text &
            \huge Text &
            \huge Text & 
            \huge Text & 
            \huge Text &
            \\
            \hline
        \end{tabular}
    \end{table}
    \newpage
    \begin{table}[ht]
        \centering
        \begin{tabular}{|M{5.1cm}|M{5.1cm}|M{5.1cm}|M{5.1cm}|M{5.1cm}|H{85mm}}
            \hline 
            \cellcolor{orange!50} \huge Text &
            \huge Text &
            \huge Text & 
            \huge Text & 
            \huge Text &
            \\
            
            \hline
            \huge Text &
            \huge Text &
            \huge Text & 
            \huge Text & 
            \huge Text &
            \\
            \hline
        \end{tabular}
    \end{table}
\end{document} 

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

Если вы не хотите, чтобы этот эффект применялся к каждой строке таблицы, вы можете вернуться к старым Nстолбцам и использовать в них явное значение, \rule{0pt}{<height>}чтобы задать высоту этой строки.

решение2

\parboxпозволяет вам указать высоту и внутреннее выравнивание, которые p{}столбцы и их варианты не делают. Вам нужен пакет collcell, чтобы использовать их.

\documentclass[landscape]{article}
\usepackage{geometry}
\geometry{a4paper, left =0.85cm, right= 0.85cm, top = 1.55cm, bottom = 1.55cm}

\usepackage{array}
\usepackage{collcell}
\usepackage{xcolor,colortbl} % <--- color cell in table

\newcommand{\mycolumn}[1]{\parbox[c][85mm][c]{\myarg}{\centering #1}}
\newcolumntype{M}[1]{>{\def\myarg{#1}\collectcell\mycolumn}{l}<{\endcollectcell}}

\begin{document}
    
    \begin{table}[ht]
        \centering
        \begin{tabular}{|M{5.1cm}|M{5.1cm}|M{5.1cm}|M{5.1cm}|M{5.1cm}|}
            \hline 
            \cellcolor{orange!50} \huge Text &
            \huge Text &
            \huge Text & 
            \huge Text & 
            \huge Text \\
            \hline
            \huge Text &
            \huge Text &
            \huge Text & 
            \huge Text & 
            \huge Text \\
            \hline
        \end{tabular}
    \end{table}
    
\end{document} 

решение3

Вы можете использовать tabularrayпакет, тогда ваш текст будет автоматически выровнен по вертикали:

\documentclass[landscape]{article}

\usepackage{geometry}
\geometry{a4paper, hmargin=0.85cm, vmargin=1.55cm}

\usepackage{tabularray}
\usepackage{xcolor}

\begin{document}
    
    \begin{table}[ht]
        \centering
        \begin{tblr}{
          vlines,
          hlines,
          colspec={XXXXX},
          rows={ht=8.5cm,halign=c,font=\huge},
          cell{1}{1}={bg=orange!50}
        }
            Text & Text & Text & Text & Text\\
            Text & Text & Text & Text & Text\\
        \end{tblr}
    \end{table}
    
\end{document} 

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

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