基本问题:在此表格中,单元格条目需要放在一条水平线上。这不适用于较大的条目(“(x)”而不是“x”),即使选择较小的字母大小也是如此。我如何垂直调整它们?
\documentclass[a4paper]{article}
% Based on the class scrreprt by "KOMA-Script", whatever that means. If that doesn't help, please try \documentclass{scrreprt} or one of the usual.
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{rotating}
\usepackage{tabularx}
\usepackage{multirow}
\usepackage{array}
\newcolumntype{P}[1]{>{\raggedright\arraybackslash\hspace{0pt}}p{#1}}
\newcolumntype{x}{>{\raggedright\arraybackslash\hspace{0pt}}X}
\begin{document}
\begin{table}[htb]
\centering
\renewcommand{\arraystretch}{1.5}
\begin{tabularx}{\textwidth}{|p{0.11\textwidth}|p{0.165\textwidth}|*{16}{X|}}
\hline
Kategorie &
Ausprägung &
\begin{sideways}Bie \end{sideways} &
\begin{sideways}Übe / Rei\hspace{1em} \end{sideways} &
\begin{sideways}Uml \end{sideways} &
\begin{sideways}Zus \end{sideways} &
\begin{sideways}Bev \end{sideways} &
\begin{sideways}War \end{sideways} &
\begin{sideways}Gle \end{sideways} &
\begin{sideways}Bes \end{sideways} &
\begin{sideways}Hot \end{sideways} &
\begin{sideways}Fre \end{sideways} &
\begin{sideways}Zus \end{sideways} &
\begin{sideways}Ord \end{sideways} &
\begin{sideways}Fin \end{sideways} &
\begin{sideways}Uml \end{sideways} &
\begin{sideways}Bee \end{sideways} &
\begin{sideways}Bee \end{sideways}\\
\hline
\end{tabularx}
\begin{tabularx}{\textwidth}{|P{.11\textwidth}|P{.165\textwidth}|*{16}{x|}}
\hline
\multirow{ 3}{*}{\parbox[t]{.11\textwidth}{Betroffener Reiseabschnitt}} & Dieser & $\times$ & $\times$ & $\times$ & $\times$ & $\times$ &&&&&&&&&&&\\
& Jener &&&&& $\times$ & $\times$ & $\times$ & $\times$ & $\times$ & $\times$ & $\times$ & $\times$ & $\times$ & $\times$ & {\scriptsize $(\times)$} &\\
& Ein gänzlich verschiedener &&&&&&&&&&&&&& $\times$ & $\times$ & $\times$ \\
\hline
\end{tabularx}
\begin{tabularx}{\textwidth}{|P{.11\textwidth}|P{.165\textwidth}|*{16}{m{.0453125\textwidth}|}}
\hline
\multirow{ 3}{*}{\parbox[t]{.11\textwidth}{Betroffener Reiseabschnitt}} & Dieser & $\times$ & $\times$ & $\times$ & $\times$ & $\times$ &&&&&&&&&&&\\
& Jener &&&&& $\times$ & $\times$ & $\times$ & $\times$ & $\times$ & $\times$ & $\times$ & $\times$ & $\times$ & $\times$ & {\scriptsize $(\times)$} &\\
& Ein gänzlich verschiedener &&&&&&&&&&&&&& $\times$ & $\times$ & $\times$ \\
\hline
\end{tabularx}
\end{table}
\end{document}
相关问题:在搜索答案时,我刚发现使用列的建议m
。因此,是否可以使用
\renewcommand\tabularxcolumn[1]{m{#1}}
或
\renewcommand{\tabularxcolumn}[1]{>{\arraybackslash}m{#1}}
仅适用于第二种tabularx
情况?之后可以关闭效果吗?
附加问题:尝试使用m
不带 的列\renewcommand
失败了,因为我对第三个 的算术不正确tabularx
。为什么不是0.11\textwidth + 0.165\textwidth + 16*0.0453125\textwidth
= \textwidth
?(对 0.12 + 0.18 + 16*0.04375 也不起作用。)
答案1
下一行出现的原因(x)
是,您在文本前添加了一个断点,\hspace{0pt}
并且(x)
太宽,无法适合指定的列宽,如果您更改为
\newcolumntype{P}[1]{p{#1}}
\newcolumntype{x}{X}
然后它会出现在一行上,尽管它仍然太宽而无法容纳,除非您使用较小的字体或使用其他方法来缩小表格。
\documentclass[a4paper]{article}
% Based on the class scrreprt by "KOMA-Script", whatever that means. If that doesn't help, please try \documentclass{scrreprt} or one of the usual.
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{rotating}
\usepackage{tabularx}
\usepackage{multirow}
\usepackage{array}
\newcolumntype{P}[1]{p{#1}}
\newcolumntype{x}{X}
\begin{document}
\begin{table}[htb]
\centering
\renewcommand{\arraystretch}{1.5}
\begin{tabularx}{\textwidth}{|p{0.11\textwidth}|p{0.165\textwidth}|*{16}{X|}}
\hline
Kategorie &
Ausprägung &
\begin{sideways}Bie \end{sideways} &
\begin{sideways}Übe / Rei\hspace{1em} \end{sideways} &
\begin{sideways}Uml \end{sideways} &
\begin{sideways}Zus \end{sideways} &
\begin{sideways}Bev \end{sideways} &
\begin{sideways}War \end{sideways} &
\begin{sideways}Gle \end{sideways} &
\begin{sideways}Bes \end{sideways} &
\begin{sideways}Hot \end{sideways} &
\begin{sideways}Fre \end{sideways} &
\begin{sideways}Zus \end{sideways} &
\begin{sideways}Ord \end{sideways} &
\begin{sideways}Fin \end{sideways} &
\begin{sideways}Uml \end{sideways} &
\begin{sideways}Bee \end{sideways} &
\begin{sideways}Bee \end{sideways}\\
\hline
\end{tabularx}
\begin{tabularx}{\textwidth}{|P{.11\textwidth}|P{.165\textwidth}|*{16}{x|}}
\hline
\multirow{ 3}{*}{\parbox[t]{.11\textwidth}{Betroffener Reiseabschnitt}} & >Dieser & $\times$ & $\times$ & $\times$ & $\times$ & $\times$ &&&&&&&&&&&\\
& Jener &&&&& $\times$ & $\times$ & $\times$ & $\times$ & $\times$ & >$\times$ & $\times$ & $\times$ & $\times$ & $\times$ & {\scriptsize >$(\times)$} &\\
& Ein gänzlich verschiedener &&&&&&&&&&&&&& $\times$ & $\times$ & $\times$ >\\
\hline
\end{tabularx}
\begin{tabularx}{\textwidth}{|P{.11\textwidth}|P{.165\textwidth}|*{16}{m{.0453125\textwidth}|}}
\hline
\multirow{ 3}{*}{\parbox[t]{.11\textwidth}{Betroffener Reiseabschnitt}} & >Dieser & $\times$ & $\times$ & $\times$ & $\times$ & $\times$ &&&&&&&&&&&\\
& Jener &&&&& $\times$ & $\times$ & $\times$ & $\times$ & $\times$ & >$\times$ & $\times$ & $\times$ & $\times$ & $\times$ & {\scriptsize >$(\times)$} &\\
& Ein gänzlich verschiedener &&&&&&&&&&&&&& $\times$ & $\times$ & $\times$ >\\
\hline
\end{tabularx}
\end{table}
\end{document}
答案2
David Carlisle 的回答很好地解释了您的问题的原因。从这个解释可以看出,您的表格太宽,无法容纳文本宽度,因为它是article
文档类中默认定义的。作为解决方案,您有以下可能性:
- 旋转桌子
sidewaystable
- 使用
geometry
包增加整个文档的文本宽度 - 仅为表格增加文本宽度,例如使用
adjustwidth
包中的宏changepage
并允许表格突出文档文本边框
对于第二种情况,我选择边距大小为 20mm,并将更宽的文本放入>$(\times)$
设置为零的multicolumn
环境中tabcolsep
。这样我得到了以下结果:
使用代码:
\documentclass[a4paper]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}% <-- added
\usepackage[ngerman]{babel}
\usepackage{rotating}
\usepackage{tabularx}
\usepackage{multirow}
\usepackage{array}
\usepackage[margin=20mm]{geometry}% <-- added
\newcolumntype{P}[1]{>{\raggedright\arraybackslash}p{#1}}
\newcommand\mc[1]{\multicolumn{1}{@{}c@{}|}{\footnotesize #1}}% <-- added
\usepackage{showframe}% <-- added for showing page layout
\renewcommand*\ShowFrameColor{\color{green}}% <-- customization of showframe
\begin{document}
\begin{table}[htb]
\centering
\renewcommand{\arraystretch}{1.5}
\begin{tabularx}{\textwidth}{|P{0.11\textwidth}|P{0.125\textwidth}|% <-- changed
*{16}{X|}}
\hline
Kategorie & Ausprägung &
\begin{sideways}Bie \end{sideways} &
\begin{sideways}Übe / Rei\hspace{1em} \end{sideways} &
\begin{sideways}Uml \end{sideways} &
\begin{sideways}Zus \end{sideways} &
\begin{sideways}Bev \end{sideways} &
\begin{sideways}War \end{sideways} &
\begin{sideways}Gle \end{sideways} &
\begin{sideways}Bes \end{sideways} &
\begin{sideways}Hot \end{sideways} &
\begin{sideways}Fre \end{sideways} &
\begin{sideways}Zus \end{sideways} &
\begin{sideways}Ord \end{sideways} &
\begin{sideways}Fin \end{sideways} &
\begin{sideways}Uml \end{sideways} &
\begin{sideways}Bee \end{sideways} &
\begin{sideways}Bee \end{sideways}\\
\hline
%\end{tabularx}
%
%\begin{tabularx}{\textwidth}{|P{.11\textwidth}|P{.125\textwidth}|*{16}{X|}}
\hline
\multirow{ 2}*{\parbox[t]{\linewidth}{Betroffener Reiseabschnitt}} % <-- simlified
& >Dieser & $\times$ & $\times$ & $\times$ & $\times$ & $\times$ &&&&&&&&&&& \\
& Jener &&&&
& $\times$ & $\times$ & $\times$ & $\times$ & $\times$
& \mc{>$\times$}% <-- changed
& $\times$ & $\times$ & $\times$ & $\times$
& \mc{>$(\times)$}% <-- changed
& \\
& Ein gänzlich verschiedener
&&&&&&&&&&&&&
& $\times$ & $\times$ & \mc{$\times$>} \\ % <-- changed
\hline
\end{tabularx}
\end{table}
\end{document}
对于第三种情况,你需要将changepage
包添加到你的序言中
\usepackage[strict]{changepage}
并将表环境的内容放入adjustwidth
宏中:
\begin{adjustwidth}{<changes of left margin>{<changes of right margin>}
... table content ...
\end{adjustwidth}
必须选择文本区域左边距和右边距的变化,以便上表局部文本宽度为 210 - 20 - 20 = 170 毫米。