程序设计:排版、检验报告的上下标解决几种办法

【啰嗦两句】

     本文重点在于提供几个针对排版文档、各种检验报告系统等程序设计时,遇到的上下标录入、绘制展示等问题的应对办法,但是准确地说,并没有非常优秀的方案。

【上下标难题】

    一般的行业或许对上下标并没有严格要求,多数只需在固定的页面中展示,所以遇到的难题都不算大。但是在检验检测行业,用计算机软件表示上下标就显得困难重重,牵涉到模板软件、计算机语言、软件平台、中英文字库等。

    例如纺织、食品、水质检验检测行业,在其检验、报告录入生成等过程,有大量的化学分子式、金属非金属离子根的表示方式,如下图1所示:

(图1  水质检验结果报告局部示例)

      上面的氧化钙CaCO,←看,我不是打字打出来了吗?很简单是不是?No!你看到的只是Web版面并且常规数字3,还有比较多特殊符号。

    再比如辐射检验报告如图2:

(图2 辐射检验报告局部示例)

【常规解决方案优缺点】

方案1. 用Microsoft Office Word或WPS模板

      这种方案应该是最普遍的解决方案,先制作一份标准格式的Wrod模板,在模板中需要填检验结果的地方用“域”表示(也就是变量,供检验管理系统调用),或者留空给录入人员按需人工录入结果,有分子式的地方模板早早就录好了。如图3所示:

(图3  Word制作的模板局部示例)

图3模板解释:

      黑色字区域是提前固定好的,因为检验项目是按对应国标或客户约定的内容提前准备好了,检验过程也只是把结果录入,所以这部分包含了复杂的分子式上下标即可。

       绿色字区域原本应该是空白,这里演示了人工录入的效果,或者最终呈现给客户时的效果。

       蓝色字是变量域,既可以是Word自带的域,也可以是自行约定的标准格式变量。这种变量一般用于实验室信息管理系统(LIMS)、检验管理系统等,已经有个平台支撑加载并填充检验结果。还可以进一步从Word转成PDF格式文件。所以这种用法非常普遍。

优点:1、一旦做好模板,剩下的结果数据只需要按格式填充即可,在检验管理系统里面调用,非常轻松。2、Word自带的公式编辑器,非常友好,设计出的上下标非常好看:

很多人可能到这里就已经“十分满意”。

缺点:可以说是非常大的缺点,这些上下标仅仅能在Word模板中存在,无法直接转换成Web页面前端的标准文本上下标样式,也无法直接保存到数据库。本质原因在于,Word内部用类似<SubScript>、<SuperScript>这样的标签表示上下标。例如下标CaCO₃,存储的不仅仅是数字3,而是CaCO<SubScript>3</SubScript>。这就带来一个大的难题:极大增加录入人员的录入复杂度,例如图2里面的“-SEdb”极其复杂。如果直接存储到数据库里面,并直接展示在客户端(浏览器、APP)就会把<SubScript>也显示出来。而Word导出PDF之所以能保持上下标,也是对这些特殊格式做了转换。当然,聪明的检验管理系统在呈现到页面时也可以专门转换。因为HTML本身也有<SubScript>标签。

更大的问题来了,检验行业往往有大量监管要求,需要把检验结果上传给国家监管平台系统(例如食品相关的需要上传国家抽检大平台),各个省市也会有自己的数据上传要求,这些上下标一定少不了。

       好在,一般检验报告的录入部分,不需要录入上下标。上传给监管平台可能也没那么严格。

方案2. 采用自定义的格式化标准

       比如用<sub></sub>富文本格式表示下标,并且在检验管理系统框架内对这些标签进行支持,在录入的地方用“Ctrl+字符”录入字符,格式标签是隐藏的,呈现的效果也很好。这种方案类似方案1。

优点:在检验管理平台内呈现效果好,并且平台框架内都兼容。

缺点:和方案1一样,不同平台就是没法兼容。

方案3. 采用UTF8的上下标字符

       本文录入的CaCO当中的3就是用了下标字符3,这些字符很多,0-9的上下标字符都有,非常适合较简单的上下标录入。常用的数字上下标字符有如下:

上标:⁰ ¹ ² ³ ⁴ ⁵ ⁶ ⁷ ⁸ ⁹ ⁺ ⁻ ⁼ ⁽ ⁾ ⁿ º ˙

下标:₀ ₁ ₂ ₃ ₄ ₅ ₆ ₇ ₈ ₉ ₊ ₋ ₌ ₍ ₎ ₐ ₑ ₒ ₓ ₔ ₕ ₖ ₗ ₘ ₙ ₚ ₛ ₜ

为节约篇幅,更多上下标可以网上搜。

优点:兼容性好,几乎采用UTF-8编码的系统、文档软件都按标准呈现上下标,录入人员复制粘贴搞定,无需考虑数据的下一步去向。这些数据也可以被用于查找、统计、分析,跟操作普通0-9一样。如果只用到数字上下标的系统,推荐用这个方案。

