Was ist los mit diesem Tabularx?
Ich hasse Tische in LaTeX! Ich habe immer Probleme, und doch sollte dies einfach sein:
\documentclass[12pt,letterpaper,twoside]{book}
\usepackage{lmodern}
\usepackage[total={6in,10in},left=1.5in,top=0.5in,includehead,includefoot]{geometry}
\usepackage[dvipsnames,table]{xcolor}
\usepackage{multirow}
\usepackage{hhline}
\usepackage{tabularx}
\begin{document}
\begin{center}
\renewcommand{\arraystretch}{1.5}
\begin{tabularx}{\textwidth}{|X|X|X|X|X|}
\hline
\rowcolor[gray]{0.95}
\multicolumn{5}{|c|}{Title}
\\ \hline
\multicolumn{1}{|c|}{\textsf{Day 1}}
& \multicolumn{1}{c|}{\textsf{Day 2}}
& \multicolumn{1}{c|}{\textsf{Day 3}}
& \multicolumn{1}{c|}{\textsf{Day 4}}
& \multicolumn{1}{c|}{\textsf{Day 5}}
\\ \hhline{|=|=|=|=|=|}
\multicolumn{1}{|c|}{Text 1}
& \multicolumn{1}{c|}{Text 2}
& \multicolumn{1}{c|}{Text 3}
& \multicolumn{1}{c|}{Text 4}
& \multicolumn{1}{c|}{Text 5}
\\
\multicolumn{1}{|c|}{12h00 to 18h00}
& \multicolumn{1}{c|}{12h00 to 18h00}
& \multicolumn{1}{c|}{12h00 to 18h00}
& \multicolumn{1}{c|}{12h00 to 18h00}
& \multicolumn{1}{c|}{12h00 to 18h00}
\\ \hline
\end{tabularx}
\end{center}
\end{document}
Vorschau des Problems:
Wie das Bild zeigt, schließt die Tabelle nicht auf der rechten Seite. Was ist los mit dem Code?
Antworten
Du hast gefragt,
Was ist los mit dem Code?
Der Code umschließt (entombs?) Jede einzelne Zelle in einem \multicolumn{1}{|c|}{...}Wrapper, wodurch Xdie Fähigkeit des Spaltentyps , einen automatischen Zeilenumbruch innerhalb der Zellen bereitzustellen , vollständig außer Kraft gesetzt wird. Folglich gibt es absolut keinen Grund zu der Annahme, dass die Breite der tabularxUmgebung gleich ist \textwidth.
Das Heilmittel? Sie müssen (a) die \multicolumn{1}{|c|}{...}Wrapper entfernen, damit die tabularxMaschinerie tatsächlich ihre Arbeit erledigen kann, und (b) eine Version des Spaltentyps definieren und verwenden, die Xden Zellinhalt zentriert und nicht vollständig rechtfertigt. Im folgenden Code finden Sie Möglichkeiten, um die zweite Bedingung zu erfüllen.
Im vorliegenden Beispiel können \tabcolsepZeilenumbrüche in der letzten Zeile vermieden werden , indem der Wert von - dem Parameter, der die Anzahl der Leerzeichen zwischen den Spalten bestimmt - um die Hälfte reduziert wird . Im zweiten tabularxBeispiel im folgenden Screenshot sehen Sie den resultierenden "Look".
\documentclass[12pt,letterpaper,twoside]{book}
\usepackage{lmodern}
\usepackage[total={6in,10in}, left=1.5in,top=0.5in,
includehead,includefoot]{geometry}
\usepackage[dvipsnames,table]{xcolor}
\usepackage{multirow,hhline}
\usepackage{tabularx}
\usepackage{ragged2e} % for '\Centering' macro
% Define a centered version of 'X' column type:
\newcolumntype{C}{>{\Centering}X}
% or: \newcolumntype{C}{>{\centering\arraybackslash}X}
\begin{document}
\begin{center}
\renewcommand{\arraystretch}{1.5}
\begin{tabularx}{\textwidth}{|*{5}{C|}} % <-- "C", not "X"
\hline
\rowcolor[gray]{0.95}
\multicolumn{5}{|c|}{\texttt{tabularx} with default value of \texttt{\string\tabcolsep}}
\\ \hline
\textsf{Day 1}
& \textsf{Day 2} & \textsf{Day 3} & \textsf{Day 4} & \textsf{Day 5}
\\ \hhline{|=|=|=|=|=|}
Text 1 & Text 2 & Text 3 & Text 4 & Text 5 \\
12h00 to 18h00 & 12h00 to 18h00 & 12h00 to 18h00 & 12h00 to 18h00 & 12h00 to 18h00
\\ \hline
\end{tabularx}
\bigskip
\setlength\tabcolsep{3pt} % default value: 6pt
\begin{tabularx}{\textwidth}{|*{5}{C|}} % <-- "C", not "X"
\hline
\rowcolor[gray]{0.95}
\multicolumn{5}{|c|}{\texttt{tabularx} with reduced value of \texttt{\string\tabcolsep}}
\\ \hline
\textsf{Day 1}
& \textsf{Day 2} & \textsf{Day 3} & \textsf{Day 4} & \textsf{Day 5}
\\ \hhline{|=|=|=|=|=|}
Text 1 & Text 2 & Text 3 & Text 4 & Text 5 \\
12h00 to 18h00 & 12h00 to 18h00 & 12h00 to 18h00 & 12h00 to 18h00 & 12h00 to 18h00
\\ \hline
\end{tabularx}
\end{center}
\end{document}
\documentclass[12pt,letterpaper,twoside]{book}
\usepackage{lmodern}
\usepackage[total={6in,10in},left=1.5in,top=0.5in,includehead,includefoot]{geometry}
\usepackage[dvipsnames,table]{xcolor}
\usepackage{multirow}
\usepackage{hhline}
\usepackage{tabularx}
\begin{document}
\begin{center}
\renewcommand{\arraystretch}{1.5}
\begin{tabular}{|c|c|c|c|c|}
\hline
\rowcolor[gray]{0.95}
\multicolumn{5}{|c|}{Title}
\\ \hline
\multicolumn{1}{|c|}{\textsf{Day 1}}
& \multicolumn{1}{c|}{\textsf{Day 2}}
& \multicolumn{1}{c|}{\textsf{Day 3}}
& \multicolumn{1}{c|}{\textsf{Day 4}}
& \multicolumn{1}{c|}{\textsf{Day 5}}
\\ \hhline{|=|=|=|=|=|}
\multicolumn{1}{|c|}{Text 1}
& \multicolumn{1}{c|}{Text 2}
& \multicolumn{1}{c|}{Text 3}
& \multicolumn{1}{c|}{Text 4}
& \multicolumn{1}{c|}{Text 5}
\\
\multicolumn{1}{|c|}{12h00 to 18h00}
& \multicolumn{1}{c|}{12h00 to 18h00}
& \multicolumn{1}{c|}{12h00 to 18h00}
& \multicolumn{1}{c|}{12h00 to 18h00}
& \multicolumn{1}{c|}{12h00 to 18h00}
\\ \hline
\end{tabular}
\end{center}
\end{document}