我想通过绘制小标记符号来解释标题中图形的标记。我在之前的问题中看到你可以用这个tikz
包来做到这一点。
我在用
\usepackage{tikz}
\newcommand{\square}[1]{\tikz{\filldraw[draw=#1,fill=#1] (0,0) rectangle (0.2cm,0.2cm);}}
然后\square{red}
在文本中我想画一个红色正方形。
有人能告诉我如何对圆形和三角形做同样的事情吗?
谢谢
答案1
如果您只是想要相同风格的东西,而不使用有用的节点形状,那么tikz
您可以执行以下操作。我已经更新了代码,因此它也可以在标题中使用,替代方案是\newrobustcmd
从etoolbox
包中使用而不是\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}