旋转双色圆圈而不改变宽度或中心

旋转双色圆圈而不改变宽度或中心

我尝试让 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}


 

在这种情况下,lcdchc分别是我的空心圆、实心圆和半实心圆。对于半实心圆,我使用两个圆弧来制作两个相切的半圆。hcb以及hcc我尝试旋转半实心圆,但都没有按我想要的方式格式化。

对于hcb,我更改了圆弧的起点和终点。在这里,圆的边界框随圆一起旋转,因此其他所有内容都向右移动。偏移很小,但足以扰乱布局(如果我改为指定rotate=45填充颜色,我会得到相同的效果)。

对于hcc,我使用transform canvas来旋转半圆,但现在它围绕圆心以外的某个点移动。(我曾尝试使用transform shape,但这根​​本没有导致任何旋转)。

我不确定我是否使用了正确的方式来旋转它们并忘记添加一些参数,或者我是否应该使用完全不同的方式来旋转。

在此处输入图片描述 (在图像中我外部绘制了红色框来说明问题,因为我不知道如何在 tex 中做到这一点)

答案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}

在此处输入图片描述

然后,您可以在文档主体中的宏之间添加空格,或者以其他方式更精确地定位圆圈。

相关内容