我急需构建下面的图像。简而言之,我试图创建该图像的精确复制品,以及具有更多锯齿状斜边的替代图像。
我考虑过在 latex 中使用 for 循环,但由于我经验不足,这很困难。我的初步进展如下所示
\documentclass[10pt,a4paper]{minimal}
\usepackage{tikz,tkz-euclide}
\usepackage{mathtools,amssymb,amsmath}
\begin{document}
\begin{tikzpicture}[scale=4]
\def \a{5}
\tkzDefPoint(0,0){O} \tkzDefPoint(1,0){A} \tkzDefPoint(1,1){B}
\tkzDrawSegments(O,A A,B)
\tkzLabelSegment[below](O,A){1} \tkzLabelSegment[right](A,B){1}
\tkzLabelPoints[below left](O) \tkzLabelPoints[below right](A) \tkzLabelPoints[above right](B)
\foreach \i in {0,...,\a}{
\tkzDrawSegment( ( \i:\a, \i:\a ),( \i:\a,(\i+1):\a ) )}
\end{tikzpicture}
%\tkzDrawSegment( ( \i:\a,(\i+1):\a ),((\i+1):\a,(\i+1):\a))
\end{document}
任何帮助都将不胜感激。我的问题是创建 for 循环。我就是做不对,我认为问题是 latex 将 0/4 和 1/3 评估为符号而不是数字
答案1
我说的是tkz
,但问题出在糟糕的 tikz 语法上。你可以用 来除以数字,/
而不能用:
。然后使用 tkz 或 tikz,有时你需要隐藏(...)
和 分隔符,
。在这里,如果你想在 tkz 的宏中使用坐标(a,b)
和(c,d)
,你需要写
\tkzDrawSegment({a,b},{c,d})
代替
\tkzDrawSegment((a,b),(c,d)) % The parser don't understand in this case.
现在,我认为更容易使用shift
来获得“锯齿状斜边”。与其他答案一样,您可以使用 tikz 绘制锯齿状斜边,或者像我一样使用 tkz。
\documentclass[10pt,a4paper]{minimal}
\usepackage{tikz,tkz-euclide}
\usepackage{mathtools,amssymb,amsmath}
\begin{document}
\begin{tikzpicture}[scale=4]
\def \a{5}
\tkzDefPoint(0,0){O} \tkzDefPoint(1,0){A} \tkzDefPoint(1,1){B}
\tkzDrawSegments(O,A A,B)
\tkzLabelSegment[below](O,A){1} \tkzLabelSegment[right](A,B){1}
\tkzLabelPoints[below left](O) \tkzLabelPoints[below right](A) \tkzLabelPoints[above right](B)
\pgfmathsetmacro{\endl}{\a-1}
\foreach \i in {0,...,\endl}{
\begin{scope}[shift={(\i/\a,\i/\a)}]
\tkzDrawSegment({0,0},{0,1/5})
\tkzDrawSegment({0,1/5},{1/5,1/5})
% or \tkzDrawSegments({0,0},{0,1/5} {0,1/5},{1/5,1/5})
\tkzLabelSegment[left]({0,0},{0,1/5}){$\frac{1}{\a}$}
\end{scope}
}
\end{tikzpicture}
\end{document}
答案2
foreach
我使用宏键时出了点问题(initially 0)
。它卡在第一个点上,所以我必须在循环之前定义它。以下工作不需要过多强调外观。A,B,C
可以轻松添加节点等。
\documentclass{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[scale=3]
\def\lastx{0} % I don't know what the problem is with (initially 0) key
\def\divno{8} % Division number
\pgfmathsetmacro\initpoint{1/\divno}
\pgfmathsetmacro\incr{2/\divno}
\draw (0,0) -| (1,1);
\foreach \x [remember=\x as \lastx ]in {\initpoint,\incr,...,1}{
\draw (\x , \x) -| ( \lastx , \lastx);
\draw[dashed] (\x , \x) -| ( \x ,0);
\draw[dashed] (\x , \x) -- ( 1,\x);
\node[left] at ([yshift=0.25*\incr cm]\lastx,\lastx) {$\frac{1}{\divno}$};
}
\end{tikzpicture}
\end{document}
例如 8 和 5
答案3
我不会说 TkZ,但这是另一个非常简单的 TikZ 实现(请注意,我改变了 x 和 y 长度而不是缩放,因为这通常会产生更好的结果):
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[x=4cm, y=4cm]
\def\steps{5}
\pgfmathsetmacro\stepsize{1/\steps}
\draw (0,0)
node[below] {$A$}
-- node[below] {$1$}
(1,0) node[below right] {$B$}
-- node[right] {$1$}
(1,1) node[right] {$C$};
\foreach \i in {1,2,...,\steps} {
\draw [green!50!black,thick]
({(\i-1)*\stepsize},{(\i-1)*\stepsize})
-- node[left] {\normalcolor$\frac{1}{\steps}$}
({(\i-1)*\stepsize}, {\i*\stepsize})
-- ({\i*\stepsize}, {\i*\stepsize});
}
\pgfmathsetmacro\steps{int(\steps-1)}
\foreach \i in {1,2,...,\steps} {
\draw [green!50!black,dashed]
({\i*\stepsize}, {\i*\stepsize})
edge (1,{\i*\stepsize})
edge ({\i*\stepsize}, 0);
}
\end{tikzpicture}
\end{document}
答案4
这是另一个带有情节的答案
\documentclass[10pt,a4paper]{minimal}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[scale=4]
\draw[color=blue] plot [domain=0:1,samples=6,const plot mark right,mark= ,] (\x,\x) coordinate(end);
\draw (0,0) -| (end);
\end{tikzpicture}
\end{document}