tabularx 带有动态列和大量文本,最终导致框过满或过满

tabularx 带有动态列和大量文本,最终导致框过满或过满

我写了两个表格,它们面临着类似的问题。它们最终变成了一个混乱的盒子,盒子太满或太满。我注意到这里有很多盒子太满或太满的线程,但我还无法修复它。

第一个表格仅处理未满的框。我尝试使用连字符将其删除,但没有成功:

    \begin{tabularx}{\textwidth}{X|X|X|X}
        Aus welchen Gründen... ?[Aufgrund der ges. Nachweispflicht (wie Brandschutz, Arbeitsschutz, etc.)] & Aus welchen Gründen... ? [Einweisung zur Nutzung medizinischer Geräte] & Aus welchen Gründen... ?[Zur generellen zeit- und ortsungebundenen Weiterbildung von Mitarbeitern] & Aus welchen Gründen wurde eLearning in Ihrem Klinikum implementiert [Sonstiges]\\ \hline
        Ja & Nein & Nein & Ja\\
        N/A & N/A & N/A & N/A\\
        Ja & Ja & Nein & Nein\\
        Nein & Ja & Nein & Nein\\
        N/A & N/A & N/A & N/A\\
    \end{tabularx}

表格1

第二个表格处理了未满框和过满框,而过满框则以小黑框表示。

    \begin{tabularx}{\textwidth}{XX|XXX|XXX}
        \multicolumn{2}{X}{Alternativen} & \multicolumn{3}{|X}{$A_1$} & \multicolumn{3}{|X}{$A_2$}\\
        \toprule
            Kriterium & Gewicht & Zielertrag & Zielerfül\-lungsgrad & Teil\-nutzwert & Zielertrag & Zielerfül\-lungsgrad & Teil\-nutzwert \\
        \midrule
            $K_1$ & $g_1$ & $k_1$ & $e_{11}$ & $N_{11}=g_1 e_{11}$ & $k_{12}$ & $e_{12}$ & $N_{12}=g_1 e_{12}$ \\
            $K_2$ & $g_2$ & $k_{21}$ & $e_{21}$ & $N_{21}=g_2 e_{21}$ & $k_{22}$ & $e_{22}$ & $N_{22}=g_2 e_{22}$ \\
            $K_3$ & $g_3$ & $k_{31}$ & $e_{31}$ & $N_{31}=g_3 e_{31}$ & $k_{32}$ & $e_{32}$ & $N_{32}=g_2 e_{32}$ \\
        \bottomrule
            Summe der Gewichts\-faktoren & $g_1+g_2+g_3$ & \multicolumn{2}{X}{Nutzwert von $A_1$} & $N_1$ & \multicolumn{2}{X}{Nutzwert von $A_2$} & $N_2$ \\
    \end{tabularx}

表格2

是否存在一个可以遵循的通用规则,以实现出色的动态分栏表格,而不会出现框过满或未满的情况?

答案1

使用

\documentclass[ngerman]{book}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{babel}
\usepackage{tabularx,booktabs,ragged2e}
\renewcommand\tabularxcolumn[1]{>{\hspace{0pt}\RaggedRight}p{#1}}
\begingroup
\begin{document}\tabcolsep=3pt
\begin{tabularx}{\textwidth}{@{}XX|XXX|XXX@{}}
        \rlap{Alternativen} & & $A_1$ & & & $A_2$\\\toprule
        Kriterium & Gewicht & Zielertrag & Zielerfüllungsgrad & Teilnutzwert & 
        Zielertrag & Zielerfüllungsgrad & Teilnutzwert \\
        \midrule
        $K_1$ & $g_1$ & $k_1$ & $e_{11}$ & $N_{11}=g_1 e_{11}$ & $k_{12}$ & $e_{12}$ & 
        $N_{12}=g_1 e_{12}$ \\
        $K_2$ & $g_2$ & $k_{21}$ & $e_{21}$ & $N_{21}=g_2 e_{21}$ & $k_{22}$ & $e_{22}$ & 
        $N_{22}=g_2 e_{22}$ \\
        $K_3$ & $g_3$ & $k_{31}$ & $e_{31}$ & $N_{31}=g_3 e_{31}$ & $k_{32}$ & $e_{32}$ & 
        $N_{32}=g_2 e_{32}$ \\
        \bottomrule
        Summe der Gewichtsfaktoren & $g_1+g_2+g_3$ & \rlap{Nutzwert von 
        $A_1$}& & $N_1$ & \rlap{Nutzwert von $A_2$} & & $N_2$ \\
\end{tabularx}
\endgroup

\end{document}

否则段落中的第一个单词将不会被连字符连接。\hspace{0pt}pdftex以为它将是段落中的第一个单词。更有意义的是,使用lualatex它来连字符连接第一个单词。

在此处输入图片描述

答案2

作为@Herbert 提供的答案的一个小变化,我可以在没有任何警告的情况下编译该文档:

\documentclass[draft]{article}

\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}

\usepackage{tabularx,booktabs,ragged2e}
\newcolumntype{Y}{>{\hspace{0pt}\RaggedRight}X}

\begin{document}

\noindent
\begin{tabularx}{\textwidth}{Y|Y|Y|Y}
  Aus welchen Gründen... ?[Aufgrund der ges. Nachweispflicht (wie
  Brandschutz, Arbeitsschutz, etc.)] 
  & Aus welchen Gründen... ?  [Einweisung zur Nutzung medizinischer
  Geräte] 
  & Aus welchen Gründen... ?[Zur generellen zeit- und ortsungebundenen
  Weiterbildung von Mitarbeitern] 
  & Aus welchen Gründen wurde eLearning in Ihrem Klinikum
  implementiert [Sonstiges] \\ \hline
  Ja   & Nein & Nein & Ja   \\
  N/A  & N/A & N/A & N/A    \\
  Ja   & Ja & Nein & Nein   \\
  Nein & Ja & Nein & Nein   \\
  N/A  & N/A & N/A & N/A    \\
\end{tabularx}

\vspace{3ex}

\noindent
\begin{tabularx}{\textwidth}{YY|YYY|YYY}
  \multicolumn{2}{l}{Alternativen} & \multicolumn{3}{|l}{$A_1$} 
  & \multicolumn{3}{|l}{$A_2$}\\
  \toprule
  Kriterium    & Gewicht    & Zielertrag         & Zielerfüllungsgrad 
  & Teilnutzwert & Zielertrag & Zielerfüllungsgrad & Teilnutzwert  \\
  \midrule
  $K_1$ & $g_1$ & $k_1$ & $e_{11}$ & $N_{11}=g_1 e_{11}$ & $k_{12}$ & $e_{12}$ & $N_{12}=g_1 e_{12}$ \\
  $K_2$ & $g_2$ & $k_{21}$ & $e_{21}$ & $N_{21}=g_2 e_{21}$ & $k_{22}$ & $e_{22}$ & $N_{22}=g_2 e_{22}$ \\
  $K_3$ & $g_3$ & $k_{31}$ & $e_{31}$ & $N_{31}=g_3 e_{31}$ & $k_{32}$ & $e_{32}$ & $N_{32}=g_2 e_{32}$ \\
  \bottomrule
  Summe der Gewichtsfaktoren & $g_1+g_2+g_3$ 
  & \multicolumn{2}{Y}{Nutzwert von $A_1$} & $N_1$ & \multicolumn{2}{Y}{Nutzwert von $A_2$} & $N_2$ \\
\end{tabularx}

\end{document}

在此处输入图片描述

相关内容