多行表格对齐,结合自定义列类型居中

多行表格对齐,结合自定义列类型居中

我读了很多与表格相关的帖子,但找不到针对我的问题的具体解决方案。我知道最后一列的多行垂直居中存在错误,但它对我来说不起作用,所以我通过手动调整 \vspace{-0.3em} 来修复它。但这不是解决方案。我的问题是我喜欢使用自设置的列类型(在本例中为“P”)在单元格中垂直居中。它完美适用于第二列,但不适用于第三列。它不是我想要的优雅解决方案。它看起来像下面这样,但经过数小时手动将单元格中的文本移动 0.1em 步长后。 我的编译器中的示例

此外,右下角“附加单元格”的垂直线与垂直表格线不对齐。 未对齐

这是我在 Overleaf-LuaLatex 编译器中使用的最小代码。我希望这样就很容易理解了。我已经阅读了如何提问,但作为这里的作者,我还是个新手,所以请原谅我的错误,提前谢谢您。如果有问题,我也非常乐意提供语法方面的提示。

    \documentclass[a4paper,12pt]{article}

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



\usepackage{amsmath}%mathem. Symbole
\usepackage{bm}%bold Math Symbols
\usepackage{multicol}
\usepackage{array,multirow,graphicx}
\renewcommand{\arraystretch}{1.7}%Zellenhöhe
\usepackage{booktabs}%Liniendicke



\newcolumntype{P}[1]{>{\centering\arraybackslash}p{#1}}%horizontal centering


\begin{document}

    \begin{table}
        \caption{Verortung der Stunde zum Thema Saccharose im Unterricht}
        \vspace{1.5ex}
        \centering
        \label{table5}
        \resizebox{\textwidth}{!}{ %insgesamt: 0.864\textwidth
        \begin{tabular}{ | P{0.288\textwidth} | P{0.288\textwidth} | P{0.288\textwidth} |}
        \hline
        \small\textbf{\textit{Lernbereich}} & 
        \small\textbf{\textit{Unterrichtseinheiten}} & 
        \small\textbf{\textit{angesetzte Stunden}} 
        \\
        \hline
   \multirow{4}{*}[-5em]{\parbox{0.288\textwidth}{\centering C9-2: Atombau und gekürztes Periodensystem – Vom Kern-Hülle-Modell zum Energiestufenmodell und zum Ordnungsprinzip des gekürzten Periodensystems}}  &  Energiestufenmodell: Ionisierungsenergie, Elektronenkonfiguration & \vspace{-0.3em} 1-2\,h \\
   \cline{2-3}
   & \textbf{Profil: Flammenfärbung und Linienspektrum} & \vspace{-1em} 3\,h \\
   \cline{2-3}
   &  gekürztes Periodensystem: Protonenzahl, Nukleonenzahl, Isotope; Hauptgruppen, Valenzelektronen; Perioden & \vspace{1em} 1-2\,h \\
   \cline{2-3}
    & Edelgaskonfiguration, Ionenladungszahl von Kationen und Anionen, Edelgasregel & \vspace{0.3em} 1-2\,h \\
   \cline{2-3}
    \hline
   \multicolumn{1}{c}{} &\multicolumn{1}{c}{}& \multicolumn{1}{|c|}{$\sum$ 9\,h}\\
    \cline{3-3}
    \end{tabular}
    }
    \end{table}


\end{document}

答案1

一些观察:

  • \resizebox很糟糕。这会使字体不一致。更好的方法是计算列宽,使其刚好适合。从中减去4\arrayrulewidth和,然后除以 3。6\tabcolsep\textwidth
  • 对于垂直居中,请使用m{...}代替p{...}。然后你可以去掉 s \vspace
  • 不要将 a 放在\parbox\multirow。而是使用=而不是*作为第二个参数。
  • 对于垂直条:它应该位于上一列的末尾,而不是下一列的开头。
  • (之前)有\cline{2-3}太多\hline
\documentclass[a4paper,12pt]{article}

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



\usepackage{amsmath}%mathem. Symbole
\usepackage{bm}%bold Math Symbols
\usepackage{multicol}
\usepackage{array,multirow,graphicx}
\renewcommand{\arraystretch}{1.7}%Zellenhöhe
\usepackage{booktabs}%Liniendicke



\newlength\Pcolwidth
\setlength\Pcolwidth{\dimexpr (\textwidth-4\arrayrulewidth-6\tabcolsep)/3}
\newcolumntype{P}[1]{>{\centering\arraybackslash}m{#1}}%horizontal and vertical centering

\begin{document}

    \begin{table}
        \caption{Verortung der Stunde zum Thema Saccharose im Unterricht}
        \vspace{1.5ex}
        \centering
        \label{table5}
        \begin{tabular}{ | P{\Pcolwidth} | P{\Pcolwidth} | P{\Pcolwidth} |}
        \hline
        \small\textbf{\textit{Lernbereich}} & 
        \small\textbf{\textit{Unterrichtseinheiten}} & 
        \small\textbf{\textit{angesetzte Stunden}} 
        \\
        \hline
   \multirow{4}{=}[-5em]{\centering C9-2: Atombau und gekürztes Periodensystem – Vom Kern-Hülle-Modell zum Energiestufenmodell und zum Ordnungsprinzip des gekürzten Periodensystems}  &  Energiestufenmodell: Ionisierungsenergie, Elektronenkonfiguration &  1-2\,h \\
   \cline{2-3}
   & \textbf{Profil: Flammenfärbung und Linienspektrum} &  3\,h \\
   \cline{2-3}
   &  gekürztes Periodensystem: Protonenzahl, Nukleonenzahl, Isotope; Hauptgruppen, Valenzelektronen; Perioden &  1-2\,h \\
   \cline{2-3}
    & Edelgaskonfiguration, Ionenladungszahl von Kationen und Anionen, Edelgasregel &  1-2\,h \\
   \hline
   \multicolumn{2}{c|}{}& $\sum$ 9\,h \\
    \cline{3-3}
    \end{tabular}
    \end{table}


\end{document}

在此处输入图片描述

第二种解决方案:

使用tabularx,它会自动计算列宽。您需要重新定义\tabularxcolumn以使其使用m{...}列。

\documentclass[a4paper,12pt]{article}

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



\usepackage{amsmath}%mathem. Symbole
\usepackage{bm}%bold Math Symbols
\usepackage{multicol}
\usepackage{array,multirow,graphicx}
\renewcommand{\arraystretch}{1.7}%Zellenhöhe
\usepackage{booktabs}%Liniendicke
\usepackage{tabularx}


\newcolumntype{P}{>{\centering\arraybackslash}X}%horizontal centering


\begin{document}

    \begin{table}
        \renewcommand{\tabularxcolumn}[1]{m{#1}}% vertical centering
        \caption{Verortung der Stunde zum Thema Saccharose im Unterricht}
        \vspace{1.5ex}
        \centering
        \label{table5}
        \begin{tabularx}{\textwidth}{ | P | P | P |}
        \hline
        \small\textbf{\textit{Lernbereich}} & 
        \small\textbf{\textit{Unterrichtseinheiten}} & 
        \small\textbf{\textit{angesetzte Stunden}} 
        \\
        \hline
   \multirow{4}{=}[-5em]{\centering C9-2: Atombau und gekürztes Periodensystem – Vom Kern-Hülle-Modell zum Energiestufenmodell und zum Ordnungsprinzip des gekürzten Periodensystems}  &  Energiestufenmodell: Ionisierungsenergie, Elektronenkonfiguration &  1-2\,h \\
   \cline{2-3}
   & \textbf{Profil: Flammenfärbung und Linienspektrum} &  3\,h \\
   \cline{2-3}
   &  gekürztes Periodensystem: Protonenzahl, Nukleonenzahl, Isotope; Hauptgruppen, Valenzelektronen; Perioden &  1-2\,h \\
   \cline{2-3}
    & Edelgaskonfiguration, Ionenladungszahl von Kationen und Anionen, Edelgasregel &  1-2\,h \\
   \hline
   \multicolumn{2}{c|}{}& $\sum$ 9\,h \\
    \cline{3-3}
    \end{tabularx}
    \end{table}


\end{document}

第三种解决方案:

使用跨度大于单行行高的“tblr environment from thetabularray \multirow”,这通常是一个更好的解决方案。package. For

\documentclass[a4paper,12pt]{article}

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



\usepackage{amsmath}%mathem. Symbole
\usepackage{bm}%bold Math Symbols
\usepackage{multicol}
\usepackage{array,multirow,graphicx}
\renewcommand{\arraystretch}{1.7}%Zellenhöhe
\usepackage{booktabs}%Liniendicke
\usepackage{tabularray}


\NewColumnType{P}{X[c,m]}%horizontal and vertical centering


\begin{document}

    \begin{table}
        \caption{Verortung der Stunde zum Thema Saccharose im Unterricht}
        \vspace{1.5ex}
        \centering
        \label{table5}
        \begin{tblr}{width=\textwidth, colspec={| P | P | P |},vline{1,2} = {Z}{0pt}}
        \hline
        \small\textbf{\textit{Lernbereich}} & 
        \small\textbf{\textit{Unterrichtseinheiten}} & 
        \small\textbf{\textit{angesetzte Stunden}} 
        \\
        \hline
   \SetCell[r=4]{c,m} C9-2: Atombau und gekürztes Periodensystem – Vom Kern-Hülle-Modell zum Energiestufenmodell und zum Ordnungsprinzip des gekürzten Periodensystems  &  Energiestufenmodell: Ionisierungsenergie, Elektronenkonfiguration &  1-2\,h \\
   \cline{2-3}
   & \textbf{Profil: Flammenfärbung und Linienspektrum} &  3\,h \\
   \cline{2-3}
   &  gekürztes Periodensystem: Protonenzahl, Nukleonenzahl, Isotope; Hauptgruppen, Valenzelektronen; Perioden &  1-2\,h \\
   \cline{2-3}
    & Edelgaskonfiguration, Ionenladungszahl von Kationen und Anionen, Edelgasregel &  1-2\,h \\
    \hline
   &  & $\sum$ 9\,h \\
    \cline{3-3}
    \end{tblr}
    \end{table}


\end{document}

答案2

感谢@pascal974/@Pieter van Oostrum 和 tabularray 包的建议,它运行得非常好。


    \documentclass[a4paper,12pt]{article}

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

\usepackage{tabularray}


\usepackage{amsmath}%mathem. Symbole
\usepackage{graphicx}

\begin{document}

     \begin{table}
        \caption{Verortung der Stunde zum Thema Saccharose im Unterricht}
        \vspace{1ex}
        \centering
        \label{table8}
        \setlength\threecolwidth{\dimexpr (\textwidth-4\arrayrulewidth-6\tabcolsep)/3}

        \SetTblrInner{rowsep=5pt}
        \begin{tblr}{
        vline{1}={1-5}{solid},%erste vert. Linie in den Reihen {}
        colspec={Q[l,m,\threecolwidth]|Q[l,m,\threecolwidth]|Q[c,m,\threecolwidth]|}}% m vertical, c horiz. align
        \hline
        \small\textbf{\textit{Lernbereich}} & 
        \small\textbf{\textit{Unterrichtseinheiten}} & 
        \small\textbf{\textit{angesetzte Stunden}} 
        \\
        \hline
   \SetCell[r=4]{m} C9-2: Atombau und gekürztes Periodensystem – Vom Kern-Hülle-Modell zum Energiestufenmodell und zum Ordnungsprinzip des gekürzten Periodensystems
                        %
                        %
            &  Energiestufenmodell: Ionisierungsenergie, Elektronenkonfiguration & 1-2\,h \\
   \hline
            & \textbf{Profil: Flammenfärbung und Linienspektrum} &  3\,h \\
   \hline
            &  gekürztes Periodensystem: Protonenzahl, Nukleonenzahl, Isotope; Hauptgruppen, Valenzelektronen; Perioden &  1-2\,h \\
   \hline
            & Edelgaskonfiguration, Ionenladungszahl von Kationen und Anionen, Edelgasregel & 1-2\,h \\
    \hline
      \SetCell[c=2]{c}& & $\sum$ 9\,h\\
    \cline{3-3}
    \end{tblr}
    
    \end{table}


\end{document}

从上面编译的代码;看起来与更好的代码完全一样 这非常简单,我可以用 m 将单元格垂直居中,用 c 将单元格水平居中。(Q[m,c])

这非常简洁。我唯一的问题是,我将整个 tblr/tabular 环境放在一个 resizebox 中。我曾经看到过这种情况,从那时起我就一直这样做,以防止任何表格超出我的边距。我宁愿缩小它,也不愿超出边距。但另一方面,我不想使用不同的字体大小,因此为了确定正确的列宽,我让 latex 读取以 cm 或 pt 为单位的文本宽度,并将其除以我拥有的列数。这就是为什么上面的代码中单元格类型为:Q[l,m,139.21471pt]。这是一个相当奇怪的数字,0.3\textwidth 在该包中不起作用,根据经验,3 列表有三个 0.28\textwidth 列,而不是“三分之一”等于 0.33\textwidth。有没有更美观的选项来制作三个等宽的列,并防止整个东西缩小或离开我的边距?

再次感谢迄今为止的大力帮助

编辑:更新了三列宽度的代码

答案3

  • 我会重新设计一下表格:让最后一列变窄一些。
  • 还有一个建议,如何使用tabularray包来尽量缩短代码。
  • 对于值,我会使用siunitx包。
\documentclass[a4paper,12pt]{article}
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}

\usepackage[skip=0.33\baselineskip]{caption}
\usepackage{ragged2e}
\usepackage{tabularray}
\UseTblrLibrary{siunitx}


\begin{document}
    \begin{table}
\caption{Verortung der Stunde zum Thema Saccharose im Unterricht}
\label{table5}
    \centering
\sisetup{range-phrase={\,--\,}}
\begin{tblr}{hline{1-Y} = solid, hline{Z} = {Z}{solid},
             vline{1,2} = {1-Y}{solid}, vline{3,4} = {1-Z}{solid},
             colspec= {X[2,c]X[2,c,m]X[1,c, m]},
             colsep = 3pt,
             row{1} = {font=\small\itshape\bfseries, c}
             }
Lernbereich
    &   Unterrichtseinheiten
        &   angesetzte Stunden      \\
\SetCell[r=4]{m}  C9-2: Atombau und gekürztes Periodensystem –
                    Vom Kern-Hülle-Modell zum Energiestufenmodell
                    und zum Ordnungsprinzip des gekürzten Periodensystems
    &  Energiestufenmodell: Ionisierungsenergie, Elektronenkonfiguration 
        &  \qtyrange{1}{2}{\hour}    \\
   & \textbf{Profil: Flammenfärbung und Linienspektrum} 
        &  \qtyrange{1}{3}{\hour}    \\
   &    gekürztes Periodensystem: Protonenzahl, Nukleonenzahl, Isotope; Hauptgruppen, Valenzelektronen; Perioden 
        &  \qtyrange{1}{2}{\hour}    \\
    &   Edelgaskonfiguration, Ionenladungszahl von Kationen und Anionen, Edelgasregel 
        &  \qtyrange{1}{2}{\hour}    \\
   &    & $\sum= \qty{9}{\hour}$    \\
\end{tblr}
    \end{table}
\end{document}

在此处输入图片描述

相关内容