我有这个代码:
\documentclass{standalone}
\usepackage[html]{xcolor}
\usepackage{tikz}
\definecolor{verda}{HTML}{009900}
\definecolor{blanka}{HTML}{FFFFFF}
\begin{document}
\begin{tikzpicture}
\fill[verda] (0,0) rectangle (20,13);
\fill[blanka] (0,13) rectangle (6.6,6.6);
\end{tikzpicture}
\end{document}
该标志应如下所示:
问题:绿色星星。问候!
答案1
测量
这英文维基百科条目说:
旗帜的宽度与旗帜的高度与白色正方形的边长之比应为 3 比 2 比 1。白色正方形的边长与星星所在圆的半径之比应为 10 比 3.5。
如果旗帜的宽度为 3 个单位,则外接圆的直径为 0.7 个单位。
使用以下测量值进行绘图图像:Esperanta Flago Proporcioj.PNG:
颜色
这德语维基百科文章关于颜色:
绿松石的 CMYK 颜色值为 79%、22%、99%、5%(代表 PANTONE 363 C)。
然后可以按以下方式定义颜色:
\definecolor{EsperantoGreen}{cmyk}{.79,.22,.99,.05}
但是,那世界语维基百科文章列出了很多颜色,可以用 HTML 颜色模型定义:
\documentclass{standalone}
\usepackage{booktabs}
\usepackage{siunitx}
\usepackage{xcolor}
\def\x#1{%
\color[HTML]{#1}\rule{1.5em}{1em} & \ttfamily #1\\%
}
\begin{document}
\begin{tabular}{rl}
\toprule
Sample & Color (HTML) \\
\midrule
\x{009900}
\x{007D13}
\x{37A93A}
\x{2C693F}
\x{CCE82E}
\x{008000}
\x{1B9332}
\x{158A44}
\x{009F6B}
\midrule
\color[cmyk]{.72,.22,.99,.05}\rule{1.5em}{1em} &
CMYK(%
\SIlist[list-units=repeat, list-final-separator={,}]
{72;22;99;05}{\percent})\\
\bottomrule
\end{tabular}
\end{document}
星星
绘制星星的方法有多种:
星形的外部点可用作五边形正多边形的角点。然后填充路径将角与下一个角连接起来,例如:
\fill[EsperantoGreen] (.5cm, 1.5cm) node[ regular polygon, regular polygon sides=5,% default inner sep=0pt, minimum size=0.7cm, ] (star) {} (star.corner 1) \foreach \i in {1, 3, 5, 2, 4} { -- (star.corner \i) } -- cycle ;
如果配置正确,节点形状
star
已经具有正确的形状。选项minimum size
指定外圆的直径,为 0.7 个单位。内圆的直径也很重要,因为它会影响侧面的斜率。内半径可以通过两个选项间接指定:star point height
:外半径和内半径之间的差异或star point ratio
:外半径与内半径之比。查看一些三角形、计算角度并进行一些三角学计算后,得出的比率是 sin(126)/sin(18) = (3 - sqrt(5))/2。\path (.5, 1.5) node[ fill=EsperantoGreen, star, star point ratio=sin(126)/sin(18), minimum size=0.7cm ] {};
可以在极坐标系中轻松指定角。
通过节点实现的标志
可以通过设置单位寄存器来缩放标志\EsperantoUnit
。
\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{shapes.geometric}
\definecolor{EsperantoGreen}{HTML}{009900}
\newdimen\EsperantoUnit
\setlength{\EsperantoUnit}{40mm}
\begin{document}
\tikz\path[
inner sep=0pt,
every node/.append style={node contents={}},
x=\EsperantoUnit,
y=\EsperantoUnit,
]
(1.5, 1) node[
fill=EsperantoGreen,
rectangle,
minimum width=3\EsperantoUnit,
minimum height=2\EsperantoUnit,
]
(.5, 1.5) node[
fill=white,
rectangle,
minimum width=\EsperantoUnit,
minimum height=\EsperantoUnit,
]
node[
fill=EsperantoGreen,
star,
star point ratio=sin(126)/sin(18),
minimum size=0.7\EsperantoUnit,
]
;
\end{document}
带星号的旗帜,通过极坐标填充
这里,可以通过选项缩放标志scale
。
\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{backgrounds}
\definecolor{EsperantoGreen}{HTML}{009900}
\begin{document}
\tikz[
background rectangle={fill=white},
fill=EsperantoGreen,
scale=4,
]\fill
(0, 0) -- (3, 0) -- (3, 2) -- (1, 2) -- (1, 1) -- (0, 1) -- cycle
(.5, 1.5)
+(0, .35) \foreach \i in {1, ..., 4} { -- +(90+\i*144:.35)} -- cycle
;
\end{document}
通过 SVG 文件标记
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" width="600" height="400">
<path fill="#FFF" d="m0,0h202v202H0"/>
<path fill="#090" d="m0,200H200V0H600V400H0m58-243 41-126 41,126-107-78h133"/>
</svg>
这可以直接映射到 TikZ,因为 TikZ 的库svg.path
支持 SVG 路径规范:
\documentclass[tikz]{standalone}
\usetikzlibrary{svg.path}
\definecolor{EsperantoGreen}{HTML}{009900}
\begin{document}
\begin{tikzpicture}[
yscale=-1,
svg scale/.style={scale=.2mm},
]
\fill[white]
svg[svg scale] {m0,0h202v202H0};
\fill[EsperantoGreen]
svg[svg scale] {m0,200H200V0H600V400H0m58-243 41-126 41,126-107-78h133};
\end{tikzpicture}
\end{document}
答案2
这相当接近。使用 进行缩放scale
可以工作,但更改x
和y
单位向量将不起作用,因为星形的大小以厘米为单位定义。
根据https://en.wikipedia.org/wiki/Esperanto_symbols星星半径与白色正方形边长之比应为 3.5/10。minimum size
我将其按 7/10 缩放以定义直径。
\documentclass[border=5mm]{standalone}
\usepackage[html]{xcolor}
\usepackage{tikz}
\usetikzlibrary{shapes}
\definecolor{verda}{HTML}{009900}
\definecolor{blanka}{HTML}{FFFFFF}
\begin{document}
\begin{tikzpicture}
\fill[verda] (0,0) rectangle (20,13);
\fill[blanka] (0,13) rectangle (6.6,6.6);
\node at (3.3,9.7) [transform shape,star,star point height=1.53cm,fill=verda,minimum size=6.6cm*7.5/10] {};
\end{tikzpicture}
\end{document}
答案3
以下是l3draw
基于@Heiko Oberdiek 提供的构造表的标志的实现:
\documentclass[border=10pt]{standalone}
\usepackage{l3draw}
\begin{document}
\ExplSyntaxOn
\draw_begin:
\color_fill:n { white }
\draw_path_rectangle_corners:nn { 0cm , 10cm } { 10cm , 20cm }
\draw_path_use_clear:n { fill }
\color_fill:nn { cmyk } { .79 , .22 , .99 , .05 }
\draw_path_moveto:n { 0cm , 10cm }
\draw_path_lineto:n { 10cm , 10cm }
\draw_path_lineto:n { 10cm , 20cm }
\draw_path_lineto:n { 30cm , 20cm }
\draw_path_lineto:n { 30cm , 0cm }
\draw_path_lineto:n { 0cm , 0cm }
\draw_path_close:
\draw_path_use_clear:n { fill }
\draw_scope_begin:
\draw_transform_shift:n { 5cm , 15cm }
\draw_path_moveto:n { \draw_point_polar:nn { 3.5cm } { 90 } }
\int_step_inline:nnnn { 72 } { 72 } { 360 } {
\draw_path_lineto:n
{ \draw_point_polar:nn { 2 / ( 3 + sqrt(5) ) * 3.5cm } { 90 + #1 - 36 } }
\int_compare:nNnF { #1 } = { 360 } {
\draw_path_lineto:n { \draw_point_polar:nn { 3.5cm } { 90 + #1 } }
}
}
\draw_path_close:
\draw_path_use_clear:n { fill }
\draw_scope_end:
\color_stroke:n { black }
\draw_path_rectangle_corners:nn { 0cm , 0cm } { 30cm , 20cm }
\draw_path_use_clear:n { stroke }
\draw_end:
\ExplSyntaxOff
\end{document}