我怎样才能做到这一点?
我不知道该怎么做。是否可以在 LaTeX 中执行此操作,还是应该使用 GeoGebra 创建图形并将其插入?
答案1
使用 TikZ 和 PGFkeys 有点乐趣。
代码
\documentclass[varwidth]{standalone}
\usepackage{tikz}
\usetikzlibrary{decorations.pathmorphing}
\tikzset{
fromto/.code=\pgfqkeys{/tikz/fromto}{#1}, fromto/.cd,
from/.initial=0, to/.initial=10, min/.initial=0, max/.initial=10,
fromto style/.style={circle, draw, inner sep=+0pt, minimum size=+3pt},
include/.style={/tikz/fromto/fromto style, fill=black},
exclude/.style={/tikz/fromto/fromto style, fill=white},
From/.is choice,
From/in/.style={/tikz/fromto/from style/.style={fromto/include}},
From/ex/.style={/tikz/fromto/from style/.style={fromto/exclude}},
From/no/.style={/tikz/fromto/from style/.style={coordinate, label/.style}},
To/.is choice,
To/in/.style={/tikz/fromto/to style/.style={fromto/fromto style, fromto/include}},
To/ex/.style={/tikz/fromto/to style/.style={fromto/fromto style, fromto/exclude}},
To/no/.style={/tikz/fromto/to style/.style={coordinate, label/.style}},
From=no, To=no,
every fromto picture/.style={x=2.5mm, baseline, >=latex,
every label/.style={overlay, /utils/exec=\scriptsize}},
axes/.style={->},
range/.style={decoration={snake, amplitude=+1pt, segment length=+2pt}, decorate}}
\newcommand*\fromto[1][]{
\tikzpicture[fromto={#1}, fromto/every fromto picture]
\draw[fromto/axes/.try] (right:\pgfkeysvalueof{/tikz/fromto/min}) --
(right:\pgfkeysvalueof{/tikz/fromto/max}) -- ++ (right:10\pgflinewidth);
\draw[fromto/range/.try] (right:\pgfkeysvalueof{/tikz/fromto/from})
-- (right:\pgfkeysvalueof{/tikz/fromto/to})
node[at start, fromto/from style, label=$\pgfkeysvalueof{/tikz/fromto/from}$]{}
node[at end, fromto/to style, label=$\pgfkeysvalueof{/tikz/fromto/to}$]{};
\endtikzpicture}
\begin{document}
\begin{enumerate}
\item \fromto[from=3, From=ex]
\item \fromto[to=7, To=in]
\item \fromto[from=3, From=in, to=6, To=ex]
\item \fromto[min=-5, max=15, from=-3, to=14, From=in, To=ex]
\end{enumerate}
\end{document}
输出
答案2
使用 PSTricks 只是为了好玩!
\documentclass[pstricks,border=15pt]{standalone}
\usepackage{pst-coil}
\psset{coilheight=.4,coilwidth=5pt,coilarm=2.5pt,linejoin=1,arrowinset=0}
\begin{document}
\begin{pspicture}(6,-3)
% x > 3
\psline(0,0)(6,0)
\uput[d](2,0){$3$}
\pszigzag[coilarmB=5pt]{o->}(2,0)(6,0)
% x >= 3
\psline(0,-1)(6,-1)
\uput[d](2,-1){$3$}
\pszigzag[coilarmB=5pt]{*->}(2,-1)(6,-1)
% 2 <= x < 3
\psline(0,-2)(6,-2)
\uput[d](2,-2){$2$}
\uput[d](4,-2){$3$}
\pszigzag{*-o}(2,-2)(4,-2)
% x < 2 or x >=3
\psline(0,-3)(6,-3)
\uput[d](2,-3){$2$}
\uput[d](4,-3){$3$}
\pszigzag[coilarmA=5pt]{<-o}(0,-3)(2,-3)
\pszigzag[coilarmB=5pt]{*->}(4,-3)(6,-3)
\end{pspicture}}
\end{document}
笔记
coilheight
是一个因子(无量纲)。coilwidth
是长度。coilarm
是长度。
它们之间的关联公式如下。
如果代表从到的L
距离,代表绕组数,则(x1,y1)
(x2,y2)
\pszigzag(x1,y1)(x2,y2)
N
coilheight=(L-2*coilarm)/(coilwidth*N)
。
幸运的是,您不需要在上述每种情况下都保持绕组数相等。这就是为什么我们只是让绕组数自动分配。
如果您有兴趣分配绕组数,请参阅我的另一个答案在这里。