Проблемы с отступами при выделении ячеек с помощью tikzmarkin

Проблемы с отступами при выделении ячеек с помощью tikzmarkin

Я пытаюсь устранить проблемы со смещением/отступом при использовании tikzmarkin для выделения областей таблицы.

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

Например, содержимое первой выделенной ячейки (-0,08) смещено влево. Аналогично, содержимое нижней ячейки второй выделенной ячейки смещено влево. Однако, когда элементы в первом столбце выделены, содержимое смещено вправо. Есть ли исправление для этого с использованием опций tikz? Спасибо.

решение1

Удалите пробелы до и после содержимого ячейки, которое вы хотите выделить, например:

Изменить это:

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

к этому:

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

Полное MWE решения:

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

первый

второй

решение2

Поскольку, по крайней мере неявно, вы используететикзЯ предлагаю использовать matrix of (math) nodes-- см. раздел 57.1 руководства tikz.

Таким образом, вы вводите свою матрицу внутри \matrix {...}команды обычным способом, а затем применяете любое tikzформатирование, которое хотите, "сверху" таблицы. Чтобы это заработало, вам нужно добавить fragileкоманду впроектори чтобы выделить запись в матрице, вы добавляете ее |[hl]|в соответствующую ячейку. Это приводит к:

введите описание изображения здесь

Вот полный код:

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

Несколько замечаний:

  • Я произвольно установил row sep=2mm,column sep=2mmинтервал между строками и столбцами. Измените по своему вкусу
  • Это необходимо только потому, что в матрице nodes in empty cellsнет записи, и я использую эту запись, чтобы нарисовать синий цвет под заголовком таблицы.(1,1)\hrule
  • Как я использовал matrix of math nodesкаждая запись набрана в математическом режиме. Есть похожий, matrix of nodesгде записи не в математическом режиме
  • в anchor=eastспецификации nodes={...}выравнивает каждый столбец по направлению «восток»
  • вместо использования \frametitle{...}я предпочитаю добавлять заголовок фрейма в качестве аргумента к frameсреде
  • вы можете захотеть добавить что-то вроде этого inner sep=1mmв hlстиль

решение3

Если ни один из ответов выше вам не подходит, один "умный" выход - просто отрегулировать пространство перед ячейками, которые вы не выделяете. Например, $\epsilon$=> { $\epsilon$}. Фигурные скобки не позволят компилятору обрезать пространство перед элементом.

Связанный контент