我想让文本在最后一列居中,但我不知道该怎么做

我想让文本在最后一列居中,但我不知道该怎么做

所以我有一段代码,来自一个更大的表格,但最后一列的文本不在中心(垂直),也不像其他单元格那样在水平方向上保持相同的距离。我不知道如何修复它。

\documentclass{scrreprt}
\usepackage[showframe,margin=2.5cm]{geometry}
\usepackage{multirow}
\usepackage{amsmath}
\usepackage{graphicx}
\usepackage{array}
\usepackage[ngerman]{babel}
\renewcommand{\arraystretch}{1.5}
\begin{document}
    \newcolumntype{k}[1]{>{\raggedright\arraybackslash}p{#1}}
    \newcolumntype{o}[1]{>{\centering\arraybackslash}p{#1}}
        \begin{tabular}{|k{.25\textwidth}|o{.25\textwidth}|o{.124\textwidth}|o{.245\textwidth}|}
            \multirow{2}{=}{Privatübergäng ohne öffentlichen Verkehr}& bei \(v_E >\)\,\,140km/h:\linebreak tS &\multicolumn{2}{o{.42\textwidth}|}{\multirow{2}{=}{Ü \linebreak oder P + Lf (60km/h)\linebreak oder A + Sprechanlage \linebreak oder A}}\\
            \cline{2-2}
            &bei \(v_E\le\)\,\,140km/h:\linebreak Ü + A\linebreak oder A + Sprechanlage & \multicolumn{2}{c|}{}\\
        \end{tabular}
\end{document}

答案1

\multirow不知道其他单元格的高度,因此如果单元格(如您的示例中的单元格)是多行的,则应给出\multirow要覆盖的行数,而不是单元格数。有时您必须进行一些实验才能获得正确的值。如有必要,您还可以使用小数进行微调。

在这种情况下,使用\multirow{4}而不是\multirow{2}似乎可以给出正确的结果。

答案2

假设您确实需要表格中有 4 列,您可能还会对以下nicematrix基于的方法感兴趣,该方法同时确保表格的宽度与文本宽度完全相同:

在此处输入图片描述

\documentclass{scrreprt}
\usepackage[showframe,margin=2.5cm]{geometry}
\usepackage{nicematrix}
\usepackage{siunitx}
\newcommand{\kmh}{\km\per\hour}
\sisetup{per-mode=symbol}

\begin{document}
\NiceMatrixOptions{cell-space-limits = 3pt}
\noindent
\begin{NiceTabular}{p{0.25\linewidth}
                    p{0.25\linewidth}
                    p{\dimexpr0.25\linewidth-8\tabcolsep-5\arrayrulewidth}
                    p{0.25\linewidth}}[hvlines]
  \Block[l]{2-1}{Privatübergäng ohne\\ öffentlichen Verkehr}
  & bei \(v_E > \qty{140}{\kmh}\):\newline tS 
  & \Block[l]{2-2}{Ü \\ oder P + Lf (\qty{60}{\kmh})\\ oder A + Sprechanlage \\ oder A} &\\
  & bei \(v_E\le \qty{140}{\kmh}\):\newline Ü + A\newline oder A + Sprechanlage & \\
\end{NiceTabular}
\end{document}

相关内容