如何绘制正方形、圆形和三角形

如何绘制正方形、圆形和三角形

我想通过绘制小标记符号来解释标题中图形的标记。我在之前的问题中看到你可以用这个tikz包来做到这一点。

我在用

\usepackage{tikz}

\newcommand{\square}[1]{\tikz{\filldraw[draw=#1,fill=#1] (0,0) rectangle (0.2cm,0.2cm);}}

然后\square{red}在文本中我想画一个红色正方形。

有人能告诉我如何对圆形和三角形做同样的事情吗?

谢谢

答案1

如果您只是想要相同风格的东西,而不使用有用的节点形状,那么tikz您可以执行以下操作。我已经更新了代码,因此它也可以在标题中使用,替代方案是\newrobustcmdetoolbox包中使用而不是\newcommand

示例输出

\documentclass{article}

\usepackage{etoolbox}
\usepackage{tikz}

\newrobustcmd*{\square}[1]{\tikz{\filldraw[draw=#1,fill=#1] (0,0)
rectangle (0.2cm,0.2cm);}}

\newrobustcmd*{\mycircle}[1]{\tikz{\filldraw[draw=#1,fill=#1] (0,0) circle [radius=0.1cm];}}

\newrobustcmd*{\mytriangle}[1]{\tikz{\filldraw[draw=#1,fill=#1] (0,0) --
(0.2cm,0) -- (0.1cm,0.2cm);}}

\begin{document}

\listoffigures

\section{Sample}
A square \square{red}, a circle \mycircle{green} and a triangle \mytriangle{blue}.

\begin{figure}[htp]
  \centering
  A figure
  \caption{A square \square{red}, a circle \mycircle{green} and a triangle \mytriangle{blue}.}
\end{figure}

\end{document}

使用节点形状的替代方法如下。虽然有更多选项可供设置,但可以选择更多预定义形状。请参阅pgf 手册

第二个示例

\documentclass{article}

\usepackage{tikz}
\usetikzlibrary{shapes}

\newcommand{\square}[1]{\tikz{\node[draw=#1,fill=#1,rectangle,minimum
width=0.2cm,minimum height=0.2cm,inner sep=0pt] at (0,0) {};}}

\newcommand{\mycircle}[1]{\tikz{\node[draw=#1,fill=#1,circle,minimum
width=0.2cm,minimum height=0.2cm,inner sep=0pt] at (0,0) {};}}

\newcommand{\mytriangle}[1]{\tikz{\node[draw=#1,fill=#1,isosceles
triangle,isosceles triangle stretches,shape border rotate=90,minimum
width=0.2cm,minimum height=0.2cm,inner sep=0pt] at (0,0) {};}}

\begin{document}

A square \square{red}, a circle \mycircle{green} and a triangle \mytriangle{blue}.

\end{document}

答案2

库中有预定义的标记符号plotmarks。以下是一些示例

在此处输入图片描述

代码:

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{plotmarks}
\newcommand\marksymbol[2]{\tikz[#2,scale=1.2]\pgfuseplotmark{#1};}

\begin{document}
\foreach \symb/\col in {square/red,triangle/blue,diamond/green,oplus/blue!50!red}{
  \symb: \marksymbol{\symb}{\col} and \marksymbol{\symb*}{\col}
  \par}
%
circle: \marksymbol{o}{yellow} and \marksymbol{*}{yellow}
\end{document}

编辑

您必须\protect在此命令前面使用内部标题。

在此处输入图片描述

代码:

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{plotmarks}
\newcommand\marksymbol[2]{\tikz[#2,scale=1.2]\pgfuseplotmark{#1};}

\begin{document}
\listoffigures

\section{Symbols}
\begin{figure}[ht]
  \centering \fbox{figure}
  \caption{\protect\marksymbol{heart}{blue} caption}
\end{figure}
\end{document}

如果没有,\listoffigures您可以选择使用空的可选参数\caption

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{plotmarks}
\newcommand\marksymbol[2]{\tikz[#2,scale=1.2]\pgfuseplotmark{#1};}

\begin{document}
\section{Symbols}
\begin{figure}[ht]
  \centering \fbox{figure}
  \caption[]{\marksymbol{heart}{blue} caption}
\end{figure}
\end{document}

或者您可以像@Andrew Swann 在他的回答中所建议的那样使用\newrobustcmd该包。etoolbox

答案3

tikz您可以使用来绘制一个圆圈

\draw[<draw options>] (0,0) circle (1cm);

针对你的情况

\newcommand{\circle}[1]{\tikz{\filldraw[draw=#1,fill=#1] (0,0) circle (0.2cm);}} 

应该可以完成这个工作。

要绘制三角形,你必须定义并连接 3 个点,如以下代码所示

\draw[<draw options>] (0,0) -- (0,2) -- (2,0)-- (0,0);

针对你的情况

\newcommand{\triangle}[1]{\tikz{\filldraw[draw=#1,fill=#1] (0,0) -- (0,.2cm) -- (0.2cm,0) -- (0,0);}}

答案4

由于这些将出现在文本中,我对 Andrew Swann 的方法所做的唯一更改是使圆形、三角形和正方形的大小取决于周围的类型。这可以通过使用 em 作为度量单位来实现:

\documentclass[12pt]{article}

\usepackage{tikz}

\newcommand{\square}[1]{\tikz{\filldraw[draw=#1,fill=#1] (0,0)
rectangle (0.6em,0.6em);}}

\newcommand{\mycircle}[1]{\tikz{\filldraw[draw=#1,fill=#1] (0,0) circle [radius=0.3em];}}

\newcommand{\mytriangle}[1]{\tikz{\filldraw[draw=#1,fill=#1] (0,0) --
(0.6em,0) -- (0.3em,0.6em);}}

\begin{document}

\footnotesize A square \square{red}, \Large a circle \mycircle{green} \Huge and a triangle \mytriangle{blue}.![Circle square rectangle sized.][1]

\end{document}

根据周围文本确定大小的正方形、圆形和三角形。

相关内容