找回密码
 立即注册

QQ登录

只需一步,快速开始

mjhcad
初级会员   /  发表于:2013-10-15 12:29  /   查看:9284  /  回复:11
TX用 TextControl1.InputFormat.Superscript = True
和    TextControl1.InputFormat.Subscript = True
形成的rtf文件上下标在写字板中改变字号后,上下标字体特别大,
用记事本打开后,内容如下:(mm上标2F下标k)
{\*\generator TX_RTF32 17.0.540.500;}
\deftab1134\paperw12240\paperh15840\margl1440\margt1440\margr1440\margb1440\widowctrl\formshade\sectd
\headery720\footery720\pgwsxn12240\pghsxn15840\marglsxn1440\margtsxn1440\margrsxn1440\margbsxn1440\pgbrdropt32\pard\itap0\nowidctlpar\plain\f1\fs20 mm\plain\f1\fs20\up6 2\plain\f1\fs20 F\plain\f1\fs20\dn6 k\par }
用写字板生成的上下标如下:
{\*\generator Msftedit 5.41.21.2510;}\viewkind4\uc1\pard\nowidctlpar\li300\cf1\lang1033\f0\fs20 mm\super 2\nosupersub F\sub k\nosupersub\i\par }
从上面可以看出rtf格式中:
TX用 \up6 和 \dn6表示上下标; 写字板用 \super  \nosupersub 和 \sub \nosupersub 表示上下标,
请问在TX中能形成 \super  \nosupersub 和 \sub \nosupersub 格式的上下标吗?

11 个回复

倒序浏览
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2013-10-15 15:34:00
沙发
这个很难改变,TX内容的处理逻辑已经有很长的发展历史,厂商不会轻易修改。
回复 使用道具 举报
mjhcad
初级会员   /  发表于:2013-10-16 08:51:00
板凳
我觉得用\super  \sub 表示上下标是通行的做法,TX不应创造一种不通用的方法。
而且我觉得这个TX改过来应该很简单的。
同时TX应确保其生成的文件无论用什么软件打开都同样的美观漂亮。
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2013-10-16 12:20:00
地板
我会将你的这一需求提交给厂商,同时,你能给我发送一个可以完全重现该问题的Demo吗,这样方便与厂商做更有效的沟通,非常感谢。
回复 使用道具 举报
mjhcad
初级会员   /  发表于:2013-10-16 15:59:00
5#
下面是用写字板和TX生成的上标对比。
用TX生成上标后在写字板里修改不同字号后的效果。
字号较小时还算协调,字号较大时极不协调。

sample.jpg (29.91 KB, 下载次数: 80)
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2013-10-16 18:49:00
6#
mjhcad

问题我一清楚,方便讲以上结果的源文件发送给我吗。
回复 使用道具 举报
mjhcad
初级会员   /  发表于:2013-10-17 09:26:00
7#
谢谢dof的热心,其实代码很简单:以下是VB .net 代码
添加一个TextControl1控件和TextBox1控件:

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
      TextControl1.Selection.Text = "226.2mm"
      TextControl1.InputFormat.Superscript = True    ‘设置上标开始
     TextControl1.Selection.Text = "2"
      TextControl1.InputFormat.Superscript = False   ‘设置上标结束
     Dim s As String = ""
      TextControl1.Selection.Save(s, TXTextControl.StringStreamType.RichTextFormat)  ’将带格式的文本保存到字符串s
      TextBox1.Text = s      ’显示带格式的文本   
End Sub
回复 使用道具 举报
mjhcad
初级会员   /  发表于:2013-10-17 09:41:00
8#
这是上下标测试的Vb .net源程序
上下标测试.rar (64.99 KB, 下载次数: 262)
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2013-10-17 17:27:00
9#
mjhcad

我已经将你的需求和厂商进行沟通,因为 TX X10 编码已经完成,该问题最快修复的时间也需要 TX X10 SP1 发布。
回复 使用道具 举报
mjhcad
初级会员   /  发表于:2013-12-12 08:11:00
10#
首先感谢Dof回答了好几个问题,很耐心。
我在编程中经常用到上下标。我提个建议,除了格式与Word和写字板兼容外,希望
TX自动处理上下标的字高,比如取当前字高的50%,而无需用TextControl1.InputFormat.FontSize
去特别指定 。现在的TX必须特别指定上下标的字高,如不特别指定将用当前字高来定义上下标。
也可以单独给定一个字高比例的属性如TextControl1.InputFormat.SuperscriptScale
来单独指定上标字高比例,不特别指定时与Word兼容,由程序内定比例。


  1. TextControl1.InputFormat.Superscript = True  ‘上标开始
  2.         ‘由程序自动处理字高为当前字高的50%或其它。
  3.         TextControl1.InputFormat.Superscript = False  ‘上标结束
复制代码



以下是TX与Word的区别:

TX:


3.jpg (29.44 KB, 下载次数: 66)
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部