在 Tikz 矩阵场中定位圆圈

在 Tikz 矩阵场中定位圆圈

从之前的问题中我已经找到了在矩阵场中放置圆的解决方案。

\documentclass[leqno,8pt,fleqn,table]{beamer}
\usepackage{tikz}
\usetikzlibrary{matrix,shadings}

\def\r{0.1}

\tikzset{
    table/.style={
        matrix of nodes,
        row sep=-\pgflinewidth,
        column sep=-\pgflinewidth,
        nodes={
            rectangle,
            draw=black,
            align=center,
                   },
                        %baseline={([yshift=-0.5ex]current bounding box.center)},
        minimum height=1.5em,
        text depth=0.5em,
        text height=1em,
                text centered,
        nodes in empty cells,
%%
                                row 1/.style={
            nodes={
                fill=black,
                text=white,
                %font=\bfseries
            }
        },
                rows/.style={nodes={fill=gray!10}},
                columns/.style={nodes={text width = 10em}},
                %myrowstyle/.style={
                    %row #1/.style={nodes={fill=gray!10}}
        %},
    }
}

\begin{document}
\begin{frame}
\begin{center}
\begin{tiny}
    \begin{tikzpicture}
    \matrix[table, rows={2,...,3}{fill=grey!10}, columns={1,...,5}{text width = 10em}, ampersand replacement=\&] (first)
    { 
        card \# \& date \& 1 \& 2 \& 3 \\
        ghul \& 01.01.2016 \&  \&  \&  \\
};

\fill[left color=green,right color=red] (first-2-3) circle (\r);
\fill[red] (first-2-4) circle (\r);
\fill[red] (first-2-5) circle (\r);

\end{tikzpicture}
\end{tiny}
%\vspace{4mm}
\end{center}
\end{frame}
\end{document}

但是,如果我在字段内添加了其他文本,圆圈将刚好位于文本上方并“覆盖”它。如何将圆圈定位在文本的正前方,例如:“o - Blablablablabla”,其中“o”代表圆圈。

答案1

首先,我认为@cfr 提出了两个非常好的观点(但我不想直接删除你的\def\r观点)。然后,当然你可以把圆圈放在你想要的任何地方。但我必须说,尽管我倾向于(滥用)TiZ 几乎适用于所有事物,值得一提的是,在单色圆圈的情况下,老旧的设计\textbullet效果很好。请看一下。

\documentclass[leqno,8pt,fleqn,table]{beamer}
\usepackage{tikz}
\usetikzlibrary{matrix,shadings}

\def\r{0.1}

\tikzset{
    table/.style={
        matrix of nodes,
        row sep=-\pgflinewidth,
        column sep=-\pgflinewidth,
        nodes={
            rectangle,
            draw=black,
            align=center,
                   },
                        %baseline={([yshift=-0.5ex]current bounding box.center)},
        minimum height=1.5em,
        text depth=0.5em,
        text height=1em,
                text centered,
        nodes in empty cells,
%%
                                row 1/.style={
            nodes={
                fill=black,
                text=white,
                %font=\bfseries
            }
        },
                rows/.style={nodes={fill=gray!10}},
                columns/.style={nodes={text width = 10em}},
                %myrowstyle/.style={
                    %row #1/.style={nodes={fill=gray!10}}
        %},
    }
}

\begin{document}
\begin{frame}
\begin{center}
\begin{tiny}
    \begin{tikzpicture}
    \matrix[table, rows={2,...,3}{fill=grey!10}, columns={1,...,5}{text width = 10em}, ampersand replacement=\&] (first)
    { 
        card \# \& date \& 1 \& 2 \& 3 \\
        ghul \& 01.01.2016 \& xyz \&
        \raisebox{-2pt}{\textcolor{red}{\huge\textbullet}}~abc \&  \\
};

\fill[left color=green,right color=red] ([xshift=3mm]first-2-3.west) circle (\r);
%\fill[red] (first-2-4) circle (\r);
\fill[red] (first-2-5) circle (\r);

\end{tikzpicture}
\end{tiny}
%\vspace{4mm}
\end{center}
\end{frame}
\end{document}

在此处输入图片描述

我也想知道文字大小。是不是因为你不想用“ghul”吓到别人?更严肃地说,当内容可读性好时,人们会更好地接受它们。你花了很大的力气把球做成双色,但你却用小字体把它泄露了。考虑改变这一点。

相关内容