Échelle des accolades de l'environnement des cas sous forme de tableau

Nov 25 2020

Je veux formater un environnement de cas dans une table de telle sorte que les accolades aient un certain décalage par rapport aux lignes horizontales. Par défaut, cette distance est égale à zéro, et si la hauteur de ligne est ajustée à \extrarowheightl' aide des accolades, redimensionnez simplement proportionnellement. Je n'ai pas pu obtenir de meilleurs résultats en utilisant \array.

Quelqu'un a-t-il une idée de la façon de composer cela correctement?

\documentclass[12pt]{article}

\usepackage[a4paper, top = 0.1cm, left = 0.1cm, right = 0.1cm, bottom = 0.1cm, bindingoffset=0cm]{geometry}
\usepackage[utf8]{inputenc}
\usepackage{mathtools}
\usepackage{multirow}

\newcommand{\ROC}{\text{ROC}}

\begin{document}

\begin{tabular}{@{}c|c|c@{}}
    $F(z)$ & $\ROC(f)$ & $f[.]$\\\hline
    \multirow{2}{*}{$\dfrac{z}{z-p}$} & $|z| > |p|$ & $f[k] = \begin{cases}\hphantom{-}0, \quad &k<0\\\hphantom{-}p^k, \quad &k\ge 0\end{cases}$\\\cline{2-3}
    & $0 < |z| < |p|$ & $f[k] = \begin{cases}-p^k, \quad &k<0\\\hphantom{-}0, \quad &k\ge 0\end{cases}$\\\hline 
    \multirow{2}{*}{\shortstack{$\dfrac{Az}{z-p} + \dfrac{\overline{A}z}{z-p}$\\$=2z\dfrac{z\text{Re}(A)-\text{Re}(A\overline{p})}{z^2 - 2z\text{Re}(p)+|p|^2}$}} & $|z| > |p|$ & $f[k] = \begin{cases}\hphantom{-}0, & k<0\\\hphantom{-}2|A||p|^k\cos(\Omega k+\varphi), &k\ge 0 \end{cases}$\\\cline{2-3}
    & $0<|z|<|p|$ & $f[k] = \begin{cases}-2|A||p|^k\cos(\Omega k+\varphi), & k<0\\\hphantom{-} 0, &k\ge 0 \end{cases}$
\end{tabular}

\end{document}

Réponses

10 Zarko Nov 25 2020 at 07:07

Avec l'utilisation de makegapedcellsdéfini dans le makecellpackage:

\documentclass[12pt]{article}
\usepackage[a4paper, margin= .1cm, 
            bindingoffset=0cm]{geometry}
\usepackage{mathtools}
\usepackage{makecell, multirow}

\newcommand{\ROC}{\text{ROC}}

\begin{document}
    \[
\setcellgapes{3pt}
\makegapedcells
\begin{array}{@{}c|c|c@{}}
F(z)    &   \ROC(f)         &   f[.]    \\  
    \hline
\multirow{4.4}{*}{$\dfrac{z}{z-p}$} 
        &   |z| > |p|       &   f[k] = \begin{cases}
                            \hphantom{-}0, \quad    &  k<0   \\
                            \hphantom{-}p^k, \quad  &   k\ge 0
                                    \end{cases} \\
    \cline{2-3}
        &   0 < |z| < |p|   &   f[k] = \begin{cases}
                            -p^k, \quad         &   k<0 \\\
                            \hphantom{-}0, \quad &   k\ge 0
                                        \end{cases} \\
    \hline
\multirow{4.4}{*}{$\begin{aligned} & \dfrac{Az}{z-p} + \dfrac{\overline{A}z}{z-p} \\ & = 2z\dfrac{z\text{Re}(A)-\text{Re}(A\overline{p})} {z^2 - 2z\text{Re}(p)+|p|^2} \end{aligned}$} 
        &   |z| > |p|       &   f[k] = \begin{cases}
                                \hphantom{-}0, & k<0    \\
                                \hphantom{-}2|A||p|^k\cos(\Omega k+\varphi), &  k\ge 0
                                        \end{cases}     \\
    \cline{2-3}
    &   0<|z|<|p|           &   f[k] = \begin{cases}
                            -2|A||p|^k\cos(\Omega k+\varphi),   & k<0\\
                            \hphantom{-} 0,                     &k\ge 0   
                                \end{cases}
\end{array}
    \]
