PageByPage: An application to view & edit plain text file. 作者：马健 邮箱：stronghorse_mj@hotmail.com 主页：老马的原创空间 FAQ 使用说明 一、软件安装/删除 二、软件使用 1、阅读模式 2、编辑模式 3、公共操作 附录A 鸣谢 附录B 版本更新记录 # FAQ Q：PageByPage是什么？ A：这是一个专门针对文本版小说的阅读器兼编辑器，具有下列特点： 提供分页阅读模式，模拟实体书籍的显示界面与翻页动画，能够设置桌面、封面、页面的图案或颜色，能够设置字体、字号、文字颜色、行距、下划线等。 提供文字编辑模式，包括常用编辑功能，如多级undo/redo、剪切、复制、粘贴、删除、查找、替换等。 分页阅读是既支持横排显示，也支持竖排显示。竖排时阅读顺序是从右往左。 能够通过自动恢复、书签等功能记忆阅读位置，一次看不完下次接着看。 能够按照一定的查询条件搜索全文，生成章节列表，便于跳转、定位。 提供书库管理、老板键等常用功能。 Q：已经有MyReader等阅读器，为什么还要开发PageByPage？ A：秒开，我只想要秒开。如果非要加一个限制，我希望10 MB以内的文件都能秒开。 我经常从网上下载小说，下载后一般先打开，拖着滚动条前后看一下，如果不合口味就直接删除，以免浪费硬盘和时间。MyReader、记事本等打开大文件太慢了，其他阅读器也有各种各样的问题，所以就综合百家之长，搞了这么一个东东。 PageByPage说白了就是个大杂烩，参考了很多其他软件，如翻页效果就参考了DesktopAuthor等，其实在SpecEffect里还有一些动画效果，不过我觉得爆炸、马赛克、百叶窗等 花里胡哨的效果和看书实在不搭调，所以就没搬过来。 Q：PageByPage有什么限制？ A：有下列限制： 章节列表最多4096项，每项30个字符，多了没有。 内部处理很多情况下都是针对简体中文，因此只适合阅读简体中文，也不会发行除简体中文之外的其他语言版本。 支持ANSI、Unicode、utf-8编码的文本文件。Unicode编码的文件必须以FE FF或FF FE开头；utf-8文件以EF BB BF开头，也可以没有文件头。在不以EF BB BF开头的情况下，自动识别是否是utf-8编码的方法是从Windows 2000的记事本学来的，所以识别的准确性与它差不多。 仅支持双字节Unicode字符，不支持3字节扩展Unicode字符。再说一次，我看的是小说，不是《康熙字典》。 文本文件长度在20 MB以内应该没有问题，再大就不好说了。现在我也没有见过超过20 MB的小说。 Q：为什么不支持全屏模式？ A：全屏会引起显示区域的变化，需要重新分页，来回切换时很难保证阅读位置一致。 Q：为什么不支持自动排版？ A：从做TextForever的经验看，我相信适用于所有书籍的自动排版功能是不存在的，总要人工干预一下才行。所以我看书的流程是：先用PageByPage快速看一下值得不值得看下去，看不下去的自然就删掉，看得下去的就用TextForever重新排一下，然后复制到MP4、手机等设备中，因地制宜用不同的设备或电脑看。因为这些手持设备中的浏览器不一定有排版功能，所以手动排版是免不了的，这种情况下PageByPage也就没有必要再多此一举。 Q：为什么不支持多窗口？为什么不提供背景音乐播放功能？为什么不支持各种各样的电子书格式？为什么没有这样、那样的功能？ A：太麻烦，而且对我来说无用，我坚信“简单就好”。 Q：软件启动的时候为什么会感觉有延迟？ A：为了加快分页速度，软件启动的时候会查询整个字体文件，记录每个字符的宽度，这需要一点时间。 另外由于竖排、横排查询字符宽度使用的是完全不同的方法，因此如果选择了竖排显示，启动时的延迟会小一点。 Q：不同编码的文本文件，存盘后是什么编码？ A：Unicode、Unicode big endian、utf-8编码的文件存盘后，仍然保持原编码。ANSI编码的文件在存盘前会先在内存中自动检查一下，如果存在不能用ANSI表示的字符，则转换成Unicode存盘，否则仍然按ANSI编码存盘。 Q：我觉得工具条按钮太小，按钮排布不合理，怎么办？ A：选择“查看->自定义工具栏...”菜单。 ## 使用说明 一、软件安装/删除 本软件安装非常简单：创建一个文件夹，将下载下来的ZIP包解压到该文件夹即可。 本软件的删除也很简单：直接删除从ZIP包中解压出来的所有文件及运行过程中生成的文件即可。 ZIP包中包括下列文件： PageByPage.exe。这是软件的主程序。 PageByPage.htm。本帮助文件。 如果您下载到的ZIP包中还包括其它文件，毫无疑问不是我放进去的，有广告或木马之嫌疑，请立即删除。 另外程序运行过程中还会生成以下文件： PageByPage.ini。这个是参数保存文件，第一次运行后生成。退出PageByPage，删除此文件，再重启PageByPage，即可恢复缺省参数。 PageByPage.bmk。这个是书签文件，如果选了“加入书签”，就会生成此文件。 PageByPage.chp。章节列表的查询关键字表。在章节列表界面中点了“设置”后就会生成此文件。删除此文件后重启PageByPage，就会恢复缺省关键字表。 PageByPage.blb。书库文件，如果在“书库管理”中增加了文件夹，就会生成此文件。 二、软件使用 1、阅读模式 第一次运行本软件，启动后就进入阅读模式。在此界面中，按页显示书籍内容，通过鼠标点击、快捷键、滚动条、跳页等功能改变阅读位置。如果想对阅读内容进行编辑，可以切换至编辑模式。 可以用以下方式打开文件： 点击“文件->打开”菜单或工具条上的“打开”按钮，或按快捷键Ctrl+O。 在没有打开任何书籍的情况下，在阅读区双击鼠标左键。 从资源管理器拖拽文件过来。 按Ctrl+W或Ctrl+H，打开文件列表，从中选择文件。 在命令行参数中指定需要打开的文件。 打开后的翻页方式： 用菜单、工具条按钮、快捷键。 鼠标左键单击，如果单击的是窗口左侧，则向前翻，否则向后翻。如果是竖排显示，则相反。 拖动窗口右侧的滚动条。 拨动鼠标滚轮，拨一格翻一页。 打开文件后的快捷键列表：
快捷键 | 功能
Ctrl+E | 切换至编辑模式
Home | 跳至文件头
End | 跳至文件尾
↓、→、PgDn、空格 | 下一页
↑、←、PgUp、BackSpace | 上一页
Ctrl+→ | 前进
Ctrl+← | 后退
Ctrl+T | 显示设置
阅读模式对常用功能提供右键快捷菜单，可以通过单击鼠标右键，或按键盘上的快捷菜单键调出快捷菜单。 阅读模式中的显示效果通过“查看->显示设置”（快捷键Ctrl+T）或工具条上的“显示设置”按钮进行设置：
大项 | 小项 | 含义
页面布局 | 显示模式 | 自适应单双页：书页铺满整个显示区，如果显示区宽度大于高度，则双页显示，否则单页显示。 单页显示：强制按单页显示，页宽用“单页模式下书籍宽度”设定，多余的部分用“桌面图案”或“颜色”填充。
桌面图案 | 只有在单页模式，或编辑模式下才会显示桌面，即在阅读区中，书籍之外的空间。
颜色 | 只有在“桌面图案”选“无”时，才能选择桌面颜色，以代替桌面图案。
单页模式下书籍宽度 | 在单页模式或编辑模式下，书籍的像素宽度。缺省情况下会按照当前屏幕分辨率自动变化，手工设置后则保持不变。
封面 | 内置图案 | 封面就是书页外的那一圈，选择不同的图案模拟不同的材质，
颜色 | 只有在封面图案为“无”时，才允许选择封面颜色，以代替封面图案。
页面 | 内置图案 | 页面背景图案
颜色 | 只有在页面背景图案为“无”时，才允许选择页面颜色。
预设颜色方案 | 系统内部事先定义的一些颜色组合，包括页面颜色、文字颜色。
中缝 | 只有在双页显示时，才会有中缝。
文字 | 字体 | 文字显示字体。
颜色 | 文字显示颜色。
大小 | 文字显示的字号。
高度 | 文字显示行的高度（相对于字号的百分比），用于控制行间距。如选择150%，则表示实际显示行的高度是字号的150%，多出来的50%其实是行间距。为了保证下划线的显示位置，在行间距不足3个像素时，会自动保持3个像素的最小间距。
加粗 | 显示文字是否需要加粗。
显示下划线 | 是否需要显示下划线。
下划线颜色 | 显示下划线时的颜色。
翻页 | 动画 | 翻页时的动画。仅在向前翻一页、向后翻一页时才会显示动画，如果直接翻到文件头或文件尾，或用滚动条、鼠标滚轮翻页时，均无动画。
在阅读模式下，通过“编辑->编辑模式”、工具条按钮“编辑模式”、快捷键Ctrl+E、右键快捷菜单中的“编辑模式”均可进入编辑模式。在单页模式下，阅读模式的第一行就是进入编辑模式后的第一行，而在双页模式下，进去后看到的究竟是左侧页面的第一行还是右侧页面的第一行，是靠当前鼠标位置决定的：如果鼠标在显示区的左侧，则以左侧页面为准，否则以右侧页面为准。 所以虽然有多种方式进入编辑模式，但最准确的还是快捷键或右键菜单。另外本软件具有模式记忆功能，即软件退出时如果处于阅读模式，下次进入时就还是阅读模式，否则就是编辑模式。 2、编辑模式 进入编辑模式后，可以使用常用的编辑功能对文字进行编辑，包括剪切、复制、粘贴、删除、查找、替换等。这些功能可以用菜单、工具条按钮、快捷键，也可以用右键菜单调用。 与编辑模式不同，在用双击鼠标左键打开文件时，必须双击编辑框之外的区域才起作用，在编辑框内双击鼠标左键是选词。 另外需要注意的是：为了保证快捷键的兼容性，在编辑模式下空格键是“下一页”，Shift+空格才是插入空格。 编辑模式下的常用快捷键：
快捷键 | 功能
Ctrl+E | 结束编辑模式，进入阅读模式
空格 | 下一页
Shift+空格 | 插入空格
PgDn | 下一页
PgUp | 上一页
Home | 光标移动到行首
End | 光标移动到行尾
Ctrl+Home | 光标移动到文件首
Ctrl+End | 光标移动到文件尾
箭头键 | 上下左右移动光标
Ctrl+Z | 插销上一次操作，最多可以插销100次
Ctrl+Y | 重复上一次操作，最多可以重做100次
Ctrl+X | 剪切
Ctrl+C | 复制
Ctrl+V | 粘贴
Del | 删除
Ctrl+A | 全选
Ctrl+F | 查找
F3 | 查找下一个
Ctrl+R | 替换
鼠标滚轮 | 滚动一行
本软件的查找、替换功能是从MFC的CRichEditView源代码复制过来的，但做了一些改进： 允许进行“方向”选择。 被替换的内容允许“撤销”，但受100次限制。 另外翻页、翻行、鼠标滚轮、滚动条也在原始RichEdit控件基础上进行了校准。 编辑模式下也可以调用“显示设置”，但相当于阅读模式的单页显示，因此桌面图案/颜色、单页显示宽度等都起作用，但“文字”框内的高度、下划线选项不起作用。 3、公共操作 不论是阅读模式还是编辑模式，都有一些功能是通用的功能，包括书签、书库管理、章节列表等。 通用功能对应的快捷键包括：
快捷键 | 功能
Esc | 传说中的“老板键”，也称“老板来了”，按下后主窗口缩成屏幕右下角的小图标，鼠标点击小图标则恢复主窗口。
Ctrl+O | 打开文件
Ctrl+S | 保存文件，只有在编辑模式下并且对文件进行修改后才有效
Ctrl+P | 打开章节列表
Ctrl+B | 加入书签
Ctrl+G | 书签管理
Ctrl+W | 打开文件列表，便于从中选择打开文件
Ctrl+H | 打开缺省书架，便于从中选择打开文件
F1 | 打开本帮助文件
书签的作用： 如果选择了“自动恢复”，每次启动本软件时都会自动打开上次退出时正在阅读的文件，并自动定位到上次退出时的位置。但是这个功能只能记忆一本书的位置，如果需要记忆多本书的位置，就需要先“加入书签”，在需要打开的时候再点“整理书签”，从中双击需要打开的书签。 从“文件”菜单下选择最近打开过的书籍，则自动定位到文件头。 章节列表的作用： 在阅读的时候，有时希望能够快速跳到某个章节，网上流传甚广的“多模式电子书”也以此为卖点之一。为了满足此项需求，本软件提供章节列表功能，通过正则表达式对全文进行搜索，抽取出章节列表，点击即可跳到选定的章节位置。 打开章节列表后，点“设置”按钮可以对搜索表达式进行配置。配置界面中各项的含义： 关键字前允许出现的字符数：在关键字前允许出现的无关字符数。有时候在“第×章”之前会出现“VIP章节”或书名等字符，这些字符需要被过滤掉。但此值也不宜过大，否则可能会把书中的正常内容误判为关键字。如果此值为0，则只过滤行首的空白符，包括全角/半角空格、制表符等。 关键字后需带分隔符（半/全角空格、制表符、换行符）：按照一般排版习惯，在关键字后都会带分隔符，用此选项可以保证匹配精度。但也不排除某些懒人排版的时候会不带分隔符，所以做成可以配置。 关键字：用于标示章节的关键字。关键字中如果含“×”，则进一步转换成正则表达式匹配符。 匹配符选项： 半角数字（0～9）：扩展成“0123456789” 全角数字（０～９）：扩展成“０１２３４５６７８９” 中文数字（一～九）：扩展成“零一二三四五六七八九十百千” 中文大写数字（零～玖）：扩展成“零壹贰叁肆伍陆柒捌玖拾佰仟” 关键字越多、匹配项越多，速度越慢，所以在不需要的时候，可以从关键字列表中去掉某些关键字前面的勾号，使其不参与匹配。 如果在阅读模式中点击“刷新”，则在“位置”栏显示的是章节标题对应的页码，否则是百分比。注意在改变显示区域大小造成重新分页的情况下，章节列表不会自动刷新，只有在手工点击“刷新”按钮后才会刷新。 书库的作用： 一般人都习惯把自己看的电子书存放在固定的文件夹下，或按照某些分类条件设置子文件夹。本软件把不同的文件夹看作不同的书架，其中有一个是缺省书架，可以用最快速的方式打开，便于从中选择自己想看的书。 与书库相关的功能包括： 文件列表：在窗口左侧打开文件列表，其实就是一个文件选择对话框，从中选择自己想打开的文件，用鼠标右键菜单也可以完成基本的文件操作功能。每次启动后第一次打开文件列表均定位到“桌面”。 文件定位：打开文件列表，进入当前正在阅读的文件所在的文件夹，选中当前文件。 书库管理：将常去的文件夹组织成书库，设置一个缺省书架。 缺省书架：如果在“书库管理”中设置了缺省书架，则打开文件列表并进入之，否则只是单纯地打开文件列表。 书库相关功能其实是在UnicornViewer v0.26中以早期ComicsViewer的“文件列表”功能为基础搞出来的，现在已经扩散到了ComicsViewer、MyReader及PageByPage等软件中。 ## 附录A 鸣谢 本软件的图像解码采用了Davide Pizzolato的CxImage。 本软件的文字分页算法参考了瑞星微公司RK27XX系列芯片的SDK开发包中的电子书源代码，毕竟我用过两款分别基于RK2706B、RK2708的MP4看电子书。 阅读模式界面和功能参考了alreader2、Cool Reader2、DesktopAuthor等优秀软件。 在此对以上各位表示感谢！ ## 附录B 版本更新记录 Version 1.11 功能增强：竖排显示时，括号、引号、书名号、省略号、破折号等也按照竖排显示。 错误修正：文字高度比较小时，竖排显示会造成下划线覆盖到文字上。 Version 1.10 新增功能：增加“竖排显示”选项。选择竖排显示后，阅读顺序是从右到左，鼠标单击翻页也与横排显示相反。 Version 1.09 功能增强：在搜索章节列表时，自动忽略前导空格，即“章节查询设置”对话框中，“关键字前允许出现的字符数”选项的数值不含前导空格，包括半角空格、全角空格、制表符。 功能增强：在更改章节列表的设置后，自动刷新章节列表，省掉一次鼠标点击。 功能增强：文字大小最大放宽至100点。 功能增强：支持不是以EF BB BF开头的utf-8文件。 Version 1.08 功能增强：在打开章节列表时，如果正在浏览书籍，则自动刷新章节列表，省掉一次鼠标点击。 Version 1.07 新增功能：增加“自定义工具栏”功能，可以对工具栏按钮、文字、图标等进行调整，方便使用大屏幕的用户。 功能增强：新增了一些桌面、纸张的内置图案。 功能增强：换了一套真彩工具栏图标，支持大、中、小三种尺寸。 功能增强：在章节列表中，支持用“两”代替“二”的写法。 Version 1.06 功能增强：优化存盘速度。 功能修正：Unicode/Unicode big endian/utf-8编码的文件存盘后，仍然保持原编码，而不是全部转换成ANSI编码。 Version 1.05 功能增强：在章节列表中，自动过滤重复行。 错误修正：在“查找”时，“向上”选项不起作用。 Version 1.04 新增功能：可以设置章节列表的字号。 新增功能：章节列表自动显示当前阅读位置所在的章节。 新增功能：“跳至指定页”能用于编辑模式，按百分比跳。 功能增强：能够记忆章节列表的位置。 功能增强：在阅读模式下，状态条上除显示页码外，还显示百分比。 错误修正：用“跳至指定页”跳页后，状态条没有及时更新。 Version 1.03 新增功能：在章节列表中显示页码（阅读模式）或百分比（编辑模式）。 错误修正：从资源管理器右键菜单打开会出错。 Version 1.02 错误修正：某些右键菜单项与主菜单不一致。 Version 1.01 功能修正：在阅读模式中，只有在还没有打开任何书籍的情况下，双击鼠标左键才会弹出“打开”对话框。以免在正常阅读时，因为鼠标点击翻页太快造成误操作。 Version 1.00 1. 提供阅读功能。 2. 提供编辑功能。 3. 提供章节列表功能。 4. 提供书库管理功能。 5. 提供书签、老板键等功能。