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