Matrici con annotazioni esterne e sfondo in parte colorato

  • Creatore
    Topic
  • #85599
    mcl1962
    Partecipante
      Up
      0
      Down
      ::


      Avrei bisogno di costruire delle matrici delimitate da parentesi tonde con all’esterno un’annotazione per righe e colonne (vedi per esempio qui), ed avere la possibilità di colorare lo sfondo di intere righe e/o colonne (vedi per esempio qui).
      Purtroppo non sono in grado di combinare le due soluzioni trovate.
      Vi ringrazio per l’aiuto.

      Claudio

    Visualizzazione 3 filoni di risposte
    • Autore
      Risposte
      • #85600
        Up
        0
        Down
        ::

        mcl1962″ post=85052Avrei bisogno di costruire delle matrici delimitate da parentesi tonde con all’esterno un’annotazione per righe e colonne (vedi per esempio qui), ed avere la possibilità di colorare lo sfondo di intere righe e/o colonne (vedi per esempio qui).
        Purtroppo non sono in grado di combinare le due soluzioni trovate.
        Vi ringrazio per l’aiuto.

        Claudio

        Soluzione con blkarray+hf-tikz: `
        \documentclass{article}
        \usepackage{amsmath}
        \usepackage{blkarray}
        \usepackage[customcolors]{hf-tikz}% versione richiesta 0.3

        \tikzset{offset def/.style={
        above left offset={-0.05,0.3},
        below right offset={0.05,-0.1},
        },
        row/.style={
        offset def,% lo stile row eredita e applica gli offset definiti prima
        set fill color=green!50!lime!60,
        set border color=green!40!black,
        },
        col/.style={
        offset def,% lo stile col eredita e applica gli offset definiti prima
        set fill color=blue!20!cyan!60,
        set border color=blue!60!cyan,
        },
        }

        \begin{document}

        \[
        \begin{blockarray}{cccccc}
        a & b & c & d & e \\
        \begin{block}{(ccccc)c}
        1 & \tikzmarkin[col]{a}1 & 1 & 1 & 1 & f \\
        0 & 1 & 0 & 0 & 1 & g \\
        \tikzmarkin[row]{b}0 & 0 & 1 & 0 & 1\tikzmarkend{b} & h \\
        0 & 0 & 0 & 1 & 1 & i \\
        0 & 0\tikzmarkend{a} & 0 & 0 & 1 & j \\
        \end{block}
        \end{blockarray}
        \]

        \end{document}
        ` Per qualche esempio ulteriore su come impostare stili con hf-tikz, puoi vedere qui.

        Ciao
        Claudio

      • #85601
        mcl1962
        Partecipante
          Up
          0
          Down
          ::


          Grazie Claudio, è proprio quello che mi serviva!
          Bisogna che prima o poi io studi tikz!

          Se posso approfittare ancora delle tue conoscenze:
          1) è possibile impostare globalmente `disable rounded corners=true`?
          2) se volessi mostrare che cancello righe o colonne della matrice con una linea colorata di un dato spessore, è possibile farlo?
          Di nuovo grazie.
          Ciao.

          Claudio

        • #85602
          Up
          0
          Down
          ::

          mcl1962″ post=85058Grazie Claudio, è proprio quello che mi serviva!
          Bisogna che prima o poi io studi tikz!

          Se posso approfittare ancora delle tue conoscenze:
          1) è possibile impostare globalmente `disable rounded corners=true`?

          Assolutamente si: c’è l’opzione [tt]norndcorners[/tt] da passare quando si carica il pacchetto.

          mcl1962″ post=85058
          2) se volessi mostrare che cancello righe o colonne della matrice con una linea colorata di un dato spessore, è possibile farlo?

          Si anche in questo caso è possibile e usare la [tt]tikzmark[/tt] macro viene naturale. Un esempio: `
          \documentclass{article}
          \usepackage{amsmath}
          \usepackage{blkarray}
          \usepackage[customcolors]{hf-tikz}% versione richiesta 0.3

          \tikzset{offset def/.style={
          above left offset={-0.05,0.3},
          below right offset={0.05,-0.1},
          },
          row/.style={
          offset def,% lo stile row eredita e applica gli offset definiti prima
          set fill color=green!50!lime!60,
          set border color=green!40!black,
          },
          col/.style={
          offset def,% lo stile col eredita e applica gli offset definiti prima
          set fill color=blue!20!cyan!60,
          set border color=blue!60!cyan,
          },
          }

          \newcommand{\tikzmark}[1]{\tikz[remember picture,overlay]\node[coordinate](#1){};}

          \newcommand{\cancelrow}[3][]{%
          \tikz[remember picture,overlay]\draw[red,thick,#1]
          ([yshift=0.5ex]#2)–([yshift=0.5ex]#3);
          }

          \newcommand{\cancelcol}[3][red,thick]{%
          \tikz[remember picture,overlay]\draw[#1]
          ([yshift=1ex,xshift=0.25em]#2)–([xshift=0.25em]#3);
          }

          \begin{document}

          \[
          \begin{blockarray}{cccccc}
          a & b & c & d & e \\
          \begin{block}{(ccccc)c}
          1 & \tikzmark{a}1 & 1 & 1 & 1 & f \\
          0 & 1 & 0 & 0 & 1 & g \\
          \tikzmark{c}0 & 0 & 1 & 0 & 1\tikzmark{d} & h \\
          0 & 0 & 0 & 1 & 1 & i \\
          0 & \tikzmark{b}0 & 0 & 0 & 1 & j \\
          \end{block}
          \cancelcol{a}{b}
          \cancelrow[ultra thick]{c}{d}% cambiato lo spessore
          \end{blockarray}
          \]

          \end{document}
          ` La cancellazione sulle colonne fa un po’ schifo, ma pazienza: con l’1 poco altro si può fare. Ricordati di compilare due volte e, a differenza di quando si evidenzia, di mettere i marcatori sulle colonne dalla stessa parte (quando evidenzi il primo va a sinistra del numero e il secondo a destra).

          Ciao
          Claudio

        • #85603
          mcl1962
          Partecipante
            Up
            0
            Down
            ::


            Ti ringrazio nuovamente per l’aiuto.
            Effettivamente cancellare gli “1” nelle colonne non è il massimo, ma non vedrei cos’altro si possa fare. Fortunatamente le mie matrici contengono solo “0” e “1” e devo cancellare unicamente colonne che hanno un solo “1”, dunque la tua soluzione va benissimo.
            Ciao.

            Claudio

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

        Go to top