缺点:1、字符不够多,比如d、b这2个就没有下标,虽然有上标。2、就算符号都能找到,本质上这些字符都是东拼西凑,罗马字、拉丁字等等,风格各异,呈现出来的上下标位置并不协调,样式也极其丑,版面美观要求高的系统根本没法接受。

方案4. 自行设计字库

       既然方案1、2输入格式那么复杂,方案3缺字符,那为什么不自己造一个?还真有办法造!在Windows系统有个叫“专用字符编辑器”的自带软件,就具备造字功能。在系统搜索“专用字符编辑器”,就能看到。界面如图5所示:

(图4 Windows系统自带的专用字符编辑器)

     专用字符编辑器就像画图标一样画出字符,保存之后系统会自动转换成矢量曲线路径。感兴趣的童鞋可以玩一玩。这个字库文件是EUDC.EUF和EUDC.TTE。

     而造出来的字符可以用复制粘贴的方式,也可以采用“区位输入法”(老家伙了)打字,每个字有自己的编码。

优点:可以制作任意效果的上下标文字,并且可以在Windows环境中任何显示、打印的地方输出相同效果的文字(前提把字库弄出来安装到不同电脑上)。

缺点:这个缺点也非常多,1、自己造的字,在自己电脑没任何问题,但是还有导出并安装到别人电脑就麻烦,体验不好还权限一堆问题。2、想用输入法输入,虽然可以,但是又要翻出已经埋了多年的“区位输入法”,已知XP系统默认装了,WIN7以上已经默认不装。3、搜狗输入法似乎也走过这个路线,会占用默认的EUDC字库文件,导致自己造的字失效。4、很糟糕的是Windows10及以上版本,似乎也喜欢覆盖这个EUDC文件,每次更新都会一定概率让自造的字库失效(老外没人用过?),5、最失望的是,这个字库是GBK编码,2个字节表示一个字,中文XP及以前的系统是GBK编码,之后的系统比较灵活用上了UTF-8编码,如果用自己造的字,往往没法转UTF-8,而现在的检验管理系统所用的数据库、框架、底层几乎都不会用GBK了,因为GBK的字库容量有限,很多常见的中文都缺失,比如“啫”字,还有那么多特殊字符,跟不上时代了。6、每个符号按汉字大小占据固定尺寸,越简单的符号效果越不协调。

【总结】

       以上4个方案,缺点列出来的往往比优点多,说明没有一个真正完美方案。或许未来会有编码方面的解决方案。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/955676.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

TCP 重传演进:TCP RACK Timer 能替代 RTO 吗

本文的建议适用于想改变 TCP 行为的新协议设计&#xff0c;还是那句话&#xff0c;不要抄 TCP 做 yet another TCP。 RTO 一直是 TCP 传输过程所要尽量避免的&#xff0c;因为它会将状态带入 Loss 进而 Go-Back-N&#xff0c;这是一个昂贵的操作。But 在 Fast-Retransmit 被引…

PCL 新增自定义点类型【2025最新版】

目录 一、自定义点类型1、前言2、定义方法3、代码示例二、合并现有类型三、点云按时间渲染1、CloudCompare渲染2、PCL渲染博客长期更新,本文最近更新时间为:2025年1月18日。 一、自定义点类型 1、前言 PCL库自身定义了很多点云类型,但是在使用的时候时如果要使用自己定义的…

Python操作Excel——openpyxl使用笔记(5)

5 其他操作 5.1 合并单元格 有些Excel表格存在合并多个单元格的情况&#xff0c;此时可以使用工作表的merge_cells函数&#xff0c;例如合并第1~2行和1~2列&#xff1a; import openpyxl from openpyxl.comments import Comment wb openpyxl.load_workbook(./test.xlsx) w…

Linux简介和环境搭建

Linux 介绍和环境搭建 1、发行版本 Linux 操作系统有多个主流发行版本&#xff0c;每个版本根据不同的目标、特点和使用场景为用户提供了不同的功能和体验。 Ubuntu • 特点&#xff1a;Ubuntu 是最为人熟知的 Linux 发行版之一&#xff0c;强调易用性和用户友好性&#xff…

LabVIEW时域近场天线测试

随着通信技术的飞速发展&#xff0c;特别是在5G及未来通信技术中&#xff0c;天线性能的测试需求日益增加。对于短脉冲天线和宽带天线的时域特性测试&#xff0c;传统的频域测试方法已无法满足其需求。时域测试方法在这些应用中具有明显优势&#xff0c;可以提供更快速和精准的…

SQL Server查询计划操作符——查询计划相关操作符(4)

7.3. 查询计划相关操作符 28)Declare:该操作符在查询计划中分配一个本地变量。该操作符是一个语言元素。该操作符具体如图7.2-28所示。 图 7.2-28 查询计划操作符Declare示例 29)Delete:该操作符从一个对象中删除满足其参数列中可选谓词的数据行。该操作符具体如图7.2-29…

复用类(3):在组合与继承之间选择、protected关键字、向上转型

1 在组合与继承之间选择 组合和继承都允许在新的类中放置子对象&#xff0c;组合是显式地这样做&#xff0c;而继承则是隐式地做。你或许想知道二者之间的区别何在&#xff0c;以及怎样在二者之间做出选择。 组合技术通常用于想在新类中使用现有类的功能而非它的接口这种情形。…

Java-数据结构-二叉树习题(1)

对于二叉树的学习&#xff0c;主要的还是得多多练习~毕竟二叉树属于新的知识&#xff0c;并且也并不是线性结构&#xff0c;再加上经常使用递归的方法解决二叉树的问题&#xff0c;所以代码的具体流程还是无法看到的&#xff0c;只能通过画图想象&#xff0c;所以还是必须多加练…

彩色图像面积计算一般方法及MATLAB实现

一、引言 在数字图像处理中&#xff0c;经常需要获取感兴趣区域的面积属性&#xff0c;下面给出图像处理的一般步骤。 1.读入的彩色图像 2.将彩色图像转化为灰度图像 3.灰度图像转化为二值图像 4.区域标记 5.对每个区域的面积进行计算和显示 二、程序代码 %面积计算 cle…

计算机网络 (41)文件传送协议

前言 一、文件传送协议&#xff08;FTP&#xff09; 概述&#xff1a; FTP&#xff08;File Transfer Protocol&#xff09;是互联网上使用得最广泛的文件传送协议。FTP提供交互式的访问&#xff0c;允许客户指明文件的类型与格式&#xff08;如指明是否使用ASCII码&#xff0…

vscode的安装与使用

下载 地址&#xff1a;https://code.visualstudio.com/ 安装 修改安装路径&#xff08;不要有中文&#xff09; 点击下一步&#xff0c;创建桌面快捷方式&#xff0c;等待安装 安装中文插件 可以根据自己的需要安装python和Jupyter插件

用Cursor生成一个企业官网前端页面(生成腾讯、阿里官网静态页面)

用Cursor生成一个企业官网前端页面 第一版&#xff1a; <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><…

简要认识Web技术三剑客:HTMLCSSJavaScript

目录 一、web标准二、什么是HTML三、什么是CSS四、什么是JavaScript 黑马JAVAWeb飞书在线讲义地址&#xff1a; https://heuqqdmbyk.feishu.cn/wiki/LYVswfK4eigRIhkW0pvcqgH9nWd 一、web标准 Web标准也称网页标准&#xff0c;由一系列的标准组成&#xff0c;大部分由W3C&…

python(25) : 含有大模型生成的公式的文本渲染成图片并生成word文档(支持flask接口调用)

公式样例 渲染前 \[ \sqrt{1904.615384} \approx 43.64 \] 渲染后 安装依赖 pip install matplotlib -i https://mirrors.aliyun.com/pypi/simple/ requestspip install sympy -i https://mirrors.aliyun.com/pypi/simple/ requestspip install python-docx -i https…

2024CVPR《HomoFormer》

这篇论文提出了一种名为HomoFormer的新型Transformer模型,用于图像阴影去除。论文的主要贡献和创新点如下: 1. 研究背景与动机 阴影去除的挑战:阴影在自然场景图像中普遍存在,影响图像质量并限制后续计算机视觉任务的性能。阴影的空间分布不均匀且模式多样,导致传统的卷积…

PE文件:节表-添加节

在所有节的空白区域都不够存放我们想要添加的数据时&#xff0c;这个时候可以通过添加节来扩展我们可操作的空间去存储新的数据&#xff08;如导入表、代码或资源&#xff09;。 过程步骤 1.判断是否有足够的空间添加节表 PE文件的节表紧跟在PE头之后&#xff0c;每个节表的…

窥探QCC518x/308x系列与手机之间的蓝牙HCI记录与分析 - 手机篇

今天要介绍给大家的是, 当我们在开发高通耳机时如果遇到与手机之间相容性问题, 通常会用Frontline或Ellisys的Bluetooth Analyzer来截取资料分析, 如果手边没有这样的仪器, 要如何窥探Bluetooth的HCI log.这次介绍的是手机篇. 这次跟QCC518x/QCC308x测试的手机是Samsung S23 U…

【MySQL】数据库约束和多表查询

目录 1.前言 2.数据库约束 2.1约束类型 2.2?NULL约束 2.3 NUIQUE&#xff1a;唯一约束 2.4?DEFAULT&#xff1a;默认值约束 2.5?PRIMARY KEY&#xff1a;主键约束 2.6 FOREIGN KEY&#xff1a;外键约束 1.7?CHECK约束 3.表的设计? 3.1一对一 3.2一对多 3.3多…

Unity HybridCLR Settings热更设置

需要热更的程序集放到 热更新Assembly Definitions中。 记得补充元数据AOT dlls 打包完成后遇到TypeLoadException: could not load type 时 可能需要在Assets/link.xml中增加对应的设置 <assembly fullname"your assembly" preserve"all"/> link…

LLM - 大模型 ScallingLaws 的迁移学习与混合训练(PLM) 教程(3)

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/145212097 免责声明&#xff1a;本文来源于个人知识与公开资料&#xff0c;仅用于学术交流&#xff0c;欢迎讨论&#xff0c;不支持转载。 Scalin…