【最强文本】一个指令画出个乘法表

昨天,有人在群里发了做的乘法表,潘立强老师给出了一个自己的指令。
表格文本(序列(序列(文本('\color{red}{\fbox{\color{blue}{' + i + '\times' + j + '=' + (i j) + (如果(i j < 10, '\;\;', '')) + '}}}'), i, 1, j), j, 1, 9))
指令略微有点长,但是它一个指令就画出来了乘法表。效果如下。你可以直接复制它到GeoGebra软件输入框中,你也能看到结果。
这里先简单分析下这个长指令中用的指令构成:
表格文本( <列表1>, <列表2>, ... )
序列( <表达式>, <变量>, <起始值>, <终止值> )
文本( <对象>, <点>, <是否替换变量? true|false>, <是否应用 LaTeX 公式? true|false> )
如果( <条件>, <结果>, <否则> )
为了大家能够看的更清楚,我们可以给各个指令涂上色。

表格文本(

序列(
序列(
文本('\color{red}{\fbox{\color{blue}{' + i + '\times' + j + '=' + (i j) + (
如果(i j < 10, '\;\;', '')
) + '}}}')
, i, 1, j)
, j, 1, 9)
)
这就是我们能看到的层次关系,和之前我们的案例比,这个案例中,我们之前从未涉及到的就是文本和表格文本,今天我们就简单介绍下这两个指令。

文本指令

文本( <对象>, <点>, <是否替换变量? true|false>, <是否应用 LaTeX 公式? true|false> )
文本指令其实比较容易理解,
<对象>,是文本的内容。
<点>,是文本显示的位置。
<是否替换变量>,是文本中出现的已有对象是否用数值代替对象名称。
<是否应用LaTeX公式>,这里需要考虑文本是否是由LaTeX公式编辑的,如果是编辑的必须选择true,如果不选择true的话,看不到LaTeX公式的实际效果。
例如:
(1)、文本('1', (0, 0), true, true)
这样就会在(0,0)的位置上出现一个1。
(2)、A=(0,0)  文本(A, A, true, true)
这样就会在A的位置上出现其坐标值,而且A移动的时候,该文本也会跟着移动。
(3)、f=sin(x)  
文本(f(x) = f, (10, 2),true, true)
文本(f(x) = f, (10, 0),false, true)
对比上面两个指令,你会发现<是否替换变量>存在的意义。
(4)、
文本('\sqrt{x}', (10, 0), false, true)
文本('\sqrt{x}', (10, 1), false, false)
对比上面两个指令,你会发现<是否应用 LaTeX 公式>存在的意义。

除了这条最精确的文本指令外,还有四个简化的文本指令:

文本( <对象> )

文本( <对象>, <是否替换变量? true|false> )
文本( <对象>, <点> )
文本( <对象>, <点>, <是否替换变量? true|false> )
1、文本指令中没有设置位置点,默认位置在(0,0)
2、文本指令中没有设置<是否替换变量>,默认替换变量。
3、文本指令中没有设置<是否应用 LaTeX 公式>,默认是不应用。
如  A=(10,0)  文本(A)  文本('\sqrt(2)')

表格文本


