找回密码
 立即注册
搜索
热搜: 新人报到
查看: 266|回复: 4

[软件] 【FixText】排版功能说明

[复制链接]

用户组:童生

      UID
1796
      积分
146
      回帖
25
      主题
4
      发书数
0
      威望
131
      铜币
2237
      贡献
0
      阅读权限
20
      注册时间
2025-3-1
      在线时间
17 小时
      最后登录
2025-3-14
发表于 2025-3-8 10:05 | 显示全部楼层 |阅读模式
本帖最后由 edennow 于 2025-3-11 18:11 编辑

脚本下载:http://www.1000qm.vip/forum.php?mod=viewthread&tid=2282,FixText.zip 附件。

以下为对 FixText 【双击运行】0.文本排版.bat 排版命令的说明,只包含个人比较频繁使用的几个功能,可能以后会继续往里加。

和之前的用法一样,将附件下载解压后,把所有需要处理的书籍(txt 和 epub 格式均可)都移到 books 文件夹中,然后双击打开 【双击运行】0.文本排版.bat 进行排版操作,同样支持有文件夹嵌套的多文件批量处理。

当某一个排版操作结束后,会打印出一行【已完成该轮排版】的信息,然后可选择不同的选项继续下一项排版操作。

books 文件夹中的所有文件都会自动备份到 booksBak 文件夹中,可以随时使用 Beyond Compare 比较 books 和 booksBak 中的文件,确认当前所选的排版操作的效果。

包含功能:
  1. {
  2. "索引-0": "排版文本(根据论坛排版要求,处理成正文的段落间无空行、缩进两全角空格,章节间空两行、无缩进)",
  3. "索引-1": "排版文本(去除所有的空行和缩进,可简单套上 <p> 标签,用于比较不同格式的文本)",
  4. "索引-2": "转换文本的【编码及换行符】(仅支持 UTF-8 编码和 GB2312 中文编码,仅支持 LF 和 CRLF 换行符)",
  5. "索引-3": "【提取 epub 中的文本】,整体合并后转换为 txt(转出来的 txt 将按照第一项的论坛格式自动排版)",
  6. "索引-4": "规范部分常见【标点符号】,把英文标点转为中文标点,可更改【连续多行引号】的使用形式",
  7. "索引-5": "统一更改文本中的引号形式(在【弯引号】 “”‘’ 和【直角引号】「」『』 间进行转换)",
  8. "索引-6": "在文本的首尾添加【个人校对信息】(请先打开 typesetting.php 文件更改 username 参数)",
  9. "索引-7": "【请务必使用 BC 检查】转换文本中的【英文大小写】(首字母大写、全改成小写、全改成大写)",
  10. "索引-8": "【请务必使用 BC 检查】将文本中的【阿拉伯数字转为中文数字】",
  11. "索引-9": "【请务必使用 BC 检查】移除正文中的【中文字符之间的空格】",
  12. "索引-10": "将 books 和 booksBak 中的书籍文件【按标点强制分行】",
  13. }
复制代码

其实很多都在论坛分享的 emeditor 宏中有实现,不过那几个宏包含的功能有点太多了,有不少个人不怎么有机会用到的去广告之类的选项。有一些功能我想自己改的也不怎么改得动,所以索性还是单独整合了一些个人常用的排版操作。

这个 0.文本排版.bat 命令主要提供文本格式、标点符号、英文大小写和数字转换等比较机械的排版操作,而原来的 1.书籍校正.bat 在之后则只处理文本字词的纠错校正。

下面对这些排版功能逐条简介一下。



排版文本(根据论坛排版要求,处理成正文的段落间无空行、缩进两全角空格,章节间空两行、无缩进)

就是一键把文本格式化成符合校对上传区的要求:“统一排版格式为:行首两全角空格,行间无空行,章节间两空行”。

主要代码在 src/app/Service/Formatting/FileProcessor.phpfunction changeTextFormat 中,如有需要可以自行搜索修改其中的正则表达式。

注意关于章节行的缩进和间隔,目前的正则只匹配明确的“卷XX”“第X卷”“第X章”这种格式,其他“楔子”“番外”“感言”之类的,如果有需要可以在上述位置的正则中自己加。

或者可以在对应的行前新增一个特殊字符:,如 “◎番外”,只要某行是以 开头,就会被脚本当成和“第X卷”“第X章”等同的章节行,取消该行的缩进,增加分隔行。



排版文本(去除所有的空行和缩进,可简单套上 <p> 标签,用于比较不同格式的文本)

这个功能比较简单,是个人用来直接比较 epub 文本和 txt 文本的,如果是 txt 文本,可以给每个段落套上或者移除 <p> 标签,让 txt 文本和 epub 文本的正文部分基本保持一致。

利用脚本的 EPUB 文本合并 和 EPUB 文本拆分还原 功能,可以在不破坏 epub 结构的前提下进行一些文本差异项的同步,不过说明起来比较麻烦,如果有兴趣可以自己琢磨尝试一下(简单提示:大部分 epub 文件的正文部分,除了多了几个 <p></p> 之外和 txt 格式并没有什么区别,只要让 txt 和 epub 文本同样都是“无空行、无缩进、有 <p> 标签”,在 BC 中就能无视其他标题章节之类的差异,直接比对同步,然后利用 EPUB 文本拆分还原 把比较确认之后的 epub 文件还原)



转换文本的【编码及换行符】(仅支持 UTF-8 编码和 GB2312 中文编码,仅支持 LF 和 CRLF 换行符)

顾名思义,不需要过多说明,自己操作一下就知道了。

唯一要注意的是,这个排版脚本中,除了这一项转编码的操作外,其他的所有操作都会导致文本的编码被统一转换成 UTF-8,换行符被统一转换成 LF(即 \n)。



【提取 epub 中的文本】,整体合并后转换为 txt(转出来的 txt 将按照第一项的论坛格式自动排版)

也是顾名思义,执行这一项之后,epub 文件原封不动,会在 books 中生成对应 epub 的带 【EPUB 提取】前缀的 txt 文件。

这项操作基本等同于各种格式转换软件中的“epub 转 txt”功能,会完全移除 epub 中的 html 标签,可能唯一的区别就是结果文件会自动按照论坛格式进行排版。



规范部分常见【标点符号】,把英文标点转为中文标点,可更改【连续多行引号】的使用形式

这项操作原来是在 1.书籍校正.bat 这个命令中进行的,现在转移到此脚本中,主要效果:

  • 将英文标点转为中文标点(不影响纯英文内容)。
  • 去除部分标点间的空格。
  • 将全角的英文数字及部分数学符号等改为半角。
  • 更改连续多行的引号使用形式。

选择了一项之后会打印出比较多的操作提示,如果是第一次使用最好往上翻一翻了解一下详细的提示信息。

其中 全半角字母数字 的转换规则都写在 src/config/formatting.php 文件开头的 punctuationsMap 配置中,如有需要可以自行调整里面的内容。

该操作还会让你选择是否更改连续多行引号的使用形式,在:

“我是第一段话。
我是第二段话。
我是最后一段话。”



“我是第一段话。
“我是第二段话。
“我是最后一段话。”

这两种形式间可以任意转换。当然,也可以选择不转换,保持原样。



统一更改文本中的引号形式(在【弯引号】 “”‘’ 和【直角引号】「」『』 间进行转换)

按一些轻小说、港台书籍中的用法和个人的理解,弯引号和直角引号对应关系如下:

“” 对应 「」
‘’ 对应 『』

不过有些书里好像又是 “”  对应 『』   的,不太了解,反正现在就是按照上面的这种关系来进行互相转换。

除了看一些竖排书或者轻小说之外,个人建议是全部都使用弯引号,毕竟随便去国内的书店翻几本书,也不怎么会碰到哪本书里大面积使用直角引号的(某乎社区和某排版指北除外……)。



在文本的首尾添加【个人校对信息】(需要更改用户名)

就是给文本的首尾自动加这个信息:

  =============================================
  +欢迎阅读【个人论坛ID】个人校对电子书。转载请保留本声明,谢谢合作~
  +仅因个人爱好订阅及整理,如果您喜欢,望您购买VIP章节或正版纸质书。
  +本书仅供试阅,版权归原作者/网站/出版社所有,请勿用于任何商业用途~
  +★☆更多校对、精校版电子书下载及阅读敬请访问:★☆
  +——阡陌居:www.1000qm.vip
  =============================================

可以先改一下 src/config/formatting.php 文件开头包含 "用户名" 的那一行,换成你自己的论坛 ID。



【请务必使用 BC 检查】转换文本中的【英文大小写】(首字母大写、全改成小写、全改成大写)

统一一些英文大小写的写法,貌似规范的文本中(论文、公文之类的也是),每个英文名词的首字母都是大写的。

这个功能可能同时会意外帮你发现一些用拼音替换的和谐词。

如果你在这一项选择 1,将首字母大写,还会按照 src/config/formatting.php 中的 fixedCaseWords 那个配置中写的一些固定专有名词进行转换,如果有需要可以自己继续往里堆。

其中有些计量单位 km kg mg 等,都应该规范为全小写,不过个人对这些也不怎么熟悉,可以参考:https://wenku.baidu.com/view/a2834aabad51f01dc381f15d 以及 https://wjk.usst.edu.cn/2022/0523/c13371a269710/page.htm 这两篇文章,往 fixedWords 变量里自行扩展。

这一项执行完后,【请务必使用 BC 检查】books 文件夹和 booksBak 文件夹中的内容,确认修改结果,个人水平有限,这一项很可能有不少误改。



【请务必使用 BC 检查】将文本中的【阿拉伯数字转为中文数字】

就是为了处理一些“他的队里有50人,这五十人都是精英”这样的同一行内的数字写法都不统一的情况,其实大部分情况下可以直接无视,不改这一项。

目前只支持把阿拉伯数字转成对应的中文,为了避免可能的误改,含“章卷节”以及“年月日”“时分秒”的地方都保持原样。

有些类似“国窖1573”“勃朗宁1911”之类的专有名词也会被误改,需要自行在 BC 比较时进行还原。

这一项执行完后,【请务必使用 BC 检查】books 文件夹和 booksBak 文件夹中的内容,确认修改结果,个人水平有限,这一项很可能有不少误改。



【请务必使用 BC 检查】移除正文中的【中文字符之间的空格】

会自动清除中文之间的空格,例如“啊   啊?啊啊    啊啊!啊”这样的, 含“章卷节”等字样的标题行不改。

注意有些歌词之类的空格可能不应该清除,另外往里填充标点符号也许会更好。

这一项执行完后,【请务必使用 BC 检查】books 文件夹和 booksBak 文件夹中的内容,确认修改结果,个人水平有限,这一项很可能有不少误改。



将 books 和 booksBak 中的书籍文件【按标点强制分行】

在比较某些书籍时,可能会碰到【版本 A】(假设放在 books 文件夹)和【版本 B】(假设放在 booksBak 文件夹)两边的内容中存在大量不一致的分段。

在【版本 A】中多句话塞到一行,在【版本 B】中则每句话都强制分行。这样在 BC 中比较时非常难以辨认和同步。

现在这个功能可以强制在两边的文件以一些结尾标点(句号、逗号等)作为分隔,添加临时的分行标记重新分行,让两边都以类似“现代诗”的形式呈现。

比较时只需要关注字词差异,不需要管不同的分行标记。比较完成后可再执行一次这个选项,移除临时的分行标记,将文本恢复原样。



关于修改 epub 文件的说明

上面所有涉及内容修改的操作(规范标点符号、英文大小写转换、阿拉伯数字转中文数字、移除中文间的空格等)都会直接在 epub 文件里生效,执行完毕后可以看到 books 中还是原来的 epub 文件,似乎什么也没改。

其实改动都应用到了 books 和 booksBak 文件夹中转换出来的带【EPUB合并文件】前缀的 txt 文件中,使用 BC 直接比较带有此前缀的 txt 文件,即可确认修改效果。

然后执行 6.EPUB 文本拆分还原(从 TXT 中拆分).bat 进行还原,会把带前缀的 txt 文件重新拆分成 epub,覆盖掉原有的文件。

最后,最好记得在所有排版操作结束后,使用 7.书籍清理(全部删除,包括备份、批注).bat 清理数据,保证工作目录中没有遗留文件。

评分

参与人数 1威望 +2 铜币 +5 收起 理由
杨超越 + 2 + 5 论坛有您更精彩!

查看全部评分

回复

使用道具 举报

用户组:童生

      UID
6613
      积分
108
      回帖
3
      主题
1
      发书数
0
      威望
106
      铜币
2071
      贡献
0
      阅读权限
20
      注册时间
2025-3-4
      在线时间
1 小时
      最后登录
2025-3-14
发表于 2025-3-10 10:11 | 显示全部楼层
操作太专业了,能不能添加一个傻瓜按钮,一键完成所有操作
回复

使用道具 举报

用户组:童生

      UID
1796
      积分
146
      回帖
25
      主题
4
      发书数
0
      威望
131
      铜币
2237
      贡献
0
      阅读权限
20
      注册时间
2025-3-1
      在线时间
17 小时
      最后登录
2025-3-14
 楼主| 发表于 2025-3-10 14:21 | 显示全部楼层
笾豆 发表于 2025-3-10 10:11
操作太专业了,能不能添加一个傻瓜按钮,一键完成所有操作

这样不行的,你可以自己从头到尾什么都不管把所有选项都执行一遍,最后出来的文本肯定和你想要的不一样,很多错误堆在一起不好识别也不好修正。

现在只是输入 123 其实已经够傻瓜了,需要做的是搞清楚每一项的具体作用是什么。每一步完成都及时去 BC 比对才能比较好地除错。
回复

使用道具 举报

用户组:举人

      UID
1048
      积分
1126
      回帖
20
      主题
88
      发书数
87
      威望
985
      铜币
6565
      贡献
0
      阅读权限
50
      注册时间
2025-3-1
      在线时间
59 小时
      最后登录
2025-3-15
发表于 2025-3-10 21:43 | 显示全部楼层
排版文本中,为啥第二..会被识别成标题

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

用户组:童生

      UID
1796
      积分
146
      回帖
25
      主题
4
      发书数
0
      威望
131
      铜币
2237
      贡献
0
      阅读权限
20
      注册时间
2025-3-1
      在线时间
17 小时
      最后登录
2025-3-14
 楼主| 发表于 2025-3-11 07:21 | 显示全部楼层
花彼岸 发表于 2025-3-10 21:43
排版文本中,为啥第二..会被识别成标题

这种标点本身就是错的,如果有修正成省略号就不会有问题。

之前确实没考虑到这种小概率的情况,现在新传了附件,加了个判断,这种也不会误识别了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|阡陌居

GMT+8, 2025-3-15 01:15 , Processed in 0.082842 second(s), 23 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表