Ich versuche, Text in Zellen einer Tabelle in Latex zu zentrieren (sowohl horizontal als auch vertikal) (siehe letztes Bild). Das Lustige ist, dass der Code in einem Online-Editor funktioniert, beispielsweise https://www.papeeria.com
wenn ich die TeXLive 2016-Distribution verwende, aber nicht in der neuesten Distribution 2019. Er funktioniert nicht in Texmaker. Und ich habe Texmaker und LaTeX neu installiert.
Mein Code ist:
\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}
Aber ich will das:
Antwort1
Sie könnten eine leere Spalte mit einer definierten Höhe verwenden, um Ihre vertikale Höhe vorzutäuschen. Im Folgenden wird Ihre N
Spalte vom Typ (unbenutzt, warum haben Sie sie hinzugefügt?) durch ersetzt H{85mm}
, eine vertikal zentrierte Spalte mit einer Höhe von 85 mm.
\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
Wenn Sie diesen Effekt nicht für jede Zeile Ihrer Tabelle wünschen, können Sie zu Ihren alten Spalten vom Typ "-" zurückkehren und \rule{0pt}{<height>}
darin ein explizites Argument verwenden, um die Höhe dieser Zeile festzulegen.
Antwort2
\parbox
ermöglicht Ihnen, die Höhe und interne Ausrichtung anzugeben, was p{}
bei Spalten und ihren Varianten nicht der Fall ist. Sie benötigen das Paket collcell, um sie zu verwenden.
\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}
Antwort3
Du könntest das Paket verwenden tabularray
, dann wird dein Text automatisch vertikal zentriert:
\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}