Einrückungsprobleme beim Hervorheben von Zellen mit Tikzmarkin

Einrückungsprobleme beim Hervorheben von Zellen mit Tikzmarkin

Ich versuche, Versatz-/Einrückungsprobleme zu beseitigen, wenn ich Tikzmarkin verwende, um Bereiche einer Tabelle hervorzuheben.

\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}

Beispielsweise wird der Inhalt der ersten markierten Zelle (-0,08) nach links verschoben. Ebenso wird der untere Zelleninhalt der zweiten markierten Zelle nach links verschoben. Wenn Elemente in der ersten Spalte markiert sind, wird der Inhalt jedoch nach rechts verschoben. Gibt es dafür eine Lösung mit den Optionen von Tikz? Danke.

Antwort1

Entfernen Sie das Leerzeichen vor und nach dem Zellinhalt, den Sie hervorheben möchten, also:

Ändere das:

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

dazu:

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

Vollständiger MWE der Lösung:

\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}

Erste

zweite

Antwort2

Da Sie zumindest implizittikzIch schlage die Verwendung von a vor matrix of (math) nodes– siehe Abschnitt 57.1 des tikzHandbuchs.

Auf diese Weise geben Sie Ihre Matrix \matrix {...}wie gewohnt in einen Befehl ein und wenden dann die tikzgewünschte Formatierung „über“ der Tabelle an. Damit dies funktioniert, müssen Sie einen fragileBefehl zumProjektorund markieren Sie einen Eintrag in der Matrix, den Sie |[hl]|in die entsprechende Zelle einfügen. Das Ergebnis ist:

Bildbeschreibung hier eingeben

Hier ist der vollständige Code:

\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}

Einige Anmerkungen:

  • Ich habe row sep=2mm,column sep=2mmden Zeilen- und Spaltenabstand willkürlich festgelegt. Ändern Sie ihn nach Ihrem Geschmack
  • Das nodes in empty cellsist nur notwendig, da (1,1)in der Matrix kein Eintrag vorhanden ist und ich diesen Eintrag verwende um das Blau \hruleunter der Tabellenüberschrift zu zeichnen
  • Wie ich es verwendet habe, matrix of math nodeswird jeder Eintrag im Mathe-Modus gesetzt. Es gibt ein ähnliches, matrix of nodesbei dem die Einträge nicht im Mathe-Modus sind
  • die anchor=eastin der nodes={...}Spezifikation richtet jede Spalte nach "Osten" aus
  • anstatt zu verwenden, \frametitle{...}füge ich lieber den Frame-Titel als Argument zur frameUmgebung hinzu
  • Sie möchten vielleicht etwas inner sep=1mmzum hlStil hinzufügen wie

Antwort3

Wenn keine der oben genannten Antworten für Sie funktioniert, besteht eine „intelligente“ Lösung darin, einfach den Abstand vor den Zellen anzupassen, die Sie nicht hervorheben. Beispiel: $\epsilon$=> { $\epsilon$}. Ziffernklammern verhindern, dass der Compiler den Abstand vor dem Element kürzt.

verwandte Informationen