Estou tentando colocar o centro do texto (horizontal ou vertical) nas células de uma tabela em látex (veja a última foto). O engraçado é que o código funciona em um editor online, como o https://www.papeeria.com
, quando uso a distro TeXLive 2016, mas não na distro mais nova 2019. Não funciona no texmaker. E reinstalei o texmaker e o LaTeX.
Meu código é:
\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}
Mas eu quero isso:
Responder1
Você poderia usar uma coluna vazia com uma altura definida para falsificar sua altura vertical. O texto a seguir substitui sua N
coluna do tipo (não utilizada, por que você as adicionou?) por H{85mm}
, que é uma coluna centralizada verticalmente com 85 mm de altura.
\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}
Se você não deseja esse efeito para cada linha da sua tabela, você pode voltar para as N
colunas do tipo antigo e usar um explícito \rule{0pt}{<height>}
nelas para definir a altura dessa linha.
Responder2
\parbox
permite especificar a altura e o alinhamento interno, o que p{}
as colunas e suas variantes não fazem. Você precisa do pacote collcell para usá-los.
\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}
Responder3
Você poderia usar o tabularray
pacote, então seu texto será automaticamente centralizado verticalmente:
\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}