Problemas de sangría al resaltar celda usando tikzmarkin

Problemas de sangría al resaltar celda usando tikzmarkin

Estoy tratando de eliminar problemas de desplazamiento/sangría cuando uso tikzmarkin para resaltar regiones de una tabla.

\documentclass{beamer}

\RequirePackage{booktabs,colortbl,caption,tabularx,chngcntr, tikz, comment, subfig,xcolor}

\usepackage{lmodern}
\usepackage[beamer,customcolors]{hf-tikz}

\tikzset{hl/.style={
        set fill color=red!80!black!40,
        set border color=red!80!black,
    },
}

\begin{document}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}
    \frametitle{Correlations}
    \vspace{-2em}
    \begin{tabular*}{1.00\textwidth}{@{\hskip\tabcolsep\extracolsep\fill}l*{6}r}
        & $\alpha$ & $ p_L $ & $\kappa$ & $\sigma$ & $\delta$ & $ \lambda $ \\
        [1.5pt]  \hline
        \tikzmarkin<3>[hl]{c1}$\alpha$  \tikzmarkend{c1}                                & \tikzmarkin<1>[hl]{a1} -0.08 \tikzmarkend{a1}   & 0.05    & -0.18    & 0.18     & -0.06    & -0.18       \\ [2pt]
        $ ~p_L $                                   & -0.07    & 0.03    & -0.08    & 0.02     & 0.09     & -0.02       \\ [2pt]
        $\varepsilon$                             & -0.31    & 0.05    & -0.33    & \tikzmarkin<2>[hl]{b1} 0.59     & 0.04     & -0.30       \\ [2pt]
        $\mu$                                     & -0.33    & 0.10    & -0.39    & 0.57 \tikzmarkend{b1}     & 0.07     & -0.40       \\ [2pt]
        $ \frac{\mu}{\varepsilon} $               & 0.23     & -0.06   & 0.47     & -0.39    & 0.24     & 0.49        \\ [2pt]
    \end{tabular*}
\end{frame}
\end{document}

Por ejemplo, el contenido de la primera celda resaltada (-0,08) se desplaza hacia la izquierda. De manera similar, el contenido de las celdas inferiores de las segundas celdas resaltadas se desplaza hacia la izquierda. Sin embargo, cuando se resaltan los elementos de la primera columna, el contenido se desplaza hacia la derecha. ¿Hay alguna solución para esto usando las opciones de tikz? Gracias.

Respuesta1

Elimine el espacio antes y después del contenido de la celda que desea resaltar, es decir:

Cambia esto:

& \tikzmarkin<1>[hl]{a1} -0.08 \tikzmarkend{a1} &

a esto:

&\tikzmarkin<1>[hl]{a1}-0.08\tikzmarkend{a1}&

MWE completo de la solución:

\documentclass{beamer}

\RequirePackage{booktabs,colortbl,caption,tabularx,chngcntr, tikz, comment, subfig,xcolor}

\usepackage{lmodern}
\usepackage[beamer,customcolors]{hf-tikz}

\tikzset{hl/.style={
        set fill color=red!80!black!40,
        set border color=red!80!black,
    },
}

\begin{document}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}
    \frametitle{Correlations}
    \vspace{-2em}
    \begin{tabular*}{1.00\textwidth}{@{\hskip\tabcolsep\extracolsep\fill}l*{6}r}
        & $\alpha$ & $ p_L $ & $\kappa$ & $\sigma$ & $\delta$ & $ \lambda $ \\[1.5pt] \hline
    \tikzmarkin<3>[hl]{c1}$\alpha$\tikzmarkend{c1}& \tikzmarkin<1>[hl]{a1}-0.08\tikzmarkend{a1} & 0.05 & -0.18 & 0.18 & -0.06 & -0.18 \\[2pt]
        $ ~p_L $ & -0.07 & 0.03 & -0.08 & 0.02  & 0.09  & -0.02 \\ [2pt]
        $\varepsilon$ & -0.31 & 0.05  & -0.33 & \tikzmarkin<2>[hl]{b1}0.59 & 0.04 & -0.30 \\[2pt]
        $\mu$ & -0.33 & 0.10 & -0.39 & 0.57\tikzmarkend{b1} & 0.07 & -0.40 \\[2pt]
        $ \frac{\mu}{\varepsilon} $ & 0.23  & -0.06 & 0.47  & -0.39 & 0.24 & 0.49 \\[2pt]
    \end{tabular*}
\end{frame}
\end{document}

primero

segundo

Respuesta2

Dado que, al menos implícitamente, estás utilizandotikzSugiero usar un matrix of (math) nodes- consulte la sección 57.1 del tikzmanual.

De esta manera, ingresa su matriz dentro de un \matrix {...}comando de la manera habitual y luego aplica cualquier tikzformato que desee "encima" de la tabla. Para que esto funcione es necesario agregar un fragilecomando alproyectory para resaltar una entrada en la matriz que agrega |[hl]|a la celda correspondiente. Esto resulta en:

ingrese la descripción de la imagen aquí

Aquí está el código completo:

\documentclass{beamer}

\RequirePackage{booktabs,colortbl,caption,tabularx,chngcntr, tikz, comment, subfig,xcolor}

\usetikzlibrary{matrix}
\usepackage{lmodern}
\usepackage[beamer,customcolors]{hf-tikz}

\tikzset{hl/.style={
        fill=red!80!black!40,
        draw=red!80!black,
        rounded corners
    }
}

\begin{document}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}[fragile]{Correlations}
      \begin{tikzpicture}
        \matrix (M)[matrix of math nodes,nodes in empty cells,
                    row sep=2mm,column sep=2mm,
                    nodes={anchor=east, minimum width=2em, minimum height=2em}
        ]{
                   & \alpha&  p_L & \kappa & \sigma & \delta  & \lambda \\
        \alpha     & |[hl]|-0.08 & 0.05 & -0.18  & 0.18   & -0.06   & -0.18   \\
         ~p_L      & -0.07 & 0.03 & -0.08  & 0.02   & 0.09    & -0.02   \\
        \varepsilon& -0.31 & 0.05 & -0.33  & 0.59   & 0.04    & -0.30   \\
        \mu        & -0.33 & 0.10 & -0.39  & 0.57   &|[hl]| 0.07    & -0.40   \\
         \frac{\mu}{\varepsilon}& 0.23&-0.06& 0.47&-0.39& 0.24  & 0.49  \\
        };
        \draw[thick,blue](M-1-7.south east)--(M-1-1.south west);
     \end{tikzpicture}
\end{frame}

\end{document}

Algunas observaciones:

  • He configurado arbitrariamente row sep=2mm,column sep=2mmel espaciado entre filas y columnas. Cambia según tus gustos
  • Solo nodes in empty cellses necesario porque no hay ninguna (1,1)entrada en la matriz y uso esta entrada para dibujar el azul \hruledebajo del encabezado de la tabla.
  • Como he usado, matrix of math nodescada entrada está escrita en modo matemático. Hay algo similar matrix of nodesdonde las entradas no están en modo matemático.
  • en anchor=eastla nodes={...}especificación alinea cada columna hacia el "este"
  • en lugar de usar, \frametitle{...}prefiero agregar el título del marco como argumento al frameentorno
  • es posible que desees agregar algo como inner sep=1mmal hlestilo

Respuesta3

Si ninguna de las respuestas anteriores le funciona, una salida "inteligente" es simplemente ajustar el espacio delante de las celdas que no resalta. Por ejemplo, $\epsilon$=> { $\epsilon$}. Los corchetes evitarán que el compilador recorte el espacio delante del elemento.

información relacionada