表格文本( <列表1>, <列表2>, ... )
表格文本( <列表1>, <列表2>, ..., <对齐方式 'v' #垂直|'h' #水平|'l' #左对齐|'r' #右对齐|'c' #居中|...> )
表格文本指令其实很简单,就是设定几个集合,它给你化成表格。第二条比第一条指令多了表格的对齐方式。如:
1、A={1,2,3,4}   表格文本(A)
得到的表格文本,默认并没有表格,可以在绘图区-样式栏设置。
2、A={1,2,3,4} ,B={4,3,2,1}   表格文本(A,B)
该案例我们会发现,表格文本,如果涉及多个集合的话,是一个集合表示一行,多个集合的元素数量可以不一致。

利用文本、表格文本、序列,我们能不能画出一个乘法表呢?
首先,画一个乘法表,最外面肯定就是表格文本,里面有九个集合。九个集合中每个集合的元素数量还不一样,分别是从1个元素到9个元素。
思考清楚这个之后,我们不妨先做个案例。
画出来一堆点,点的坐标是
(1,1)
(1,2)(2,2)
(1,3)(2,3)(3,3)
……
这里我们就要嵌套序列指令,一个序列的变量是i 表示横坐标,另一个序列的变量是j 一个表示纵坐标。我们会发现i始终是小于等于j的值的。这里也就是说变量i所在的那个序列,设定最大值的时候就是j了。最后得到的就是一个这样的指令
序列(  序列(   (i,j)   ,i,1,j)   ,j,1,9)
这个就是得到的结果。

如果将上面的点的坐标表达式(i,j)修改为一个文本表达式

文本( i + '\times' + j  +'=' + (i j) , (4i,-j), true, true)

我们就能得到一个丑陋的乘法表了。

序列(  序列(  文本( i + '\times' + j  +'=' + (i j) , (4i,-j), true, true) ,i,1,j)   ,j,1,9)

文本(  i + '\times' + j  +'=' + (i j)  , (4i,-j), true, true)

这条指令中的\times 是乘号;然后需要注意,要替换变量的地方不能用双引号,其他文本内容需要双引号引起来,然后用加号连接起来,就是我们的文本内容
(4i,-j)是坐标位置,true1替换变量,因为这里要有i,j两个变量需要替换,true2,表示要执行的是LaTeX 公式,\times就是LaTeX 语言中乘号的写法。

在我们做出来这个的基础上,如果我们在外面加上一个表格文本。
表格文  序列(  序列(  文本( i + '\times' + j  +'=' + (i j) , (4i,-j), true, true) ,i,1,j)   ,j,1,9)   
你会得到一个文本型的乘法表,对比下,第二个更漂亮些了。除此之外,如果是第一个会受到坐标系设置而影响大小,而第二个是不影响的,因为是一个整体了。第一个是每一道题目设置了一个坐标位置。

至此,我们可以给每一个文本增加一个边框(LaTeX语法:\fbox{ 内容 })。这样会更美观。这里需要注意要加边框,必须用大括号括住内容。

表格文本(  序列(  序列(  文本( '\fbox{'+ i + '\times' + j  +'=' + (i j)+'}' , (4i,-j), true, true) ,i,1,j)   ,j,1,9)  

这里,你会发现,当乘积<10的时候,并和成绩大于10的时候表格的宽度不一致。这就是为何要增加一个如果指令的原因。
如果(i j < 10, '\;\;', '')
这条指令的含义就是如果乘积小于10的时候加个空格。
表格文本(  序列(  序列(  文本( '\fbox{'+ i + '\times' + j  +'=' + (i j)  +(如果(i j < 10, '\;\;', '')) +'}' , (4i,-j), true, true) ,i,1,j)   ,j,1,9)   
如果你想要表格边框和文本颜色不一致,那你需要再增加两个LaTeX语法:\color{red}{   }  \color{blue}{}。注意最后括号的顺序。
表格文本(  序列(  序列(  文本( '\color{red}{ \fbox{\color{blue}{'+ i + '\times' + j  +'=' + (i j)  +(如果(i j < 10, '\;\;', '')) +'}}}' , (4i,-j), true, true) ,i,1,j)   ,j,1,9)  )
另外,在使用表格文本时,我们可以把坐标定位、是否应用变量、是否应用LATEX三个参数省略掉。自终版指令就是潘老师的指令:
表格文本(  序列(  序列(  文本( '\color{red}{ \fbox{\color{blue}{'+ i + '\times' + j  +'=' + (i j)  +(如果(i j < 10, '\;\;', '')) +'}}}' ) ,i,1,j)  ,j,1,9)  ) 

假如觉得不需要,不做这个颜色效果的话也可以。设置了颜色的话,样式栏的颜色就不起作用啦。不设置颜色的指令最终版:
表格文本(序列(序列(文本 ('\fbox{'+ i + '\times' + j  +'='+ (i j) +(如果(i j < 10, '\;\;', '')) +'}' ) ,i,1,j)  ,j,1,9)) 
写在最后
GeoGebra的文本支持LATEX。LATEX说到的时候可能很多老师不陌生,但是应该也有很多人会和我一样,一脸懵,这个是啥东西呢?
对文本有特别大需要的老师可以看看段明老师编的《GeoGebra的LaTeX语法》(文件可以去微云、永硕网盘、腾讯课堂下载)或许对你有帮助。
本文重点分析了潘立强老师的案例、在此表示感谢。如果你也想和潘老师及更多大神交流学习,可以加入我们的GeoGebra交流QQ群。
(0)

相关推荐