\end{document}

Remarque: avec l'utilisation de l' arrayintérieur de l'environnement mathématique au lieu du tabular, vous pouvez tout omettre $dans le tableau sauf dans les \multirowcellules.

7 LuisTurcio Nov 25 2020 at 07:01

Une possibilité est d'utiliser booktabspackage et de remplacer chaque \hlinepar \midruleet \cline{2-3}par \cmidrule{2-3}comme suit:

\documentclass[12pt]{article}

\usepackage[a4paper, top = 0.1cm, left = 0.1cm, right = 0.1cm, bottom = 0.1cm, bindingoffset=0cm]{geometry}
\usepackage[utf8]{inputenc}
\usepackage{mathtools}
\usepackage{multirow}
\usepackage{booktabs}

\newcommand{\ROC}{\text{ROC}}

\begin{document}

\begin{tabular}{@{}c|c|c@{}}
    $F(z)$ & $\ROC(f)$ & $f[.]$\\\midrule
    \multirow{2}{*}{$\dfrac{z}{z-p}$} & $|z| > |p|$ & $f[k] = \begin{cases}\hphantom{-}0, \quad &k<0\\\hphantom{-}p^k, \quad &k\ge 0\end{cases}$\\\cmidrule{2-3}
    & $0 < |z| < |p|$ & $f[k] = \begin{cases}-p^k, \quad &k<0\\\hphantom{-}0, \quad &k\ge 0\end{cases}$\\\midrule 
    \multirow{2}{*}{\shortstack{$\dfrac{Az}{z-p} + \dfrac{\overline{A}z}{z-p}$\\$=2z\dfrac{z\text{Re}(A)-\text{Re}(A\overline{p})}{z^2 - 2z\text{Re}(p)+|p|^2}$}} & $|z| > |p|$ & $f[k] = \begin{cases}\hphantom{-}0, & k<0\\\hphantom{-}2|A||p|^k\cos(\Omega k+\varphi), &k\ge 0 \end{cases}$\\\cmidrule{2-3}
    & $0<|z|<|p|$ & $f[k] = \begin{cases}-2|A||p|^k\cos(\Omega k+\varphi), & k<0\\\hphantom{-} 0, &k\ge 0 \end{cases}$
\end{tabular}

Cela donne la sortie suivante:

6 Mico Nov 25 2020 at 13:34

Je supprimerais toutes les règles verticales et presque toutes les règles horizontales, alignerais à gauche le contenu des cellules, utiliserais à la arrayplace de tabular, doublerais la valeur de \arraycolsep, et utiliserais la \addlinespacemacro pour créer un espace de type blanc ("espace négatif") entre les lignes. Je nettoierais et rationaliserais également le code LaTeX; par exemple, remplacer \overlinepar \bar, utiliser un alignedenvironnement plutôt qu'une \shortstackdirective, et configurer \ROCet en \Retant qu'opérateurs mathématiques. (Merci beaucoup à @egreg pour avoir suggéré ces derniers changements.)

\documentclass[12pt]{article}

\usepackage[a4paper, margin=5mm, bindingoffset=0cm]{geometry}
% \usepackage[utf8]{inputenc} % is the default
\usepackage[T1]{fontenc}
\usepackage{mathtools} % for '\DeclarePairedDelimiter' macro
\DeclarePairedDelimiter\abs\lvert\rvert
\usepackage{booktabs}

\DeclareMathOperator{\ROC}{ROC}
\renewcommand\Re{\operatorname{Re}}

\begin{document}

