我知道这些问题经常被问到,但不知何故,现在他们的方法似乎对我有用。
我有一个大学提供的模板,上面列出了我的表格的样子:
\documentclass[%
fontsize=11pt,
twoside=off
]{scrbook}
\usepackage{tabularx}
\usepackage[tablewithout, figurewithout]{caption}
\renewcommand{\arraystretch}{1.8}
\newcolumntype{M}{X<{\vspace{4pt}}}
\begin{document}
\vspace{\parskip}
\section*{Überschrift Tabelle 1}
\begin{table}[!h]
\fontsize{9pt}{13pt}\selectfont
\begin{tabularx}{\textwidth}{ M | M }
\multicolumn{1}{X}{\textbf{Spalte 1}}%
& \multicolumn{1}{X}{\textbf{Spalte 2}} \\
\hline
Nummer 1,\newline\,mehrzeilig in Schriftgröße 9 pt & Nummer 2 \\
\hline
Nummer 1 & Nummer 2 \\
\hline
Nummer 1 & Nummer 2 \\
\hline
\end{tabularx}
\caption{}
\end{table}
\vspace{\parskip}
\section*{Überschrift Tabelle 2}
\begin{table}[!h]
\fontsize{9pt}{13pt}\selectfont
\begin{tabularx}{\textwidth}{| M | M |}
\hline
\textbf{Spalte 1} & \textbf{Spalte 2} \\
\hline
Nummer 1 & Nummer 2 \\
\hline
Nummer 1 & Nummer 2 \\
\hline
Nummer 1 & Nummer 2 \\
\hline
\end{tabularx}
\caption{}
\end{table}
\vspace{\parskip}
\section*{Überschrift Tabelle 3}
\begin{table}[!h]
\fontsize{9pt}{13pt}\selectfont
\begin{tabularx}{\textwidth}{@{} M M @{}}
\textbf{Spalte 1} & \textbf{Spalte 2} \\
Nummer 1 & Nummer 2 \\
Nummer 1 & Nummer 2 \\
Nummer 1 & Nummer 2 \\
\end{tabularx}
\caption{}
\end{table}
\end{document}
现在我有了一个以横向格式显示效果更好的表格。我已使用 sidewaystable 使其工作,但此处表格仅占一页。
我试图让整个内容超过几页,但总是提前失败。
这是我目前的尝试(自定义列宽):
\documentclass[%
fontsize=11pt,
twoside=off
]{scrbook}
\usepackage{longtable}
\usepackage{rotating}
\usepackage{pdflscape}
\usepackage{tabularx} % Flexiblere Tabellen
\usepackage[tablewithout, figurewithout]{caption}
\renewcommand{\arraystretch}{1.8}
\newcolumntype{M}[1]{X<{\vspace{4pt}\hsize=#1\hsize}}
\begin{document}
\begin{table}[!h]
\fontsize{9pt}{13pt}\selectfont
\begin{longtable}{\textwidth}{| M{0.5} | M{1} | M{1} | M{0.5} | M{0.5} | M{0.5} | M{1} | M{1} | M{1} | M{3} |}
\hline
\textbf{id} & \textbf{Label} & \textbf{Grund} & \textbf{Offen} & \textbf{Durchfluss} & \textbf{Durchlass} & \textbf{Rückstau} & \textbf{HQ-Marken\footnote{Beachte: \gls{hq}}} & \textbf{Parkplatz} & \textbf{Notizen} \\
\hline
1 & & xy & xy & 0 & 0 & Ja & 0 & & xxxxyyyyyy\\
\hline
*unbelivebale amount of data*
507 & xy & & xy & 0 & 0 & xy & 0 & xy & xxxxyyyyyy\\
\hline
\end{longtable}
\caption{xy \cite{xy}}
\label{xy}
\end{table}
\end{landscape}
\end{document}
现在我收到越来越多的错误消息。首先是 \texdwidth 是非法的 Illegal pream-token,其次是 \hline 超出了表格范围。我引用了以下内容:
额外的对齐标签已更改为 \cr。
您在表格中写入了过多的对齐制表符,导致其中一个制表符变成了换行符。请确保您在表格中指定了正确的列数。
虽然我很确定这是不正确的或者必须有其他原因,因为这个错误不会在正常的侧向表中发生。
抱歉,文字太长了,如果能提供任何帮助我将不胜感激!
答案1
渴望评论:
- 抱歉,坦白说,你的代码很乱。从根本上来说,你不可能弄清楚你想在表中放什么
- 任何类型的长表(
longtable
、xltabuilar
、longtblr
等等tabularray
)都不必封装到浮点中table
。 - 列类型仅在、、 longtable
X
中可用。tabularx
xltabular
longtblr, etc. tables and not in
- 根据您的列规范,您的表格非常宽。因此它适合
landscape
页面很脆弱 Q
从您的 MWE 中无法看出列的内容是什么。一些列具有自然宽度(在 MWE 下方˙列而不是)可能更好X
。
可能的表格示例,可作为起点:
\documentclass[11pt]{scrbook}
\usepackage[margin=25mm]{geometry}% define page layout
\usepackage{pdflscape}
\usepackage{rotating}
\usepackage{tabularray}
\begin{document}
\begin{landscape}
\footnotesize
\begin{longtblr}[
caption = {xy},
label = {xy},
note{a} = {Beachte: {hq}},
]{hlines, vlines,
colspec = {X[0.5,l, font=\bfseries]
*{8}{X[l]}
X[3,l]},
row{1} = {font = \bfseries, m},
rowhead = 1}
% column deaders
i.d & Label & Grund & Offen & Durchfluss
& Durchlass & Rückstau & {HQ-\\Marken}\TblrNote{a}
& Parkplatz
& Notizen \\
1 & 2 & 3 & 4 & 5
& 6 & 7 & 8 & 9
& 10: xxxxyyyyyy \\
%*unbelivebale amount of data*
507 & xy & & xy & 0
& 0 & xy & 0 & xy
& xxxxyyyyyy \\
\end{longtblr}
\end{landscape}
\end{document}
请编辑您的问题,删除上述所有缺陷,并在您的表格中提供更多(虚拟)数据,以模拟真实数据。同时澄清您的问题是什么,或者您在编写表格时遇到什么困难。这样我们才能更好地帮助您。