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}
Antwort2
Da Sie zumindest implizittikzIch schlage die Verwendung von a vor matrix of (math) nodes
– siehe Abschnitt 57.1 des tikz
Handbuchs.
Auf diese Weise geben Sie Ihre Matrix \matrix {...}
wie gewohnt in einen Befehl ein und wenden dann die tikz
gewünschte Formatierung „über“ der Tabelle an. Damit dies funktioniert, müssen Sie einen fragile
Befehl zumProjektorund markieren Sie einen Eintrag in der Matrix, den Sie |[hl]|
in die entsprechende Zelle einfügen. Das Ergebnis ist:
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=2mm
den Zeilen- und Spaltenabstand willkürlich festgelegt. Ändern Sie ihn nach Ihrem Geschmack - Das
nodes in empty cells
ist nur notwendig, da(1,1)
in der Matrix kein Eintrag vorhanden ist und ich diesen Eintrag verwende um das Blau\hrule
unter der Tabellenüberschrift zu zeichnen - Wie ich es verwendet habe,
matrix of math nodes
wird jeder Eintrag im Mathe-Modus gesetzt. Es gibt ein ähnliches,matrix of nodes
bei dem die Einträge nicht im Mathe-Modus sind - die
anchor=east
in dernodes={...}
Spezifikation richtet jede Spalte nach "Osten" aus - anstatt zu verwenden,
\frametitle{...}
füge ich lieber den Frame-Titel als Argument zurframe
Umgebung hinzu - Sie möchten vielleicht etwas
inner sep=1mm
zumhl
Stil 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.