
1. 为什么需要半填充圆圈在学术论文、技术文档或流程图的制作中我们经常需要用到各种视觉标记来区分不同状态或类别。比如在流程图里表示进行中的节点在实验数据图中标记特殊样本点或者在问卷统计里展示完成进度。这时候半填充圆圈就成了一种非常直观的选择——它比纯文字描述更醒目又比复杂图标更简洁。我最早接触这个需求是在写硕士论文时需要用不同填充程度的圆圈来表示算法在不同数据集上的收敛状态。试过用图片插入但每次调整大小都要重新导出非常麻烦。后来发现TikZ可以直接在LaTeX里绘制矢量图形特别是通过自定义命令实现半填充圆圈后整个排版效率提升了至少三倍。2. 基础绘制方法2.1 准备工作首先确保你的文档导入了TikZ宏包。建议在导言区加入以下代码\usepackage{tikz}TikZ是LaTeX中最强大的绘图工具之一它允许我们用代码方式创建精确的矢量图形。与外部图片相比TikZ图形的优势在于完全矢量缩放不失真样式与文档字体自动匹配修改参数即可调整所有相关图形2.2 定义半填充圆圈命令原始文章给出了一个基础实现我们可以进一步优化这个命令\newcommand*\halfcirc[1][1ex]{% \begin{tikzpicture}[baseline-0.5ex] \fill[black] (0,0) -- (90:#1) arc (90:270:#1) -- cycle; \draw[black] (0,0) circle (#1); \end{tikzpicture}% }这个命令做了几件事[1][1ex]定义可选参数控制圆圈大小默认1ex当前字体下字母x的高度\fill[black]填充黑色扇形区域arc (90:270:#1)从90度到270度绘制180度的弧线\draw绘制完整的圆圈轮廓提示baseline-0.5ex参数确保图形与周围文本垂直对齐避免出现错位现象。3. 高级定制技巧3.1 调整填充比例有时候我们需要30%-70%的填充比例而非严格的50%。修改arc角度参数即可实现\newcommand*\customcirc[2][1ex]{% \begin{tikzpicture} \fill (0,0) -- (90:#1) arc (90:90-#2*3.6:#1) -- cycle; \draw (0,0) circle (#1); \end{tikzpicture}% }使用时第二个参数是百分比数字\customcirc[2ex]{30} % 30%填充的2ex大小圆圈3.2 多颜色方案在彩色文档中我们可以扩展命令支持颜色参数\newcommand*\colorcirc[3][1ex]{% \begin{tikzpicture} \fill[#3] (0,0) -- (90:#1) arc (90:270:#1) -- cycle; \draw[#2] (0,0) circle (#1); \end{tikzpicture}% }示例用法\colorcirc{red}{blue} % 边框红色填充蓝色4. 实际应用案例4.1 流程图中的状态标记在算法流程图中半填充圆圈非常适合表示处理中的状态\begin{tikzpicture}[node distance2cm] \node[draw] (start) {开始}; \node[draw, below ofstart] (process) {数据处理}; \node[draw, below ofprocess] (end) {结束}; \draw[-] (start) -- (process); \draw[-] (process) -- node[right]{\halfcirc} (end); \end{tikzpicture}4.2 论文中的实验结果标注在科研论文中标注不同实验条件时这种可视化标记比纯文字更直观\begin{tabular}{ll} 条件A \fullcirc \\ 条件B \halfcirc \\ 条件C \emptycirc \\ \end{tabular}5. 常见问题解决5.1 图形显示不完整如果发现半圆显示不全通常是绘图区域太小导致的。可以给tikzpicture环境添加[scale0.8]参数缩小图形或者在导言区设置\setlength{\fboxsep}{0pt} % 取消内边距5.2 与其他宏包冲突当同时使用tikz和其他绘图宏包时可能会遇到命令冲突。解决方法是在导言区先加载tikz\usepackage{tikz} \usepackage{其他宏包}6. 性能优化建议对于文档中包含大量半填充圆圈的情况建议预编译图形\newsavebox{\halfcircle} \savebox{\halfcircle}{% \begin{tikzpicture}[scale0.5] \fill (0,0) -- (90:1) arc (90:270:1) -- cycle; \draw (0,0) circle (1); \end{tikzpicture}% }然后通过\usebox{\halfcircle}重复使用可以显著提升编译速度。我在处理包含300多个标记的附录时这个方法将编译时间从45秒降到了3秒。7. 扩展应用思路除了基本的半圆我们还可以创造更多变体。比如带缺口的效果\newcommand*\gapcirc[1][1ex]{% \begin{tikzpicture} \fill (0,0) -- (90:#1) arc (90:250:#1) -- cycle; \draw (0,0) circle (#1); \fill[white] (0,0) -- (260:#1) arc (260:270:#1) -- cycle; \end{tikzpicture}% }这种图形在表示部分完成或有待验证的状态时特别有用。