\[
\setlength\arraycolsep{10pt} % default: 5pt
\begin{array}{@{} lll @{}}
    F(z) & \ROC(f) & f[k] \\
    \midrule %\hline
    \dfrac{z}{z-p}
    & \abs{z} > \abs{p} 
    & \begin{cases}
             \hphantom{-}0   &\text{if $k<0$}\\
             \hphantom{-}p^k &\text{if $k\ge0$}
             \end{cases} \\
    \addlinespace %\cline{2-3}
    & 0 < \abs{z} < \abs{p} 
    & \begin{cases}
          -p^k          &\text{if $k<0$}\\
          \hphantom{-}0 &\text{if $k\ge0$}
      \end{cases} \\
    \addlinespace[2\defaultaddspace] % \hline 
     \smash[b]{%
         \begin{aligned}[t] &\frac{Az}{z-p} + \frac{\bar{A}z}{z-p} \\ &=2z\frac{z\Re(A)-\Re(A\bar{p})}{z^2 - 2z\Re(p)+\abs{p}^2} \end{aligned}}
    & \abs{z} > \abs{p} 
    & \begin{cases}
             \hphantom{-}0  & \text{if $k<0$}\\
             \hphantom{-}2\abs{A}\abs{p}^k\cos(\Omega k+\varphi) &\text{if $k\ge0$}   
      \end{cases} \\
    \addlinespace % \cline{2-3}
    & 0<\abs{z}<\abs{p} 
    & \begin{cases}
             -2\abs{A}\abs{p}^k\cos(\Omega k+\varphi) & \text{if $k<0$}\\
             \hphantom{-} 0 &\text{if $k\ge0$}   
      \end{cases}
\end{array}
\]

\end{document}
3 F.Pantigny Nov 25 2020 at 18:24

Voici une version avec {NiceArray}de nicematrix.

Ce package fournit deux touches cell-space-top-limitet cell-space-bottom-limit(similaires aux commandes \cellspacetoplimitet \cellspacebottomlimitde cellspace).

\documentclass[12pt]{article}

\usepackage[a4paper, top = 0.1cm, left = 0.1cm, right = 0.1cm, bottom = 0.1cm, bindingoffset=0cm]{geometry}
\usepackage{mathtools}
\usepackage{nicematrix}

\newcommand{\ROC}{\text{ROC}}

\begin{document}

\NiceMatrixOptions{cell-space-top-limit=3pt,cell-space-bottom-limit=3pt}

$\begin{NiceArray}{@{}c|c|c@{}} F(z) & \ROC(f) & f[.]\\ \Hline \Block{2-1}{\dfrac{z}{z-p}} & |z| > |p| & f[k] = \begin{cases}\hphantom{-}0, \quad &k<0\\\hphantom{-}p^k, \quad &k\ge 0\end{cases}\\ \Hline & 0 < |z| < |p| & f[k] = \begin{cases}-p^k, \quad &k<0\\\hphantom{-}0, \quad &k\ge 0\end{cases}\\ \Hline \Block{2-1}{\dfrac{Az}{z-p} + \dfrac{\overline{A}z}{z-p}\\[4mm] =2z\dfrac{z\text{Re}(A)-\text{Re}(A\overline{p})}{z^2 - 2z\text{Re}(p)+|p|^2}} & |z| > |p| & f[k] = \begin{cases}\hphantom{-}0, & k<0\\\hphantom{-}2|A||p|^k\cos(\Omega k+\varphi), &k\ge 0 \end{cases}\\ \Hline & 0<|z|<|p| & f[k] = \begin{cases}-2|A||p|^k\cos(\Omega k+\varphi), & k<0\\\hphantom{-} 0, &k\ge 0 \end{cases} \end{NiceArray}$

\end{document}

Dans votre cas, il y a deux avantages à utiliser nicematrix.

  • La commande \Blockcentrera le contenu dans le centre mathématique des cellules fusionnées (il n'y a pas besoin de réglage manuel comme avec \multirow).

  • Une commande \Hlinedessinera la règle sauf dans les blocs (créés par \Block): c'est plus facile à utiliser que \cline.

Vous avez besoin de plusieurs compilations (car nicematrixutilise des nœuds PGF / Tikz).