对角表格单元格问题

对角表格单元格问题

我的 MWE 改编自如何正确地对角线划分表格单元格?

两个问题:

  1. 我添加了一个经验规则0.71\baselineskip,但是为什么0.71呢?
  2. 为什么c=...没有像下面的文本一样居中?

编辑您可以在这里看到简化和更正的版本:可选参数问题

输出

\documentclass[10pt,french]{article}
\usepackage[T1]{fontenc}
\usepackage{babel}
\usepackage{array}
\usepackage{calc}
\usepackage{tikz,fourier}

\newcommand\diag[5]{%
  \multicolumn{1}{|m{#2}|}{\hskip-\tabcolsep
  $\vcenter{\begin{tikzpicture}[baseline=0,anchor=south west,outer sep=0]
  \path[use as bounding box] (0,0) rectangle (#2+2\tabcolsep,\baselineskip);
  \node[minimum width={#2+2\tabcolsep-\pgflinewidth},
        minimum  height=\baselineskip+#3-\pgflinewidth] (box) {};
  \draw[line cap=round] (box.north west) -- (box.south east);
  \node[anchor=south west,align=left,inner sep=#1] at (box.south west) {#4};
  \node[anchor=north east,align=right,inner sep=#1] at (box.north east) {#5};
 \end{tikzpicture}}\rule{0pt}{.71\baselineskip+#3-\pgflinewidth}$\hskip-\tabcolsep}}

\begin{document}
\begin{tabular}{%
    |>{\centering\arraybackslash}m{4.5cm}
    |*{4}{>{\centering\arraybackslash}m{2.5em}|}}\hline
\diag{\tabcolsep}{4.5cm}{3.4em}{Coefficient\\ de frottement $c$}{Vitesse $V$\\ (en km/h)}&50&90&110&20\\ \hline
$c=0,8$\newline route s\`eche, bitume neuf &&&&\\ \hline
$c=0,7$\newline route s\`eche, bitume moyen &&&&\\ \hline
$c=0,8$\newline route mouill\'ee, bitume moyen &&&&\\ \hline
\end{tabular}
\end{document}

答案1

使用包的解决方案diagbox

\documentclass[10pt,french]{article}
\usepackage[T1]{fontenc}
\usepackage{babel}
\usepackage{array}
\usepackage{diagbox,ragged2e}
\usepackage{fourier}

\begin{document}
\begin{tabular}{%
    |>{\Centering}m{4.5cm}
    |*{4}{>{\Centering}m{2.5em}|}}\hline
\diagbox{\shortstack{Coefficient de\\ frottement $c$}}
        {\shortstack{\vphantom{Ä}Vitesse $V$\\(en km/h)}} & 50 & 90 & 110 & 20 \\ \hline
$c=0,8$\newline route s\`eche, bitume neuf &&&&\\ \hline
$c=0,7$\newline route s\`eche, bitume moyen &&&&\\ \hline
$c=0,8$\newline route mouill\'ee, bitume moyen &&&&\\ \hline
\end{tabular}

\end{document}

在此处输入图片描述

\diag{\tabcolsep}{4.5cm}{0em}....\diag宏集中使用和\rule{4pt}{0.71\baselineskip....},你会看到它是当前行的高度(没有深度)。条目是左对齐和右对齐的,请参阅的可选参数:\nodealign=...将其更改为align=center,它将不再是左/右对齐。

答案2

{NiceTabular}包的环境nicematrix有自己的命令\diagbox来处理这类问题。

\documentclass[10pt,french]{article}
\usepackage[french]{babel}
\usepackage[T1]{fontenc}
\usepackage{nicematrix}
\usepackage{fourier}

\begin{document}

\begin{NiceTabular}{w{c}{4.5cm}*{4}{w{c}{2.5em}}}[hvlines,cell-space-limits=3pt]
\rule{0pt}{1cm}
\diagbox{Coefficient \\ de frottement $c$}
        {Vitesse $V$\\(en km/h)} & 50 & 90 & 110 & 20 \\ 
\Block{}{$c=0,8$\\ route sèche, bitume neuf} \\
\Block{}{$c=0,7$\\ route sèche, bitume moyen} \\
\Block{}{$c=0,8$\\ route mouillée, bitume moyen} \\
\end{NiceTabular}

\end{document}

您需要多次编译(因为nicematrix在后台使用 PGF/Tikz 节点)。

上述代码的输出

相关内容