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$}
. 그림 대괄호는 컴파일러가 요소 앞의 공백을 자르는 것을 방지합니다.