我尝试让 5 个圆圈连续填充深灰色、浅灰色或半填充(以在简历上显示技能水平)。只要我使用 90 度(倍数)的旋转,这一切都会正常工作,但如果我在中间使用其他旋转,就会发生不同的情况。
编辑:我更新了代码,使其独立
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{tikz}
\newcommand{\lc}{\tikz\draw[lightgray,fill=lightgray] (0,0) circle (.8ex); }
\newcommand{\dc}{\tikz\draw[darkgray,fill=darkgray] (0,0) circle (.8ex); }
\def\AngleA{0}
\newcommand{\hc}{\begin{tikzpicture}
\draw [lightgray, fill=lightgray] (0,0) coordinate (a) arc (\AngleA+90:\AngleA-90:.8ex) ;
\draw [darkgray, fill=darkgray] (a) arc (\AngleA+90:\AngleA+270:.8ex) ;
\end{tikzpicture}
}
\def\AngleB{45}
\newcommand{\hcb}{\begin{tikzpicture}
\draw [lightgray, fill=lightgray] (0,0) coordinate (a) arc (\AngleB+90:\AngleB-90:.8ex) ;
\draw [darkgray, fill=darkgray] (a) arc (\AngleB+90:\AngleB+270:.8ex) ;
\end{tikzpicture}
}
\def\Rotation{45}
\newcommand{\hcc}{\begin{tikzpicture}
\draw [lightgray, fill=lightgray, transform canvas={rotate=\Rotation}] (0,0) coordinate (a) arc (90:-90:.8ex) ;
\draw [darkgray, fill=darkgray, transform canvas={rotate=\Rotation}] (a) arc (90:270:.8ex);
{\rotate{45}}
\end{tikzpicture}
}
\begin{document}
aligning circles\newline
\dc\dc\hc\lc\lc hc\newline
\dc\dc\hcb\lc\lc hcb\newline
\dc\dc\hcc\lc\lc hcc
\end{document}
在这种情况下,lc
、dc
和hc
分别是我的空心圆、实心圆和半实心圆。对于半实心圆,我使用两个圆弧来制作两个相切的半圆。hcb
以及hcc
我尝试旋转半实心圆,但都没有按我想要的方式格式化。
对于hcb
,我更改了圆弧的起点和终点。在这里,圆的边界框随圆一起旋转,因此其他所有内容都向右移动。偏移很小,但足以扰乱布局(如果我改为指定rotate=45
填充颜色,我会得到相同的效果)。
对于hcc
,我使用transform canvas
来旋转半圆,但现在它围绕圆心以外的某个点移动。(我曾尝试使用transform shape
,但这根本没有导致任何旋转)。
我不确定我是否使用了正确的方式来旋转它们并忘记添加一些参数,或者我是否应该使用完全不同的方式来旋转。
答案1
欢迎使用 TeX.SX!我可能会对baseline
所有内联tikz
宏使用该选项以确保正确放置,然后执行以下操作:
\documentclass{article}
\usepackage{tikz}
\newcommand{\lc}{\tikz[baseline=-.8ex]\draw[lightgray,fill=lightgray] (0,0) circle (.8ex); }
\newcommand{\dc}{\tikz[baseline=-.8ex]\draw[darkgray,fill=darkgray] (0,0) circle (.8ex); }
\newcommand{\hc}[1][0]{\begin{tikzpicture}[baseline=-.8ex]
\draw[lightgray,fill=lightgray] (0,0) circle (.8ex);
\draw[darkgray,fill=darkgray,rotate=#1] (0,0) -- (0,.8ex) arc (90:270:.8ex) -- cycle;
\end{tikzpicture}
}
\begin{document}
\dc\hc\hc[45]\lc\lc ABC
\end{document}
编辑
由于您的问题似乎不仅是垂直对齐,而且还有水平对齐,因此我建议您将选项添加clip
到第一个\draw
宏中,用于半填充圆。如果这样做,您就无法再将颜色规范添加到\draw
宏中,但您可以将其添加到\tikzpicture
设置lightgray
(或您的浅灰色实际上是什么)作为默认颜色。此外,如果您从所有三个宏中删除任何空格,也会有所帮助:
\documentclass{article}
\usepackage{tikz}
\newcommand{\lc}{\tikz[baseline=-.8ex]\draw[lightgray,fill=lightgray] (0,0) circle (.8ex);}
\newcommand{\dc}{\tikz[baseline=-.8ex]\draw[darkgray,fill=darkgray] (0,0) circle (.8ex);}
\newcommand{\hc}[1][0]{%
\begin{tikzpicture}[baseline=-.8ex,lightgray]
\draw[clip,fill] (0,0) circle (.8ex);
\draw[darkgray,fill=darkgray,rotate=#1] (0,0) -- (0,.8ex) arc (90:270:.8ex) -- cycle;
\end{tikzpicture}%
}
\begin{document}
\dc\hc\hc[45]\lc\lc ABC
\end{document}
然后,您可以在文档主体中的宏之间添加空格,或者以其他方式更精确地定位圆圈。