mjhcad 发表于 2013-10-15 12:29:00

关于TX上下标新的建议,请管理员看看,反馈下。

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 格式的上下标吗?

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

下面是用写字板和TX生成的上标对比。
用TX生成上标后在写字板里修改不同字号后的效果。
字号较小时还算协调,字号较大时极不协调。

ZenosZeng 发表于 2013-10-16 18:49:00

mjhcad

问题我一清楚,方便讲以上结果的源文件发送给我吗。

mjhcad 发表于 2013-10-17 09:26:00

谢谢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

这是上下标测试的Vb .net源程序

ZenosZeng 发表于 2013-10-17 17:27:00

mjhcad

我已经将你的需求和厂商进行沟通,因为 TX X10 编码已经完成,该问题最快修复的时间也需要 TX X10 SP1 发布。

mjhcad 发表于 2013-12-12 08:11:00

首先感谢Dof回答了好几个问题,很耐心。
我在编程中经常用到上下标。我提个建议,除了格式与Word和写字板兼容外,希望
TX自动处理上下标的字高,比如取当前字高的50%,而无需用TextControl1.InputFormat.FontSize
去特别指定 。现在的TX必须特别指定上下标的字高,如不特别指定将用当前字高来定义上下标。
也可以单独给定一个字高比例的属性如TextControl1.InputFormat.SuperscriptScale
来单独指定上标字高比例,不特别指定时与Word兼容,由程序内定比例。

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



以下是TX与Word的区别:

TX:



Word:




希望TX的下个版本能够改进上下标,同时也更好的兼容Word和写字板。
页: [1] 2
查看完整版本: 关于TX上下标新的建议,请管理员看看,反馈下。