在任意位置绘制带有文字的彩色椭圆

在任意位置绘制带有文字的彩色椭圆

我想在投影仪幻灯片上展示关键字。我设想的是带有颜色和文本的椭圆(可能有不同的字体大小)。我想通过指定坐标/大小值在幻灯片上自由定位和调整它们的大小。

有人能提供一个最小示例吗?我认为 tikz 能够做到这一点,但我不知道具体要做什么,也找不到一个能满足我要求的示例。它不需要很漂亮,只要能用就行。

% This does not work for me because I cannot position the ellipses 
% in absolute coordinates on the slide.
\begin{frame}
\begin{tikzpicture}
  \tikz\draw[fill=orange!30!white] at (0,0) ellipse (20pt and 28pt);
  \tikz\draw[fill=orange!60!white] at (1,0) ellipse (28pt and 20pt);
\end{tikzpicture}
\end{frame}

答案1

这需要两次运行才能正确对齐(因为有remember picture 选项)。

该命令\myellipse具有以下语法:第一个可选参数是要传递给可选参数的附加内容 。之后是语法\node中的坐标。和分别被解释为和的倍数。下一个可选参数是要应用于椭圆的颜色。最后,强制参数是椭圆的内容。(x,y)xy\textwidth\textheight

必须在命令后明确设置其周围的空格(使用反斜杠和随后的空格)或在\kern0pt空格后放置一个。这是由于使用了\unskip\ignorespaces

\documentclass[]{beamer}

\usepackage{tikz}
\usetikzlibrary{shapes.geometric}
\tikzset{%
  myellipse/.style={ellipse, draw=#1!70!black, fill=#1!30,inner xsep=0pt}}
\makeatletter
\newcommand*\myellipse{}% check whether it is already defined
\def\myellipse%
  {%
    \@ifnextchar[% ]
      {\myellipse@i}
      {\myellipse@i[]}%
  }
\def\myellipse@i[#1](#2,#3)%
  {%
    \@ifnextchar[% ]
      {\myellipse@ii{#1}{#2}{#3}}
      {\myellipse@ii{#1}{#2}{#3}[orange]}%
  }
\def\myellipse@ii#1#2#3[#4]#5%
  {%
    \unskip
    \begin{tikzpicture}[remember picture,overlay]
      \node[myellipse=#4,xshift=#2\paperwidth,yshift=#3\paperheight,#1]
        at (current page.south west) {#5};%
    \end{tikzpicture}%
    \ignorespaces
  }
\makeatother

\begin{document}

\begin{frame}
  \myellipse[anchor=north east](.4,.4){foo}
  \myellipse(.5,.5)[red]{bar}
  \myellipse(.6,.6)[violet]{baz}
  \myellipse(.7,.7)[blue]{\large size matches the contents}
\end{frame}
\end{document}

在此处输入图片描述

答案2

椭圆形的:

在此处输入图片描述

\documentclass{beamer}
\usepackage{tikz}
\usetikzlibrary{positioning,
                shadows,
                shapes.geometric}

\begin{document}
\begin{frame}[fragile]
\frametitle{Keywords}
    \begin{tikzpicture}[
node distance = 5mm,
     E/.style = {% E as ellipse
    ellipse, draw=#1!70!black, fill=#1!30,
    inner xsep=0pt, drop shadow}
                        ]
\node (n1) [E=orange] {important};
\node (n2) [E=red, right=of n1] {word};
    \end{tikzpicture}
\end{frame}
\end{document}

相关内容