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}
Respuesta2
Dado que, al menos implícitamente, estás utilizandotikzSugiero usar un matrix of (math) nodes
- consulte la sección 57.1 del tikz
manual.
De esta manera, ingresa su matriz dentro de un \matrix {...}
comando de la manera habitual y luego aplica cualquier tikz
formato que desee "encima" de la tabla. Para que esto funcione es necesario agregar un fragile
comando alproyectory para resaltar una entrada en la matriz que agrega |[hl]|
a la celda correspondiente. Esto resulta en:
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=2mm
el espaciado entre filas y columnas. Cambia según tus gustos - Solo
nodes in empty cells
es necesario porque no hay ninguna(1,1)
entrada en la matriz y uso esta entrada para dibujar el azul\hrule
debajo del encabezado de la tabla. - Como he usado,
matrix of math nodes
cada entrada está escrita en modo matemático. Hay algo similarmatrix of nodes
donde las entradas no están en modo matemático. - en
anchor=east
lanodes={...}
especificación alinea cada columna hacia el "este" - en lugar de usar,
\frametitle{...}
prefiero agregar el título del marco como argumento alframe
entorno - es posible que desees agregar algo como
inner sep=1mm
alhl
estilo
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.