创建WYSIWYG文档编辑器|自然语言编程

2021年5月11日14:29:13 发表评论 1,111 次浏览

当我的大儿子和我写完普通英语编译器时, 我们决定通过添加"随便看什么"文档编辑器来测试其有用性, 然后将其用于记录系统。两只鸟和一块石头!

文件检视

我们称此工具为Writer。这是在Writer中打开说明手册时的样子:

创建WYSIWYG文档编辑器|自然语言编程1

我们称此文档视图为:每页一行。可以在此视图中选择, 复制, 剪切, 粘贴, 复制和打印整页(以及页面组, 连续或不连续)。它们也可以以Adobe PDF格式保存, 因此没有Writer的人们可以阅读它们。

页面预览

当你打开页面时, 你会看到该页面与打印(或另存为PDF页面)时所显示的页面完全相同, 尽管它具有天蓝色的网格线以帮助进行雅致的布局。屏幕上将显示我们的说明手册第8页:

创建WYSIWYG文档编辑器|自然语言编程2

在此视图中, 可以放大, 缩小, 旋转和拼写检查整个页面。并且可以添加, 删除, 移动, 调整大小, 着色, 翻转, 镜像, 旋转, 复制, 剪切, 粘贴, 复制, 分组等各种文本和图形"形状"。Home, End, Page Up和Page Down键可用于方便地翻阅页面, 而无需返回到文档视图。

外部化页面

如上所述, 文档(和文档的一部分)可以另存为PDF。但是永久存储的本机格式要简单得多, 并且仅是文本。例如, 考虑下面的文档, 该文档只有一页, 上面有四种形状:粉红色的椭圆, 绿色的三角形, 蓝色的正方形以及其中带有" ABC"的文本框:

创建WYSIWYG文档编辑器|自然语言编程3

如果你使用我们的"以文本格式打开"命令(或任何其他文本编辑器)打开此文档, 则会看到以下内容:

ream cal-3024
  page 15840 12240 1 1440
    ellipse 0 0 0 0 1000 875 1440 1440 2880 2880
    polygon 0 0 0 1500 1000 875 4 4320 1440 5760 2880 4320 2880 4320 1440
    rectangle 0 0 0 2100 1000 875 7200 1440 8640 2880 0
    text 0 0 0 -1 0 0 10080 1440 14400 2880 0 "title" "osmosian" 1440 "center" 0 0 0 yes
       "ABC"
    end
  end
end

整个文档一个条目, 每个页面一个条目, 页面上每个形状一个条目。而且看不到一个" <"!

在此处粘贴定义整个Writer的4, 000个普通英语句子实在太多了。它们包含在我们系统随附的源代码中www.osmosian.com/cal-4700.zip。现在, 让我们准备一个示例例程:

To group any selected shapes on a page:
If the page is nil, exit.
Create a group shape.
Put "group" into the group shape's kind.
Put the page's scale into the group shape's scale.
Move the page's shapes to some original shapes.
Loop.
Put the original shapes' first into a shape.
If the shape is nil, break.
Remove the shape from the original shapes.
If the shape is not selected, append the shape to the page's shapes; repeat.
Deselect the shape.
Append the shape to the group shape's shapes.
Repeat.  
Append the group shape to the page's shapes.
Select the group shape.
Adjust the group shape.

页面上的形状是从背面绘制的, 因此新分组的形状将显示在页面上其他形状的顶部。

不是玩具

请记住, 这不是"玩具"。正如我上面提到的, 我们使用它来编写系统的文档。从那时起, 它被用于制作800页的插图"教孩子阅读"课程, 你可以在此处查看:www.rhymingreader.com。更不用说其他几本针对儿童的书籍, 大量的培训手册以及各种大小的演示材料。这是我一直以来最喜欢的页面之一, 它是由一位小学老师开发的, 旨在解决一个古老的问题:

创建WYSIWYG文档编辑器|自然语言编程4

QED。


木子山

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: