我正在\item
用彩色圆圈制作命令。一个命令需要两种颜色,即两个半圆形成一个圆圈。
我目前有这个,它将两个圆圈叠加在一起:
\documentclass{beamer}
\usepackage{tikz}
\usetikzlibrary{shapes.geometric}
\newcommand*\reditem{\item[{\tikz[baseline=-3]{\node[shape=circle,draw,fill=red,inner sep=4pt] (char) {};}}]}
\newcommand*\redblueitem{\item[{\tikz[baseline=-3]{
\node[shape=semicircle,rotate=90,fill=red,inner sep=3pt](char) {};
\node[shape=semicircle,rotate=270,fill=blue,inner sep=3pt] (char) {};}
}]}
\begin{document}
\begin{frame}
\begin{itemize}
\reditem test red
\redblueitem test redblue
\end{itemize}
\end{frame}
\end{document}
我该如何调整它以形成一个漂亮的双色圆圈?
答案1
您需要使用它们的south
锚点(位于直边的中间)将它们对齐,并设置它们line width=0pt
以使其没有间隙:
\documentclass[11pt]{article}
\usepackage{tikz}
\usetikzlibrary{shapes.geometric}
\begin{document}
\newcommand*\redblueitem{\item[{\tikz[baseline=-3]{
\node[shape=semicircle,rotate=90,fill=red,inner sep=3pt, anchor=south, outer sep=0pt](char) {};
\node[shape=semicircle,rotate=270,fill=blue,inner sep=3pt, anchor=south, outer sep=0pt] (char) {};}
}]}
\begin{itemize}
\redblueitem Test
\end{itemize}
\end{document}
实现此目的的更简单方法可能是使用\path
s 而不是节点。这里有一种方法,我定义了一个包含所需圆半径的宏,因此您可以轻松调整圆的大小:
\documentclass{beamer}
\usepackage{tikz}
\def\rubensradius{4pt}
\newcommand*\reditem{\item[{\tikz [baseline=-0.8*\rubensradius]{\path [fill=red, draw=blue] (0,0) circle [radius=\rubensradius-0.5\pgflinewidth];}}]}
\newcommand*\redblueitem{\item[{\tikz [baseline=-0.8*\rubensradius]{
\path [fill=red] (0,\rubensradius) arc [start angle=90, delta angle=180, radius=\rubensradius];
\path [fill=blue] (0,-\rubensradius) arc [start angle=270, delta angle=180, radius=\rubensradius];
}}]}
\begin{document}
\begin{frame}
\begin{itemize}
\reditem test red
\redblueitem test redblue
\end{itemize}
\end{frame}
\end{document}
答案2
您可以使用calc
tikzlibrary:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{shapes,calc}
\newcommand*\redblueitem{\item[{\tikz[baseline=-3]{
\node[shape=semicircle,rotate=90,fill=red,inner sep=3pt] (char) {};
\node[shape=semicircle,rotate=270,fill=blue,inner sep=3pt] at ($(char)+(6pt,0)$) {};}
}]}
\begin{document}
\begin{itemize}
\redblueitem something
\end{itemize}
\end{document}
或者您可以在最低级别(PGF)工作:
\documentclass{article}
\usepackage{tikz}
\newcommand*\RBitem{\item[{\tikz[baseline=-3]
\def\r{5pt}
\pgfpathmoveto{\pgfpoint{0pt}{0pt}}
\pgfpathlineto{\pgfpoint{0pt}{\r}}
\pgfpatharc{90}{270}{\r}
\pgfsetfillcolor{red}
\pgfusepath{fill}
\pgfpathmoveto{\pgfpoint{0pt}{0pt}}
\pgfpathlineto{\pgfpoint{0pt}{\r}}
\pgfpatharc{90}{-90}{\r}
\pgfsetfillcolor{blue}
\pgfusepath{fill};}]}
\begin{document}
\begin{itemize}
\RBitem something
\end{itemize}
\end{document}
输出“相同”: