我正在尝试使用 TikZ 为儿童创建分数图。
有没有一种优雅的方法可以将此图的顶部固定为 1/2,以便当我想显示时可以缩放,比如用三角形表示 29/6... 以及最终显示其他形状?似乎以非 90 度角相交的路径的交叉点并不完全按照我希望的方式相交...
\documentclass{article}
\usepackage{tikz}
\usepackage{xcolor}
\begin{document}
\(\frac{1}{2}\)
\begin{tikzpicture}
\filldraw[fill=gray, draw=black, thick] (0,0)--(1,0)--(1,2)--cycle;
\draw[thick] (1,0)--(2,0)--(1,2)--cycle;
\end{tikzpicture}
\end{document}
答案1
我不确定这是否是你想要的,但看链接的图像,似乎是这样的:我从中借用了一些代码Ignasi's answer
到如何在 TikZ 中绘制三角网格?由于三角形网格是用\node
s 构建的,因此您可以轻松使用它们的锚点进行填充,我将其放置在图层中background
:
代码:
\documentclass[tikz,border=2mm]{standalone}
\usetikzlibrary{shapes,backgrounds}
\newcommand\grid[1]{
\foreach \i [count=\row from 0, remember=\row as \lastrow (initially 0)] in {0,...,#1}
{
\foreach \j [count=\column from 0, remember=\column as \lastcolumn (initially 0)] in {0,...,\i}
{
\ifnum\row=0
\node[tri](0-0) {};
\else
\ifnum\column=0
\node[tri, anchor=north](\row-0) at (\lastrow-0.corner 2) {};
\else
\node[tri, anchor=north](\row-\column) at (\lastrow-\lastcolumn.corner 3) {};
\fi
\fi
}
}
}
\begin{document}
\begin{tikzpicture}[
tri/.style={
draw,
regular polygon,
regular polygon sides=3,
minimum size=2cm,
inner sep=0pt,
outer sep=0pt,
line width=1pt
}
]
\grid{3}
\begin{pgfonlayer}{background}
\filldraw[cyan!30]
(0-0.corner 1) --
(3-3.corner 3) --
(3-0.corner 2) --
cycle;
\end{pgfonlayer}
\begin{scope}[xshift=8cm]
\grid{3}
\begin{pgfonlayer}{background}
\filldraw[cyan!30]
(3-0.corner 1) --
(3-3.corner 1) --
(3-3.corner 3) --
(3-0.corner 2) --
cycle;
\end{pgfonlayer}
\end{scope}
\begin{scope}[yshift=-8cm]
\grid{3}
\begin{pgfonlayer}{background}
\filldraw[cyan!30]
(2-0.corner 1) --
(2-2.corner 1) --
(3-1.corner 3) --
cycle;
\end{pgfonlayer}
\end{scope}
\begin{scope}[xshift=8cm,yshift=-8cm]
\grid{3}
\begin{pgfonlayer}{background}
\filldraw[cyan!30]
(0-0.corner 1) --
(3-1.corner 3) --
(3-0.corner 2) --
cycle;
\end{pgfonlayer}
\draw[line width=1pt]
(0-0.corner 1) -- (3-1.corner 3);
\end{scope}
\end{tikzpicture}
\end{document}
答案2
一种方法是先填充,然后绘制一条路径:
\documentclass[tikz,border=10pt]{standalone}
\begin{document}
\begin{tikzpicture}
\fill [fill=gray] (0,0)--(1,0)--(1,2)--cycle;
\draw[thick] (0,0) -- (1,2) edge (1,0) -- (2,0) -- cycle;
\end{tikzpicture}
\end{document}
什么是edge
?
是一条edge
独立的路径,它可以朝不同的方向延伸,并且可以用与主路径完全不同的选项绘制(或不绘制)。它不会破坏主路径。在这种情况下,edge
垂直线向下绘制,但主路径从顶点继续,就好像没有edge
指定一样。edge
对于复杂的路径尤其有用。它们是在主路径之后构建的。
要查看发生了什么,请按如下方式更改路径规范:
\draw[thick] (0,0) -- (1,2) edge [red] (1,0) -- (2,0) -- cycle;
默认情况下,edge
从主路径继承选项,因此这个是thick
,但与主路径不同的是red
。当然,在上图中,没有指定任何不同的选项,因此edge
也是默认颜色并与主路径混合。