personalizzare l’ambiente cases

  • Creatore
    Topic
  • #117881
    mattiaca
    Partecipante
      Up
      0
      Down
      ::


      Ciao a tutti. Come saprete l’ambiente cases permette di scrivere le diverse soluzioni che può avere un’equazione allineando verticalmente la parte sinistra con la parte a destra della equazione disegnando una graffa allungabile. Ha il difetto di non numerare i sottocasi, ma per fare questo c’è il pacchetto cases.
      Che si usi l’ambiente cases di amsmath o il pacchetto cases, non c’è la possibilità di personalizzare i descrittori di colonna né di decidere quanti devono essere gli incolonnamenti della parte “multiriga”. Da questo punto di vista, l’ambiente array o equationarray è più flessibile e maggiormente configurabile: il primo non numera le righe ma è utilizzabile all’interno dell’ambiente equation, il secondo numera le righe, ma non può essere inserito all’interno di un ambiente equation.
      Vi domando se esiste un modo per mettere insieme le due cose ovvero: enumerare le righe come fa il pacchetto cases ed utilizzare i descrittori di colonna come fa equationarray.

      Ecco un esempio minimo compatibile (in tante possibili soluzioni, ma nessuna pienamente soddifacente):

      `
      % !TEX TS-program = pdfLaTeX
      % !TEX encoding = UTF-8 Unicode
      % !TEX spellcheck = it_IT

      \documentclass[11pt,% % corpo del font principale
      a4paper,open right,]{book} % classe report di KOMA-Script;

      \usepackage[T1]{fontenc}
      \usepackage[utf8]{inputenc} %inutile
      \usepackage[english,italian]{babel}

      \usepackage{amsmath} % matematica
      \usepackage{cases}
      \usepackage{eqnarray}
      \usepackage{booktabs}

      \begin{document}

      \begin{numcases}
      {f_\text{m*} = c \,}
      \frac{n+1}{\sum_{k=1}^{n+1} v_k^{-1} + (m -1) \, (v_{n+1}^{-1} – v_1^{-1})}%
      & per $v_n \ge v_{n+1}$ \\
      \addlinespace[1ex]
      \frac{n+1}{\sum_{k=1}^{n+1} v_k^{-1} + (m -1) \, (v_n^{-1} – v_1^{-1})}%
      & per $v_n < v_{n+1} \le v_1$ \\ \addlinespace[1ex] \frac{n+1}{\sum_{k=1}^{n+1} v_k^{-1} + (m -1) \, (v_n^{-1} - v_{n+1}^{-1})}% & per $v_{n+1} > v_1$
      \end{numcases}

      \begin{equation}
      f_\text{m*} = c \, \left\{
      \begin{array} {>{\displaystyle}l @{\quad\text{per}\quad} >{\displaystyle}r @{\,} l}% @{\framebox[\dimexpr\textwidth-][r]{testo a destra}}}
      \frac{n+1}{\sum_{k=1}^{n+1} v_k^{-1} + (m -1) \, (v_{n+1}^{-1} – v_1^{-1})}%
      & v_n \ge v_{n+1} & \\
      \addlinespace[1ex]
      \frac{n+1}{\sum_{k=1}^{n+1} v_k^{-1} + (m -1) \, (v_n^{-1} – v_1^{-1})}%
      & v_n < v_{n+1} &\le v_1 \\ \addlinespace[1ex] \frac{n+1}{\sum_{k=1}^{n+1} v_k^{-1} + (m -1) \, (v_n^{-1} - v_{n+1}^{-1})}% & v_{n+1} &> v_1 \\
      \end{array}
      \right.
      \end{equation}

      \newbox{\stampaequazione}
      \begin{lrbox}{\stampaequazione}
      \(
      f_\text{m*} = c \, \left\{
      \begin{array} {>{\displaystyle}l @{\quad\text{per}\quad} >{\displaystyle}r @{\,} l}% @{\framebox[\dimexpr\textwidth-][r]{testo a destra}}}
      \frac{n+1}{\sum_{k=1}^{n+1} v_k^{-1} + (m -1) \, (v_{n+1}^{-1} – v_1^{-1})}%
      & v_n \ge v_{n+1} & \\
      \addlinespace[1ex]
      \frac{n+1}{\sum_{k=1}^{n+1} v_k^{-1} + (m -1) \, (v_n^{-1} – v_1^{-1})}%
      & v_n < v_{n+1} &\le v_1 \\ \addlinespace[1ex] \frac{n+1}{\sum_{k=1}^{n+1} v_k^{-1} + (m -1) \, (v_n^{-1} - v_{n+1}^{-1})}% & v_{n+1} &> v_1 \\
      \end{array}
      \right.
      \)
      \end{lrbox}

      \begin{equation*}
      f_\text{m*} = c \, \left\{
      \begin{array} {>{\displaystyle}l @{\quad\text{per}\quad} >{\displaystyle}r @{\,} l @{\makebox[\dimexpr\textwidth/2-\wd\stampaequazione/2][r]{\stepcounter{equation}\theequation}}}
      \frac{n+1}{\sum_{k=1}^{n+1} v_k^{-1} + (m -1) \, (v_{n+1}^{-1} – v_1^{-1})}%
      & v_n \ge v_{n+1} & \\
      \addlinespace[1ex]
      \frac{n+1}{\sum_{k=1}^{n+1} v_k^{-1} + (m -1) \, (v_n^{-1} – v_1^{-1})}%
      & v_n < v_{n+1} &\le v_1 \\ \addlinespace[1ex] \frac{n+1}{\sum_{k=1}^{n+1} v_k^{-1} + (m -1) \, (v_n^{-1} - v_{n+1}^{-1})}% & v_{n+1} &> v_1 \\
      \end{array}
      \right.
      %\usebox{\stampaequazione}
      \end{equation*}

      \begin{equation}
      f_\text{m*} = c \, \left\{
      \begin{aligned} %{>{\displaystyle}l @{\quad\text{per}\quad} >{\displaystyle}r @{\,} l}
      \frac{n+1}{\sum_{k=1}^{n+1} v_k^{-1} + (m -1) \, (v_{n+1}^{-1} – v_1^{-1})}%
      &\quad\text{per}& v_n \ge v_{n+1} & \\
      \addlinespace[1ex]
      \frac{n+1}{\sum_{k=1}^{n+1} v_k^{-1} + (m -1) \, (v_n^{-1} – v_1^{-1})}%
      &\quad\text{per}& v_n < v_{n+1} &\le v_1 \\ \addlinespace[1ex] \frac{n+1}{\sum_{k=1}^{n+1} v_k^{-1} + (m -1) \, (v_n^{-1} - v_{n+1}^{-1})}% &\quad\text{per}& v_{n+1} &> v_1 \\
      \end{aligned}
      \right.
      \end{equation}

      \begin{equationarray} {>{\displaystyle}l @{\quad\text{per}\quad} >{\displaystyle}r @{\,} l}% @{\framebox[\dimexpr\textwidth-][r]{testo a destra}}}
      \frac{n+1}{\sum_{k=1}^{n+1} v_k^{-1} + (m -1) \, (v_{n+1}^{-1} – v_1^{-1})}%
      & v_n \ge v_{n+1} & \\
      \addlinespace[1ex]
      \frac{n+1}{\sum_{k=1}^{n+1} v_k^{-1} + (m -1) \, (v_n^{-1} – v_1^{-1})}%
      & v_n < v_{n+1} &\le v_1 \\ \addlinespace[1ex] \frac{n+1}{\sum_{k=1}^{n+1} v_k^{-1} + (m -1) \, (v_n^{-1} - v_{n+1}^{-1})}% & v_{n+1} &> v_1
      \end{equationarray}

      \end{document}

      `

    Visualizzazione 3 filoni di risposte
    • Autore
      Risposte
      • #117882
        OldClaudio
        Partecipante
          Up
          0
          Down
          ::


          Non capisco proprio perché non vuoi usare l’ambiente subequations definito dal pacchetto amsmath. Avresti un numero unico per indirizzare l’intero insieme e una sotto-numerazione letterale per ogni singola riga; con i vari \label e ]ref puoi riferirti all’intero insieme oppure a ogni singola equazione e, credo, otteresst risultati miglioridi quelli che si ottengono con il tuo esempio.

        • #117883
          Up
          0
          Down
          ::


          Userei empheq.

          `
          \documentclass[11pt,a4paper,openright]{book}

          \usepackage{amsmath,empheq}

          \begin{document}

          \begin{empheq}

          {alignat=4}
          &\frac{n+1}{\sum_{k=1}^{n+1} v_k^{-1} + (m -1) (v_{n+1}^{-1} – v_1^{-1})}
          &&\quad\text{per}\quad& v_n &\ge v_{n+1}
          \\[1ex]
          &\frac{n+1}{\sum_{k=1}^{n+1} v_k^{-1} + (m -1) (v_n^{-1} – v_1^{-1})}
          &&\quad\text{per}\quad& v_n &< v_{n+1} &&\le v_1 \\[1ex] &\frac{n+1}{\sum_{k=1}^{n+1} v_k^{-1} + (m -1) (v_n^{-1} - v_{n+1}^{-1})} &&\quad\text{per}\quad& &\mathrel{\phantom{<}} v_{n+1} &&> v_1
          \end{empheq}

          \end{document}
          `

          Ho cambiato l’orrido [tt]_{\text{m*}}[/tt] nel corretto [tt]_{\mathrm{m}^*}[/tt] ed eliminato i [tt]\,[/tt] che non c’entrano nulla.

          [attachment=2410]Screenshot2020-04-27at12.25.29.png[/attachment]

          E perché non evitare le frazioni?
          `
          \documentclass[11pt,a4paper,openright]{book}

          \usepackage{amsmath,empheq}

          \begin{document}

          \begin{empheq}

          {alignat=4}
          &\sum_{k=1}^{n+1} v_k^{-1} + (m -1) (v_{n+1}^{-1} – v_1^{-1})
          &&\quad\text{per}\quad& v_n &\ge v_{n+1}
          \\[2ex]
          &\sum_{k=1}^{n+1} v_k^{-1} + (m -1) (v_n^{-1} – v_1^{-1})
          &&\quad\text{per}\quad& v_n &< v_{n+1} &&\le v_1 \\[2ex] &\sum_{k=1}^{n+1} v_k^{-1} + (m -1) (v_n^{-1} - v_{n+1}^{-1}) &&\quad\text{per}\quad& &\mathrel{\phantom{<}} v_{n+1} &&> v_1
          \end{empheq}

          \end{document}
          `

          [attachment=2411]Screenshot2020-04-27at12.32.12.png[/attachment]

          Ciao
          Enrico

          Attachments:
          You must be logged in to view attached files.
        • #117884
          mattiaca
          Partecipante
            Up
            0
            Down
            ::


            Grazie della dritta. Non riuscivo a uscirne. Ho testato l’esempio e funziona anche all’interno di subequations.

            Ho cambiato l’orrido _{\text{m*}} nel corretto _{\mathrm{m}^*} ed eliminato i \, che non c’entrano nulla.

            Perché è meglio usare \mathrm rispetto a \text?
            Per quanto riguarda gli spazi sottili li metto per indicare la moltiplicazione, perché quando ci sono molti fattori sembra che sia una parola o una unica variabile, invece che una moltiplicazione. Lo so che è sbagliato, ma mi sembrava più chiaro.

          • #117885
            Up
            0
            Down
            ::

            mattiaca” post=118331[…]

            Ho cambiato l’orrido _{\text{m*}} nel corretto _{\mathrm{m}^*} ed eliminato i \, che non c’entrano nulla.

            Perché è meglio usare \mathrm rispetto a \text?

            Prova a includere l’equazione dentro l’enunciato di un teorema: ti va bene quello che succede al simbolo «m»? Non penso…

            mattiaca” post=118331
            Per quanto riguarda gli spazi sottili li metto per indicare la moltiplicazione, perché quando ci sono molti fattori sembra che sia una parola o una unica variabile, invece che una moltiplicazione. Lo so che è sbagliato, ma mi sembrava più chiaro.

            Lascia stare, quello che dici può avere senso in certi casi, ma — fidati — non qui. Nella tua situazione, quello spazietto in più è proprio brutto e, soprattutto, non aiuta affatto la comprensione della formula, ma, anzi, la ostacola.

            Ciao.


            Gustavo

        Visualizzazione 3 filoni di risposte
        • Devi essere connesso per rispondere a questo topic.

        Go to top