如何正确使用 tabularx 来处理具有多列的表格?

如何正确使用 tabularx 来处理具有多列的表格?

我正在尝试在 latex 中生成一个有 5 列 12 行的表格,但它在 pdf 上显示不正确。我已经问过一个关于使用表格的问题,我被告知 tabularx 更好。结果在我上传的图片上: 1https://i.stack.imgur.com/CKoO7.png

任何帮助将非常感激。

\begin{table}[h]
    \caption{Arten der Reichweite von RFID-Systemen \cite{Internetquelle2}}
    \begin{tabularx}{\textwidth}{|X|X|X|X|X|}
        %   \scriptsize 
        %   \resizebox{\textwidth}{!}{%
        %       \begin{tabularx}{@{}|l|X|@{}}
        \toprule     
        \textbf{} & \textbf{Text} & \textbf{Text} & \textbf{Text(Text/Text)}& Text(Text/Text)\\ 
        \textbf{Text} & Unter 135 kHz & 13,56 MHz & 868 MHz (EU), 915 MHz (USA) & 2,45 GHz, 5,8 GHz \\ 
        \hline  
        \textbf{Text} & TextText Text&  Text Text Text Text&  Text Text TextText. Text Text Text Text & Text Text Text Text TextTextText Text\\ 
        \hline  
        \textbf{Text Text Text Text TextText} &  Text(Text) &  Induktiv (Text) & Text(Text) & Text(Text) \\ 
        \hline  
        \textbf{Text} & Gering & Hoch & Hoch & Sehr hoch \\ 
        \hline  
        \textbf{Text Text Text Text} & Gering & Gering & Sehr hoch & Sehr hoch \\ 
        \hline
        \textbf{Text Text Text Text} & Ja & Ja & Nein & Nein \\
        \hline
        \textbf{Text/Text-Text} & 11784/85 und 14223  & 14443, 15693 und 18000  & 14443, 15693 und 18000  & 18000 \\
        \hline  
        \textbf{Text Text-Text(Text)} & Text-Text,Text, Text, Text Text& TextText, Text-Text& Text, Text-Text& Text Text\\
        \hline  
        \textbf{Text} & Text- und Text, Text, Text, Text, Text& Text, Text, Text Text Text, Text-Text & Text, Text Text-Text, Text-Text& Text-Text, Text\\
        \hline  
        \textbf{Text} & Text& Text& Text/Text & Text Text Text Text Text \\
        \bottomrule
    \end{tabularx}
\end{table}

编辑:我尝试了@Mico 的建议,结果好多了,表格几乎可以正确读取。为了得到一个完美的表格,我只想纠正两个地方。这些地方如下图所示:

在此处输入图片描述

是否有任何命令可用于强制文本停留在表格线之间?
再次提前感谢...

代码如下:

\begin{table}[ht!]
\setlength\tabcolsep{3pt} % default: 6pt
\caption{Arten der Reichweite von RFID-Systemen\cite{Internetquelle2}}
\begin{tabularx}{\textwidth}{@{} >{\bfseries}L |L|L|L|L| @{}}
\toprule     
& \textbf{Niederfrequenz} & \textbf{Hochfrequenz} & \textbf{(Ultrahochfrequenz passiv/aktiv)} & \textbf{Mikrowellen(passiv/aktiv)} \\ 
\midrule  
\textbf{Frequenzbereich} &
Unter \qty{135}{\kilo\hertz} & \qty{13,56}{\mega\hertz} 
& \qty{868}{\mega\hertz} (EU), \qty{915}{\mega\hertz} (USA) 
& \qty{2,45}{\giga\hertz}, \qty{5,8}{\giga\hertz} \\ 
\midrule  
\textbf{Leseabstand} & Unter \qty{1}{\meter} &  Bis zu \qty{3}{\meter} &  Bis zu \qty{10}{\meter} bzw. bis zu \qty{100}{\meter}  & Bis zu \qty{3}{\meter} bzw. bis zu \qty{300}{\meter} Meter  \\ 
\midrule  
\textbf{Art der Kopplung von Leser und Transponder} &  Induktiv (Nahfeld) &  Induktiv (Nahfeld) & Elektromagnetisch (Fernfeld) & Elektromagnetisch (Fernfeld) \\ 
\midrule  
\textbf{Übertragungsrate} & Gering & Hoch & Hoch & Sehr hoch \\ 
\midrule
\textbf{Störender Einfluss durch Flüssigkeiten} & Gering & Gering & Sehr hoch & Sehr hoch \\ 
\midrule
\textbf{Ausrichtung des Transponders erforderlich} & Ja & Ja & Nein & Nein \\
\midrule
\textbf{ISO/IEC-Standards} & 11784/85 und 14223  & 14443, 15693 und 18000  & 14443, 15693 und 18000  & 18000 \\
\midrule    
\textbf{Träger des Transponder-Chips (Beispiele)} & Glas-Injektat,Plastikgehäuse, Chipkarte, Smart Label  & Smart Label, Industrie-Transponder  & Smart Label, Industrie-Transponder  & Großformatige Transponder\\
\midrule    
\textbf{Anwendungsbereich} & Zutritts- und Routenkontrolle, Wegfahrsperren, Wäschereinigung, Gasablesung, Tierkennzeichnung  & Wäschereinigung, Ticketing, Tracking und Tracing, Pulk-Erfassung  & Lager, Logistik Paletten-Erfassung, Container-Tracking & Fahrzeug-Identifikation, Straßenmaut\\
\midrule    
\textbf{Akzeptanz} & Weltweit & Weltweit & EU/USA & In der EU nicht akzeptiert \\
\bottomrule
\end{tabularx}
\end{table}

答案1

一些建议:

  • LaTeX 不会在/单词分隔符后插入换行符;因此,请替换/\slash以允许换行

  • 列太窄,而且完全对齐看起来不太好。我建议您L通过定义派生列类型\newcolumntype{L}{>{\RaggedRight\hspace{0pt}}X}\hspace{0pt}粒子告诉 LaTeX 即使在段落的第一个单词中也允许换行。

  • 在我看来,在数量和相关单位之间允许换行是令人不悦的。加载siunitx包及其\qty宏以抑制此类换行。指定选项locale=DE以通知包使用逗号作为小数点标记。

在此处输入图片描述

\documentclass[ngerman]{article} % or some other suitable doc. class
\usepackage{babel,tabularx,ragged2e,booktabs}
\newcolumntype{L}{>{\RaggedRight\hspace{0pt}}X} % suppress full justification
\usepackage[locale=DE]{siunitx} % for \qty macro; use commas as decimal markers

\begin{document}
\begin{table}[ht!]
    \setlength\tabcolsep{3pt} % default: 6pt
    \caption{Arten der Reichweite von RFID-Systemen \cite{Internetquelle2}}
    \begin{tabularx}{\textwidth}{@{} >{\bfseries}L LLLL @{}}
    \toprule     
    & \textbf{Text} & \textbf{Text} & \textbf{Text (Text\slash Text)} 
      & Text (Text\slash Text)\\ 
    Text & Unter \qty{135}{\kilo\hertz} & \qty{13,56}{\mega\hertz} 
      & \qty{868}{\mega\hertz} (EU), \qty{915}{\mega\hertz} (USA) 
      & \qty{2,45}{\giga\hertz}, \qty{5,8}{\giga\hertz} \\ 
    \midrule  
    Text & TextText Text&  Text Text Text Text&  Text Text TextText. Text Text Text Text 
      & Text Text Text Text TextTextText Text\\ 
    \midrule  
    Text Text Text Text TextText &  Text (Text) &  Induktiv (Text) & Text (Text) 
      & Text (Text) \\ 
    \midrule  
    Text & Gering & Hoch & Hoch & Sehr hoch \\ 
    \midrule  
    Text Text Text Text & Gering & Gering & Sehr hoch & Sehr hoch \\ 
    \midrule
    Text Text Text Text & Ja & Ja & Nein & Nein \\
    \midrule
    Text\slash Text-Text & 11784\slash 85 und 14223  & 14443, 15693 und 18000  
      & 14443, 15693 und 18000  & 18000 \\
    \midrule  
    Text Text-Text (Text) & Text-Text,Text, Text, Text Text& TextText, Text-Text
      & Text, Text-Text
      & Text Text\\
    \midrule  
    Text & Text- und Text, Text, Text, Text, Text& Text, Text, Text Text Text, Text-Text 
      & Text, Text Text-Text, Text-Text
      & Text-Text, Text\\
    \midrule  
    Text & Text& Text& Text\slash Text & Text Text Text Text Text \\
    \bottomrule
    \end{tabularx}
\end{table}
\end{document}

答案2

  • 请始终提供 MWE(最小工作示例),到目前为止,您的文档的页面布局尚不清楚。
  • 您的代码片段不会在链接中生成图像(请将其添加到问题中,链接可能会失效)
  • 在一些单元格中,你有一些非常长的(不自然的)单词,而 LaTeX 不知道如何将它们拆分成更多行
  • 我会将单元格的内容左对齐:
\documentclass{article}
\usepackage{makecell, tabularx}
\newcolumntype{L}{ >{\raggedright\arraybackslash}X}

\begin{document}
    \begin{table}[h]
\setcellgapes{3pt}
\makegapedcells
%\small
    \caption{Arten der Reichweite von RFID-Systemen \cite{Internetquelle2}}
    \label{tab:?}
\begin{tabularx}{\textwidth}{|>{\bfseries}L|*{4}{L|}}
    \Xhline{1pt}
                  & \textbf{Text} & \textbf{Text} & \textbf{Text (Text/Text)}& Text (Text/Text)\\
    \Xhline{0.5pt}
    Text & Unter 135 kHz & 13,56 MHz & 868 MHz (EU), 915 MHz (USA) & 2,45 GHz, 5,8 GHz \\
    \hline
    Text & TextText Text&  Text Text Text Text&  Text Text TextText. Text Text Text Text & Text Text Text Text TextTextText Text\\
    \hline
    Text Text Text Text TextText &  Text(Text) &  Induktiv (Text) & Text(Text) & Text(Text) \\
    \hline
    Text & Gering & Hoch & Hoch & Sehr hoch \\
    \hline
    Text Text Text Text & Gering & Gering & Sehr hoch & Sehr hoch \\
    \hline
    Text Text Text Text & Ja & Ja & Nein & Nein \\
    \hline
    Text/Text-Text & 11784/85 und 14223  & 14443, 15693 und 18000  & 14443, 15693 und 18000  & 18000 \\
    \hline
    Text Text-Text(Text) & Text-Text,Text, Text, Text Text& TextText, Text-Text& Text, Text-Text& Text Text\\
    \hline
    Text & Text- und Text, Text, Text, Text, Text& Text, Text, Text Text Text, Text-Text & Text, Text Text-Text, Text-Text& Text-Text, Text\\
    \hline
    Text & Text& Text& Text/Text & Text Text Text Text Text \\
    \Xhline{1pt}
\end{tabularx}
\end{table}
\end{document}

在此处输入图片描述

附录:geometry举个例子,在 MWE 中,对于更宽的包\textwidth、对于表包中的单元siunitx以及对于包\tblr中定义的表环境,都被视为包:tabularray

\documentclass{article}
\usepackage{geometry}
\usepackage{siunitx}
\usepackage{tabularray}

\begin{document}
    \begin{table}[h]
    \caption{Arten der Reichweite von RFID-Systemen \cite{Internetquelle2}}
    \label{tab:?}
\begin{tblr}{vlines, hlines,
             hline{1,12}=1pt, hline{2}=0.6pt,
             colspec = {*{7}{X[1,l]} },
             column{1}  = {font=\bfseries\linespread{0.91}\selectfont},
             row{1} = {font=\bfseries},
             }
% table body
        & Text                  & Text                  & Text (Text/Text)                          & Text (Text/Text)  \\
Text    & Unter \qty{135}{kHz}  & \qty{13,56}{MHz}      & \qty{868}{MHz} (EU),\qty{15}{MHz} (USA)   & \qty{2,45}{GHz}, \qty{5,8}{GHz} \\
Text    & TextText Text         &  Text Text Text Text  &  Text Text Text Text. Text Text Text Text & Text Text Text Text Text Text Text Text\\
Text Text Text Text TextText 
        &  Text(Text)           &  Induktiv (Text)      & Text(Text)                                & Text(Text)        \\
Text    & Gering                & Hoch                  & Hoch                                      & Sehr hoch         \\
Text Text Text Text 
        & Gering                & Gering                & Sehr hoch                                 & Sehr hoch         \\
Text Text Text Text
        & Ja                    & Ja                    & Nein                                      & Nein              \\
Text/Text-Text
        & 11784/85 und 14223    & 14443, 15693 und 18000    & 14443, 15693 und 18000                & 18000             \\
Text Text-Text(Text) 
        & Text-Text,Text, Text, Text Text
                                & TextText, Text-Text   & Text, Text-Text                           & Text Text         \\
Text    & Text- und Text, Text, Text, Text, Text
                                & Text, Text, Text Text Text, Text-Text 
                                                        & Text, Text Text-Text, Text-Text           & Text-Text, Text   \\
Text    & Text                  & Text                  & Text/Text                                 & Text Text Text Text Text \\
\end{tblr}
    \end{table}
\end{document}

在此处输入图片描述

相关内容