绘制一个带填充和粗轮廓的六边形

绘制一个带填充和粗轮廓的六边形

我正在通过从以下代码生成六边形哈维·谢泼德

\DeclareDocumentCommand{\hexagon}{O{Black} m m O{}}{
    \fill [#1, #4] ($ (#2) + (0:#3) $) -- ($ (#2) + (60:#3) $) -- ($ (#2) + (120:#3) $) -- ($ (#2) + (180:#3) $) -- ($ (#2) + (240:#3) $) -- ($ (#2) + (300:#3) $) -- cycle;
}

如何给这个六边形添加粗红色轮廓?

答案1

从上下文很难判断您计划如何使用它,但这里有一个\myhex接受两个参数的命令,其中一个是可选的。

\myhex[<redthickness>]{<radius>}

默认redthickness为 1.5mm。

在此处输入图片描述

\documentclass{article}

\usepackage{tikz}

\newcommand{\myhex}[2][1.5mm]{\draw[red, line width=#1,fill=black](0:#2)--(60:#2)--(120:#2)--(180:#2)--(240:#2)--(300:#2)--cycle;}

\begin{document}

\begin{tikzpicture}
\myhex{1cm}\begin{scope}[xshift=2.5cm]\myhex[2mm]{8mm}\end{scope}
\end{tikzpicture}

\end{document}

答案2

我建议使用shapes.geometricfromtikz来实现这一点:

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{shapes.geometric}
\begin{document}
\begin{tikzpicture}
    \node[regular polygon, 
    draw, 
    regular polygon sides = 6, 
    minimum size = 2in,
    fill=black, 
    draw=red,
    line width=6pt,
    ] (p) at (0,0) {};
\end{tikzpicture}
\end{document}

在此处输入图片描述

答案3

如果你可以使用编译你的文档lualatex,那么你也可以使用它元帖子替代方案。该luamplib软件包允许您将 MP 代码作为宏定义的一部分,并可直接访问常用的宏参数。

\documentclass[border=5mm]{standalone}
\usepackage{luamplib}
\newcommand{\rhex}[2][0.5]{\ensuremath{\vcenter{\begin{mplibcode}beginfig(0);
path p; p = for i=0 upto 5: (#2, 0) rotated 60i -- endfor cycle;
fill p withcolor 3/4[red, white]; 
draw p withpen pencircle scaled #1 withcolor 2/3 red;
endfig;\end{mplibcode}}}}
\begin{document}
In normal text: \rhex{5pt}.
Inside maths mode: $\rhex[1]{5pt} + \left(\rhex7\right)^2$
\end{document}

这里我定义了一个可以在文本模式或数学模式下工作的命令。如果你用它编译,lualatex你应该得到如下结果:

在此处输入图片描述

相关内容