科学网

 找回密码
  注册

tag 标签: 特殊字符

相关帖子

版块 作者 回复/查看 最后发表

没有相关内容

相关日志

再说说Unicode中的特殊符号
dingsir 2020-10-15 17:20
上下标形式的特定字符 有一次在微信朋友圈中,有个符号m 2 引起了我的兴趣,因为朋友圈的文本没有类似Word这样的富文本格式控制,这个平方米符号是怎么弄出来的呢? 我特意研究了一下,发现原来符号中还有一类上标符号, 比如说1~9的上标字符, 使用时只要输出这个字符放在m后面就好了,它的位置是设计好偏前一点的. 于是我找出来Unicode字符编码表研究了一阵,得到一些如果如下: 下表列出了这些特殊字符的Unicode码值. 将这个码值输入到Word中,选中,再按Alt+X键就可得到,很方便 . 符号 上标形式 下标形式 备注 0 2070 2080 1 B9 2081 上标形式在ASCII码表中就已经定义. 2071是上标字符 i 2 B2 2082 上标形式在ASCII码表中就已经定义 3 B3 2083 上标形式在ASCII码表中就已经定义 4 2074 2084 5 2075 2085 6 2076 2086 7 2077 2087 8 2078 2088 9 2079 2089 + 207A 208A - 207B 208B = 207C 208C ( 207D 208D ) 207E 208E n 207F 从上表可以看出, 上标字符与下标字符除了上标1,2,3之外, 都定义在Unicode码值为2070~208E这一段. 上标1,2,3因为很常用, 早在ASCII码表中就得到了规定,编制Unicode的后人就不再重复规定了. 所以,如果在文本中编写如下公式: ​ (latex公式实现) 也可以直接用字符来做到的, 指定了正确的字体, 即使在功能简陋的记事本中也可以(这个博客系统反而不行!): 费马定理.rar 除了数字与括号之外,还有一些英文字母、希腊字母也有相应的的上标与下标形式,但好象并非全部都有. 不过,如果你的文本文件显示所用的字体不支持这些特殊字符,可能你会看到一个个的问号或是空白. 需要设置一下文本显示使用“支持Unicode字符的字体“ 就好了,比如Arial Unicode MS. 在手机上, 搜狗输入法(iOS版本的我确定有,其它操作系统的不确定)的符号中有一类叫角标的符号,里面收集了不少这样的字符,你可以找找看. 当然,这些字符也只是能力比较有限的表达手段, 要想专业、复杂、而又美观的显示公式, 还是得借助专业的工具,比如公式编辑器,Tex语法或专业软件等等。 2. 看起来相似,实际上大不同的字符. 我们不妨叫它形似神不似的字符. 之前,我以为定义一个符号很简单,指定一个形状与一个编码就好了,但了解之后才发现, 有的符号在不同的场合或不同的领域有不同的意义, 很可能肉眼看到的同一个符号,其后台可能并不是同一个字符. 在这样的情况,哪些视为同一字符,哪些视为不同的字符,其实是个比较伤脑筋的事,没有我们想像的那么简单!好在这样的事不用我们管,Unicode标准组织想好了相应的规则或具体进行了划分和指定,在字符的说明中指了出来。 一个不太严格的例子就是全角字符与半角字符,看起来相像,实际上是不同的字符(码值不同). 下面举一个更极端的例子,一个中间分隔点有这么多变化,而且都是合法的Unicode字符. 还有一种情况是, 单一的特殊字符与用多个字母表示的字符,如一些特定组合℡、™、㏙ 、℻ ,或者是罗马数字Ⅳ 、Ⅷ、Ⅻ 等,他们都有特定的字符编码,与用英文字母拼凑出来的组合当然是完全不同的字符。 这样的现象会造成一些迷惑性的问题,比如你在某些场合使用了这类特殊字符, 但查找时又用了英文拼合的字串(或者其它的相似字符)去搜索,很显然计算机会告诉你找不到! 以前有一种网址欺骗的手段,也是基于这样的原理, 以其它字符集或编码的外形相同的字符来构建一个看起来相同的网址诱导你去点击, 让你以为那是正确的网址。 由于用户判断时往往只看外形,不会去解析它的码值是否正确,也就不能分辨是否真实的网址, 结果就中招了. 3.组合型字符 而且,Unicode中还有更有意思的字符, 比如定义在Unicode码值 0300~036F区间的组合型字符, 它们可以和前面输入的字符进行组合显示。 换句话说,它们显示时不占有字符的宽度,这样后一个字符就显示在前一个字符的位置上,造成两个字符的叠加而达到特殊的显示效果。但这一情况显然即不属于Latex之类的排版语法的控制,也不是Word的上下标或公式编辑器等特殊对象带来的排版效果,这个可能是从字体显示技术上取巧了。 在Word中演示一下: 我是一个化学生, 想显示氧原子带有一对孤对电子的样子,选中了上图中的0308组合字符. 在前面输入一个大写的氧原子,后面输入0308,再选中0308,按Alt+X,即可以得到如下的字符: 组合型字符.rar 这个不需要特殊的画图或插入图片,可以和其它文字一样正常排版. 测试之后我发现,这种显示与字体有关系,不是每种字体都能正常显示,比如楷体,宋体不行,但是Arial, 微软雅黑没有问题,即使在记事本中也可以正常显示. 如果按退格键往前删除,可以看到先消失顶上两个小黑点,再消失那个字符O. 利用上面提供的各种小符号,就可以组合出不同的扩展样式出来了. 这样的组合型字符还不止0300~036F这一段,别的地方也有定义,我就不展开了。有兴趣的请参见我上一篇博文中分享的文件Unicode Charts.
个人分类: 软件杂谈|8339 次阅读|0 个评论
GMT常用备份(持续更新中)
zhoufcumt 2019-12-9 14:46
GMT绘制符号: Word 字号与GMT 中字号(p) 对应关系: GMT 支持的35 种字体的名字及对应的编号: GMT特殊字符: 如果文本使用了12 号字体(Symbol)或34 号字体(ZapfDingbats),则此时八进制码具有不同的含义。需要查询下表: 欧洲特殊字母: GMT转义字符:
个人分类: GMT|3314 次阅读|0 个评论
gnuplot做直方图和设定坐标轴精度
richor 2018-4-17 09:40
与 统计直方图 (for example bond.plt ) 还不同,直方图更简单,不用做统计。 #life.plt settermpngsize640,480 setoutputlifetime.png setstyledatahistogram setstylehistogramclusteredgap2.5 setstylefillsolid0.4border setxlabelshiftpolar(e) setylabellifetime(ns) unsetkey plot'stable.dat'u2:xticlabels(1),'stable.dat'u3:xticlabels(1),... 'stable.dat'u4:xticlabels(1) 怎么设置 gnuplot 某坐标轴数值的精度? https://blog.csdn.net/liyuanbhu/article/details/8502461 set format x %7.3f 很有用。 直方图常常会label不够地方,采用倾斜的办法: set xtics rotate by -45 如果想取出这些数据,则set table. 特殊字符的输入: 直接从word中copy即可。
个人分类: 计算机|4564 次阅读|0 个评论
[转载]【MATLAB】Latex在MATLAB中的应用
JerryYe 2018-4-11 20:41
本文为转载内容,原文请访问: http://www.ilovematlab.cn/thread-273330-1-1.html 1.前言 当你的帖子需要用数学公式来描述问题时,你是否遇到过或正面临以下问题: 普通纯文本无法清楚地描述复杂的公式; 截图里的公式要么清晰度不高、要么尺寸难以把握; 截图右下角的有用信息 有时 会被论坛的 Logo 遮住。 很多数学问题,如微积分、微分方程、优化问题,其实都比较适合用公式来表述,如果提问者采用文字或截图来描述,可能就会遭遇以上问题。这些虽不是什么致命的问题,却经常造成解答者无法理解提问者的问题而大大延缓问题的解决时间。一个清楚的数学公式往往胜过一大段文字描述,这一点相信很多数学版块的 Matlaber 们有较深的体会。 前段时间,我把这些问题反映给了math。math 当即表示: “一定会尽快解决这些问题,为会员们营造一个便利的交流平台。” 很快,MATLAB中文论坛(iLoveMatlab)便悄无声息的推出了 LaTeX 公式输入法!如今你已经可以轻松地在帖子里插入漂亮的、符合出版质量的公式。 值得一提的是, iLoveMatlab 是 为数不多的 支持 LaTeX 输入法的 中文论坛之一,这充分体现了 MATLAB中文论坛 人性化的 设计。 2. 本帖的目的 应 math 的要求,我将在本帖里对论坛全新推出的 LaTeX 公式输入法做一个简要介绍,我还会介绍一些常见数学公式的 LaTeX 代码。需要强调的是, 本帖只是针对“ Matlab中文论坛所支持的 LaTeX 公式输入法”,并非针对一般 LaTeX (LaTeX 本身有无数个命令和复杂的宏包,这些知识不会在本帖涉及)。希望你能通过本帖的阅读,学会输入最基本的 LaTeX 数学公式。如果你还能通过此贴对 LaTeX 产生一定兴趣,那就算功德一件了。 3. 什么是 ? (如果不关心此话题可以立即跳过) “LaTeX 是一种排版系统,它使用 TeX 作为格式化引擎,非常适用于生成高印刷质量的科技和数学类文档。” 说得白话点,你可以用 LaTeX 来写学术论文和书籍,排版出任何文本、公式、表格、插图等元素。LaTeX 和传统的“所见即所得”的字处理软件(如Word、WPS)的输入方式有着很大的差别。在 Word 或 WPS 字处理软件里,你输入什么即显示什么,比如,你输入特定的字体、字号、颜色、公式、插图、表格等,这些元素就马上以相同的格式显示出排版结果,这个结果就是最终打印的结果。而在 LaTeX 里,你需要输入的是由 LaTeX 命令构成的文本文件,这个文本文件相当于一段“代码”,经过 TeX 系统编译后, 最终 输出排版效果,而这个排版效果和你输入的文本“代码”则大相径庭。 4. 如何使用论坛全新推出的 公式输入法? 下面我将以图文解说的形式来介绍如何在帖子里一步步插入 LaTeX 代码,并最终输出高质量排版效果的公式。首先,你需要进入帖子编辑状态的 “高级模式” 下,你会看到工具按钮最右边有个求和符号,如图所示 这个求和符号就是论坛的 LaTeX 公式输入按钮。点击该按钮,弹出如下 “ LaTeX 公式输入框” , 你可以在该框里输入任何符合 LaTeX 语法的公式代码。以爱因斯坦质能方程为例, 你需要在 LaTeX 公式输入框里 输入下列 代码: E_0=mc^2 (先不要理会 LaTeX 语法,第 5 小节会专门介绍 LaTeX 公式语法),如图所示 点“提交”按钮后,上述代码就 被 自动插入到帖子里。 为了和普通文本区分开,插入的 LaTeX 代码首尾会自动添加 和 ,如下图所示: 由于论坛暂不支持 LaTeX 公式输出效果的预览,所以,在帖子编辑状态下,你只能看到 LaTeX 代码,不能看到实际的输出效果,这正是 TeX 排版和“所见即所得”排版最大的区别。只有 当你的帖子发表后,在 LaTeX 代码正确的前提下,你才能看到公式输出效果(这说明 TeX 编译是在帖子发表后在后台自动进行的),如下所示: 【补充说明】:如果你早已熟悉了上述代码插入过程,你可以避开“ LaTeX 公式输入框”来直接插入 LaTeX 代码。做法是:直接在帖子的文本编辑框里输入 LaTeX 代码,并在代码放首尾分别放置 和 。 5. 如何写出正确的 公式代码? (如果你熟练使用 LaTeX ,请跳过) 上一小节已经介绍了如何在帖子里插入 LaTeX 代码,但你或许对 LaTeX 公式的语法一无所知,下面我将为你介绍 三种能 正确获取 LaTeX 代码的 方法。 掌握 LaTeX 基本语法后自己写 LaTeX 代码 偷懒法 1—— 利用 Matlab 符号计算输出 LaTeX 代码 偷懒法 2—— 利用 MathType工具生成 LaTeX 代码 方法 1 适用于愿意去学习 LaTeX 语法的坛友,自学 LaTeX 语法是一劳永逸的办法。方法 2、3 则适用于拒绝学习 LaTeX 语法、一心只想获取 LaTeX 代码的人,对于此类人群,即使你完全不懂 LaTeX,你依然可以通过 “偷懒” 的办法间接地获取 LaTeX 代码。 5.1掌握 基本语法自己写 LaTeX 代码 在本小节,我将以表格的形式分类列出一些最常见数学元素(如数学符号、运算符、函数、指令)的 LaTeX 代码及其输出效果。 对于 LaTeX 初学者,当你遇到一个具体的数学公式时,你可以先查询本小节的表格(表1-5) ,将这些数学元素对应的 LaTeX 代码找出来,再按照公式里的顺序将对应的代码写出来即可。等你熟练掌握 LaTeX 语法后,你就可以摆脱这些表格而独立写出正确的 LaTeX 代码了 。 需要说明的是,LaTeX 命令以反斜杠符 \\ 开始,接着是命令名。比如求和命令 \\sum、积分命令\\int。有些命令是带参数的,参数一般用大括号{ }括起来,比如,\\sqrt{x},\\frac{a}{b}。在LaTeX里,大括号{ }是保留字符,当多个字符用大括号{ }括起来时表示一个group。比如,公式里的上标或下标里有多个字符时,必须用{ }括起来。如果你想在公式里输出大括号,你就必须用 \\{ 命令得到左大括号,\\} 得到右大括号。 表 1. 常见数学符号、函数和公式 符号 / 公式 代码 输出效果 无穷大 \\infty 圆周率 \\pi 下标 x_n x_{2n+1} 上标(乘方) x^n x^{2n+1} 分式 \\frac{a}{b} 括号 ()\\{\\} 常见数学命令 行列式 \\det 辐角, argument \\arg 极限 \\lim 趋于无穷的极限 \\lim_{x \\to \\infty} 最大值 \\max 最小值 \\min 求和 \\sum 求和 \\sum_{n=1}^N 连乘积 \\prod 连乘积 \\prod_{n=1}^N 平方根 \\sqrt{x} 不定积分 \\int 定积分 \\int_a^b 1 阶微分 \\frac{dy}{dx} 2 阶微分 \\frac{d^2y}{dx^2} n 阶微分 \\frac{d^ny}{dx^n} 1 阶导数 f'(x) 2 阶导数 f''(x) n 阶导数 f^{(n)}(x) 常见数学函数 对数 \\log 以 10 为底的对数 \\log_{10} 自然对数 \\ln 指数 \\exp 正弦 \\sin 余弦 \\cos 正切 \\tan 余切 \\cot 反正弦 \\arcsin 反余弦 \\arccos 反正切 \\arctan 表2. 数学关系符 指令名称 代码 输出效果 大于 小于 大于等于 \\geq 小于等于 \\leq 等于 = 不等于 \\neq 表3. 常见集合指令 指令名称 代码 输出效果 属于 \\in 不属于 \\notin 交集 \\cap 并集 \\cup 子集 \\subseteq 真子集 \\subset 表 4. 常见希腊字母 代码 输出效果 \\alpha \\beta \\gamma \\theta \\mu \\eta \\epsilon \\lambda \\delta \\xi \\rho \\phi \\varphi \\psi \\chi 表 5. 括号大小的设置,括号可以是 (,), \\{ , \\} 指令名称 代码 输出效果 自动大小匹配命令 \\left 和 \\right 必须成对出现 \\left ( \\right) 当没有右括号时,也必须写出 \\right 命令,后面跟一个点 \\left ( \\right. 手动控制大小命令 (无需成对出现) 大 \\big ( 较大 \\Big ( 更大 \\bigg ( 最大 \\Bigg ( 【表5补充说明】: 论坛 的 LaTeX 输入法无法正确解析中括号 ,如果你的代码里有中括号,将不会得到期待的输出效果 (而一般 LaTeX 是完全支持中括号的)。之所以会这样,是因为论坛的 LaTeX 代码是以 和 来标识的,这个标识符里已经含中括号了,如果你的代码里再出现中括号,就会对论坛的 LaTeX 解析器造成混淆。所以,你的公式里只能使用小括号( ) 和大括号 { },不能使用中括号 。 有了上面的表格,你已经完全具备独立写出一些常见数学公式的 LaTeX 代码的能力了。 不论什么数学公式,都只是涉及一些基本的数学元素。你只用查表将这些数学元素对应的 LaTeX 代码按公式的顺序写出来即可(等你熟练掌握后,你就可以脱离这些表格而独立写出代码了) 。 下面举个复杂一点积分式子作为例子。 例1. 公式如下所示 分析:这个公式虽然看起来复杂些,但所涉及的元素也超不出我上面表格里描述的所有情形。比如,这里涉及了分式(\\frac)、平方根(\\sqrt)、上标(^)、下标(_)、指数函数(\\exp)、大尺寸的括号(\\Bigg或用\\left \\right配对实现)。你所需要做的是,将这些元素按照公式里的顺序依次写出来。完整的代码如下: A = \\frac{1}{\\sqrt{2\\pi\\sigma}}\\int_0^\\infty\\frac{a_1x^2+b_1x+c_1}{a_2x^2+b_2x+c_2}\\exp\\left(-\\frac{(x-\\mu)^2}{2\\sigma^2}\\right)dx 复制上述代码到论坛 LaTeX 公式输入框即可。 LaTeX 的学习其实并不难,从我上面列出的表格也可以看出,你其实只用掌握表格里这些最基本的数学元素即可。尽管如此,相信还是会有人拒绝去学习最基本的 LaTeX 语法。针对这批人, 我特意给出两种“偷懒办法”,有了这种偷懒法,即使你没有任何 LaTeX 基础,你依然可以快速得到正确的 LaTeX 代码。 5.2偷懒法1——利用Matlab符号计算输出 代码 利用 matlab 的符号计算,先在matlab中将公式表达式写成符号表达式,然后用 LaTeX 函数输出 LaTeX 代码,复制代码即可。 例2. 利用Matlab输出如下公式的LaTeX代码 解答办法:用下面的 matlab 代码获取 LaTeX 代码 expr = sym('(a_1*x^2+b_1*x+c_1)/(a_2*x^2+b_2*x+c_2)'); latex(expr) 复制代码 ans = \\frac{a_{1}\\, x^2 + b_{1}\\, x + c_{1}}{a_{2}\\, x^2 + b_{2}\\, x + c_{2}} 复制上面的LaTeX代码到论坛LaTeX公式输入框即可。 从例2看出,利用Matlab符号计算可以方便地获取LaTeX代码,你不用担心出现LaTeX语法错误。 但在某些情况下,这种方法是有其局限性的: 如果你的符号表达式经符号计算后被matlab符号引擎自动化简了,那么,你就难以得到期待的公式代码; 如果 你的公式涉及到以 \\ 起头的变量名,比如,希腊字母,那么,你将难以得到期待的输出,因为matlab会把 \\ 起头的变量名看作是非法的变量名(\\ 是matlab矩阵左除运算符)。 下面分别举例说明。 例3. 利用Matlab输出如下公式的LaTeX代码 Matlab 代码为: A = sym('a+2+3') latex(A) 复制代码 复制得到的 LaTeX 代码为: a + 5 这就是因为这个计算被符号引擎自动化简了,所以,无法得到 a+2+3 。 例 4. 利用Matlab输出公式 (1) 的LaTeX代码 分析:这里涉及到以 \\ 起头的变量名有: \\pi 和 \\sigma 。 Matlab 符号表达式里如果直接放入 pi 的话,最终会得到分式显示。如果想得到 pi 的输出,应该用 sym('pi') 。然而,面对 \\mu 和 \\sigma 似乎就无能为力了,因为这些是非法的matlab变量名。 下面是 matlab 代码 syms a_1 b_1 c_1 a_2 b_2 c_2 x sigma mu A = 1/(sqrt(2*sym('pi'))*sigma)*int((a_1*x^2+b_1*x+c_1)/(a_2*x^2+b_2*x+c_2)*exp(-(x-mu)^2/(2*sigma^2)),x,0,Inf); latex(A) 复制代码 Warning: Explicit integral could not be found. ans = \\frac{\\sqrt{2}\\, \\int_{0}^{\\infty} \\frac{\\mathrm{e}^{-\\frac{{\\left(\\mathrm{mu} - x\\right)}^2}{2\\, {\\mathrm{sigma}}^2}}\\, \\left(a_{1}\\, x^2 + b_{1}\\, x + c_{1}\\right)}{a_{2}\\, x^2 + b_{2}\\, x + c_{2}} \\,\\mathrm{d} x}{2\\, \\sqrt{\\pi}\\, \\mathrm{sigma}} 复制上述 LaTeX 代码并插入论坛 LaTeX 公式输入框,最后得到的输出效果如下: 很显然,这个输出效果离我们期望的公式效果有很大的差别(你或许可以通过一些符号计算规则来修改最终的输出,但你始终难以获得公式(1)期待的输出效果)。另外,因为matlab符号计算无法求出解析解,我们才能获得上面这个不太像的积分表达式。如果matlab最终求出了积分表达式,那用latex输出就只能得到最终的解析解,而无法得到积分公式了。 因为“偷懒法1”存在一些局限性,下面给出一个更加完善的 “偷懒法2” 。 5.3偷懒法2——利用MathType工具生成 代码 在 你 完全不懂 LaTeX 语法的前提下,可以直接在 MathType 里按 MathType 的输入方式来输入公式,最后复制 MathType 公式便能得到相应的 LaTeX 代码。 为了实现这个,你必须首先保证你的 MathType 至少是不低于6.0的版本( 印象中 MathType 是从6.0开始支持 LaTeX 的, 我个人使用的是6.7版本 ),其次, 你还需要对 MathType 做一些小小的设置: Preferences \\ Cut and Copy Preferences,选中MathML or Tex,并选择LaTex 2.09 and later Preferences \\ Workspace Preferences,选中Allow Texlanguage from the keyboard (这个主要是为了支持在 word 里直接输入 LaTex 代码并得到公式效果) Style \\ Define , Primary font 选择为 Times New Rome (我个人一般使用这个字体),另外, Greek and Math fonts 一定要选择为 Euclid Symbol and Euclid Extra ,才能获得跟 LaTex 最接近的数学字体。 以上设置详细图解如下: 完成了以上设置后,你就可以直接在 MathType 里按照你熟知的方式输入公式,然后选中公式并复制,你就得到了相应的 LaTex 代码。如下图所示: 复制得到的代码如下所示(代码首尾会自动添加 \\ ): \\ 【切记一点】 : MathType 输出的 LaTex 代码首尾分别 有 \\ ,这用以标识一般 LaTex 的数学模式,和普通文本模式加以区分的。 \\ 实现的功能 就相当于咱们论坛的 和 一样。所以,当你从 MathType 复制了代码后,你一定要把 \\ 分别替换成 和 ! 另外,值得一提的是,你还可以直接将 LaTex 代码复制到 MathType 里并回车,就能得公式输出效果。鉴于论坛不支持 LaTeX 输出效果预览(而要等到帖子发表后才能输出公式),你完全可以先将写好的代码放到 MathType 里测试一番,看是否能得到公式。如果不能,就说明你的代码有语法错误。 6. 结论 本帖主要介绍了如何使用论坛最新推出的 LaTeX 输入法,同时介绍了一些常用的 LaTeX 语法,在这些常用语法基础上,你将可以顺利在帖子里插入常见的公式。如果,您拒绝学习这些常见 LaTeX 语法,你还可以借助此贴提供的两种偷懒法来获取 LaTeX 公式代码。 建议 1 : 如果有时间的话,最好还是学习一下 LaTeX 语法,只有懂了语法,你才能脱离任何平台写出正确的 LaTeX 代码。你可以以本帖5.1小结的总结作为你学习 LaTeX 的起点。另外,如果你愿意的话,网上还有很多 LaTeX 学习指南。在附录部分,我将为您推荐一些 LaTeX 学习资料。 建议 2 : 你可以回复本帖,在回复中试用一下论坛的 LaTeX 输入法。你可以尝试写一些简单的公式,比如直接复制我例子或表格里的 LaTeX 代码,看看输出效果。当然,如果你对 LaTeX 还有任何疑问,欢迎你跟帖讨论。 最后祝您有个更加愉快的论坛体验,也祝您新年快乐,学习、事业更上一层楼! 7. 附LaTeX相关资源 LaTeX/Mathematics on Wikipedia (比较全面的 LaTeX 公式介绍): http://en.wikibooks.org/wiki/LaTeX/Mathematics lshort: 一份不太简短的 介绍 (很多初学者包括我本人学习 LaTeX 的入门资料): 中文 LaTeX(简称CTEX)套装下载 (CTEX套装集成了 MikTeX 和所有 LaTeX 相关的宏包。在全中国,绝大多数人使用的 LaTeX 都是CTEX套装。安装CTEX套装后,你可以用 LaTeX 排版出任何文档、论文、书籍): http://www.ctex.org/CTeXDownload 最好的中文LaTex论坛是CTEX论坛: http://bbs.ctex.org/forum.php (如果你想跟 LaTeX 高手们交流,可以到CTEX论坛) 原文地址: http://www.ilovematlab.cn/thread-273330-1-1.html
个人分类: Matlab|2891 次阅读|0 个评论
[转载]如何在Origin中插入特殊符号而不出现乱码
HpJi 2018-2-13 15:04
http://www.eryi.org/blog/post/symbol.html 本文属于转载,版权归上述链接中原作者所有。 用 Origin 作图时插入某些特殊符号(如αβμ等希腊字母或℃等某些单位符号)之后,粘贴到Word里就会变成乱码或问号。如何解决这个问题呢? 方法1:在Origin的文本输入状态下,按Ctrl+M快捷键,出现特殊符号库。通过这种方式插入的特殊符号在Word里面也可以正常显示。 方法2:专门针对Origin中输入希腊字母而言。点击工具栏的Greek按钮(即“αβ”按钮)或者ctrl+g快捷键,就可以通过键盘输入希腊字母了,还可以切换大小写。比如在这种状态下,m键就是希腊字母的μ。 方法3:在Origin软件里输入特殊符号后,选中它们,然后在Origin快捷工具栏里将字体设置为宋体或者Symbol。设置完毕之后,这时候再将Origin里作的图粘贴到Word中,所有特殊符号都可以正常显示了。
个人分类: 作图|2223 次阅读|0 个评论
[转载]latex特殊字符表格(全)
plgongcat 2013-9-8 14:51
http://blog.sina.com.cn/s/blog_642075770100u0np.html
个人分类: latex|14012 次阅读|0 个评论
从密码强度到高维诅咒
热度 1 yufree 2012-7-9 20:37
很多网站在设置密码时会提醒你使用大小写与特殊字符以提高密码强度,这样做对吗?对了一半。 首先,这句话对是因为它提示很多人避免使用简单密码。即便出现了CSDN密码泄漏问题,很多人依然固执的使用生日、电话号码、邮箱、姓名甚至是888888或123456来作为密码。这种密码很容易被破解不是因为它使用的字符简单,而是它本身有规律。就像福尔摩斯利用词频破解跳舞小人的密码一样,本身有规律的字符是可以根据经验来猜测的,这样就会有人将这些规律总结,最后通过一个“字典”提供给想破解密码的人,而破解者会优先考虑使用这个字典中的数据进行猜测,这样就会极大的提高命中率,应该说这是经验性的但却很实用。也许有人会说怎样寻找这种规律,很简单,你去下载一个CSDN泄漏的密码包去归纳总结下就知道了。但就算没有泄漏,想想自己经常用的密码就知道了。但多数负责任的网站通过脚本会直接拒绝你设置密码时使用简单密码,方法与破解一致,写个脚本检查你的密码是否与“字典”中简单密码是否一致就可以,当然“字典”是由无数本的。 其次,这句话不对的地方在于对于一个不用字典而使用暴力破解方式的人而言,666666跟aB#^d3没有任何区别。每一个字符的可能性跑不出你的键盘上的键盘数×2(因为有上档键),也就是不超过100个,那么6位密码的可能性就是100^6种可能,这对于现代计算机而言就是几毫秒的事,但密码位数多了就不一样了,在微软的密码检查器中(https://www.microsoft.com/zh-cn/security/pc-security/password-checker.aspx) 你不断输入1就会发现密码强度开始虽然是弱的,但最终会变为best,也就是说对于暴力破解,一个简单的长密码要比复杂的短密码安全的多。顺便说一下微软也提供了所谓强密码的建立原则 (http://www.microsoft.com/zh-cn/security/online-privacy/passwords-create.aspx) ,感兴趣看一下。 最后,今天真正想说的就是长密码。现在我们重新来看一下长密码安全的原因,很简单,密码必须要由字符构成,而字符的种类与字符串的长度是密码的基本属性。把这一过程再抽象一下就是我有一个集合,集合里有若干元素,每个元素有若干可能。好了,有点数学常识的就会意识到了,这不就是一个多维向量吗。而密码的安全性无过于就是多维向量的唯一性不被猜测出而已,维度数就是字符长度,每一维的属性值就是字符的种类。那么结果呢?结果就是维度越高唯一性就会越强。换句话讲,当你描述一个物体的特性越多时,这个物体就越不容易被认错。沿着这个思路走,在笛卡尔三维空间里,我们知道一个球的空间坐标后或许就可以确定这个物体是什么了,但我们并不能很好的“描述”这个球,或者说多数情况下“唯一性”只是我们主要用来区别其他物体的一个模糊概念,但从不同角度说的话会有很多判别标准,或者说为了描述一个概念,我们可以调用无数的分类特征,但这有必要吗? 没有,这就是今天要说的高维诅咒 (http://en.wikipedia.org/wiki/Curse_of_dimensionality) 。因为通常多数人不理会那个链接而真正理会那个链接的人又不屑于看我写的东西,我还是解释一下这个基本概念,这个词是“用来描述当(数学)空间维度增加时,分析和组织高维空间(通常有成百上千维),因体积指数增加而遇到各种问题场景”。还不够直观?打比方我去采样测定污染物,在某个10平方米的地方每隔1米取样也就100个样但如果这是个10维空间,我要在除了长、宽以外的维度的8个维度上取样就悲剧了,需要取10的10次方个点,这是什么意思呢?如果污染物只存在某100个点上那在二维空间里我都能测到还可以画一个浓度分布图(这其实多了一个维度)。但如果考虑10维空间,那这些点分布实在太稀疏了,根本看不出什么有规律的分布来,这就是高维诅咒的现象。也许你说这没什么不好,没有两片相同的树叶吗,但当我们真正去了解这个世界时,我们多数情况下是依赖自己的感觉与前人流传的知识,而所谓的知识大都来自于一种总结,这种归纳式的理论有利于我们将其内容应用到以后的生活中(这当然是一种实用主义的说法而已),而感觉也是在总结抽象一些鲜活的实例为知识而已。这样,如果我们打算去了解一个或一类事物并保证从中抽象出的知识是可重复(也就是可实用,当然我也知道罗素的养鸡场悖论,但自从哥德尔之后我们应该可以活得更豁达一些了)的,我们要收集足够的样本,但过于详细的描述却使这项工作变得异常复杂并且远离直观且根本就达不到统计规律所需要的样本数,那这个现象就没用了吗? 不会,高维诅咒对于密码设置很有意义,正因为现在多数人都会在设置密码时使用大小写或特殊字符,所以对于字典不全的破解者而言根本不用区分,把每一个字符当成一个维度,把可能的变化当成维度上的数去试就好了,在大型计算机的帮助下很快就可以了,但维度高了就不一样了,计算量是级数级的增长,当然也许对未来的计算机也不算什么了。但维度过高对于网站也是一种负担,因为存储数据也是要占用服务器资源的,而且多数人也不会去考虑搞一个很长的密码(当年DES密码设计时就有类似考虑而限制了密钥长度)。其实,这些都只是需求对技术的妥协,也许有一天,这一切都不是问题。但是,无论如何,只要我们需要交流或信息流通,加密与解密就必须跟上要求,否则我们就得适应三体人的生活。 那么倒数第二个问题的答案会不会是有必要呢?下一篇打算讨论下这个问题——从高维诅咒到因子分析。希望不会像诺莫图那样一停停一年到现在也没谱。
个人分类: 科搜研手册|5799 次阅读|3 个评论
[转载]Python String和PyQt QString的区别
yaozongzhuan 2011-10-18 20:46
原文: http://blog.sina.com.cn/s/blog_4b5039210100h9kp.html 以下在python2.5和PyQt4.4.6 for python2.5环境下讨论。 在python中有两种与字符有关的类型:string object和Unicode object。 平时进行输入输出的一般都用string object,当需要显示一些特殊字符或者中文等文字时候,需要转换为Unicode编码。在PyQt中也有两种字符类型与上面两者对应:QByteArray和QString,主要是使用QString操作数据。 1) python string object可以理解为一个接一个字节的字节组,至于表示什么编码,与表示文字有关,比如“python string”,“中文”。注意它是有不同编码区分的。 PyQt中与之对应的是QbyteArray,而不是Qstring。 A built-in string object (plain or Unicode) is a sequence of characters used to store and represent text-based information (plain strings are also sometimes used to store and represent arbitrary sequences of binary bytes). (摘自《Python in a NutShell》) QByteArray can be used to store both raw bytes (including '"0's) and traditional 8-bit '"0'-terminated.(摘自《PyQt手册》) 2)Python Unicode object可以理解为固定使用utf-16编码的字节组,其中英文和中文都使用两个字节(16位)来表示,如:u"Python Unicode object"、u"中文"。 PyQt中与之对应的就是QString了。 Unicode string literals have the same syntax as other string literals, with a u or U immediately before the leading quote. (摘自《Python in a NutShell》) Qt also provides the QString class to store string data. It stores 16-bit Unicode characters, making it easy to store non-ASCII/non-Latin-1 characters in your application.(摘自《PyQt手册》) QString stores a string of 16-bit QChars, where each QChar corresponds one Unicode 4.0 character.(摘自《PyQt手册》) 2 PyQt内部类型转换 QString有 toAscii()、toUtf8()函数转换为QByteArray类型,(这个基本不用,因为很少直接用QByteArray类型)有__init__ (self, QByteArray a)函数将QByteArray类型转为QString。 3. Python string object和Python Unicode object相互转换 1)Python string object是原始编码是有区分的,通过 decode('原始编码') 函数解码得到通用utf16编码即Python Unicode object。 "python string".decode('ascii') 或者 "python string".decode() 得到 u"python string" 因为默认按ascii解码。 "中文".decode('gbk') 得到 u""u4e2d"u6587" ,打印出来就是 中文 二字。(注意结果是2字节一组,共两组,对应两个汉字) 又:"python string".decode('gkb') ,即按汉字来解码,也可以得到 u"python string",因为gbk编码也支持英文字母; 但是"中文".decode('ascii') 即按ascii解码是错误的,因为ascii编码不支持汉字! "dfdf".decode() u'dfdf' "dfdf".decode("ascii") u'dfdf' "dfdf".decode("gbk") u'dfdf' "中文".decode("gbk") u'"u4e2d"u6587' print "中文".decode("gbk") 中文 "中文".decode("gb2312") u'"u4e2d"u6587' "中文".decode("ascii") Traceback (most recent call last): File "interactive input", line 1, in module UnicodeDecodeError: 'ascii' codec can't decode byte 0xd6 in position 0: ordinal not in range(128) 2)Python Unicode object原始编码固定是utf16,通过 encode('目的编码') 编码来得到Python string object。 u"unicode string".encode() 或者 u"unicode string".encode('ascii') 得到 'unicode string',默认目的编码为ascii。 u"中文".encode("gbk") 得到'"xd4"xd0"xce"xc4',打印出来就是 中文。(注意结果是1字节一组,共4组) u"sdff".encode() 'sdff' u"sdff".encode('ascii') 'sdff' u"sdff".encode('gbk') 'sdff' u"sdff".encode('gb2312') 'sdff' u"中文".encode('gbk') '"xd6"xd0"xce"xc4' print u"中文".encode('gbk') 中文 u"中文".encode('ascii') Traceback (most recent call last): File "stdin", line 1, in module UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordin al not in range(128) 注意:执行 u"中文".encode('gbk')命令需要你的IDE支持gbk编码,在官方shell下执行肯定没问题,但如果你的IDE比如PyWin中文输入异常,则可能报错。 4. Python string object和Python Unicode object向QString的转换。 Qt一般不直接操作QByteArray,只需关注Python string object和Python Unicode object向QString的转换。 很多关于PyQt4的英文书籍说:PyQt函数需要QString参数的地方都可以直接用Python string object或者Python Unicode object,如果非要转换可以直接用QtCore.QString()构造。比如《GUI Programming with PyQt》,再如《PyQt手册》: Whenever PyQt expects a QString as a function argument, a Python string object or a Python Unicode object can be provided instead, and PyQt will do the necessary conversion automatically. You may also manually convert Python string and Unicode objects to QString instances by using the QString constructor as demonstrated in the following code fragment: qs1 = QtCore.QString("Converted Python string object") qs2 = QtCore.QString(u"Converted Python Unicode object") 但可惜这只适用于英文即ascii编码,对于中文则行不通! 直接的QString: QtCore.QString('中文') PyQt4.QtCore.QString(u'"xd6"xd0"xce"xc4') print QtCore.QString('中文') Traceback (most recent call last): File "stdin", line 1, in module UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-3: ordin al not in range(128) QtCore.QString(u'中文') PyQt4.QtCore.QString(u'"u4e2d"u6587') print QtCore.QString(u'中文') Traceback (most recent call last): File "stdin", line 1, in module UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordin al not in range(128) 因为它们都是默认按ascii编码转换! GUI编程: 可以创建一个QTextEdit对象myTextEdit, 检验: myTextEdit.append("中文") 或者 myTextEdit.append(u"中文") 或者 myTextEdit.append(QtCore.QString('中文')) 或者 myTextEdit.append(QtCore.QString(u'中文')) 你会发现显示都是乱码...因为它们都是默认按ascii编码进行内部转换得到QString相应utf16编码的。 解决方法是: 利用unicode()函数显示指定gb2312编码进行中文编码转换,转换后的Python Unicode object则是可以直接作为QString参数代入用的: unicode('中文', 'gb2312', 'ignore') u'"u4e2d"u6587' print unicode('中文', 'gb2312', 'ignore') 中文 myTextEdit.append(unicode('中文', 'gb2312', 'ignore')) #用以替代myTextEdit.append(u"中文") 或者多此一举下: myTextEdit.append(QtCore.QString(unicode('中文', 'gb2312', 'ignore'))) #用以替代myTextEdit.append(QtCore.QString(u'中文')) 5. QString向Python string object和Python Unicode object的转换。 Python中需要用Python string object和Python Unicode object的地方可就不一定可以直接用QString了!!! QString向Python string object转换可以理解,因为编码不同。 QString向Python Unicode object的转换?需要转换吗?不都是utf16编码吗? QString是tuf16编码,但是它的实现并非Python Unicode object那样直接的utf16码,而实际是一个QChar串,每个QChar才对应unicode符,所以地位相当但并不相同。 许多英文书籍写到:可以使用str()函数直接将QString转换为Python string object,可以使用unicode()直接将QString转换为Python Unicode object。如《PyQt手册》: In order to convert a QString to a Python string object use the Python str() builtin. Applying str() to a null QString and an empty QString both result in an empty Python string object. In order to convert a QString to a Python Unicode object use the Python unicode() builtin. Applying unicode() to a null QString and an empty QString both result in an empty Python Unicode object. 但同样只适用于英文,具体见下面分别分析。 1)QString向Python Unicode object的转换。 from PyQt4 import QtGui, QtCore unicode(QtCore.QString('def')) u'def' print unicode(QtCore.QString('def')) def 对于中文,unicode()必须要指定编码后有效。(这样也只针对直接的QString有效?对于Qt GUI编程中,从QWidget取得的QString无效?) from PyQt4 import QtGui, QtCore unicode(QtCore.QString('中文')) u'"xd6"xd0"xce"xc4' print unicode(QtCore.QString('中文')) Traceback (most recent call last): File "stdin", line 1, in module UnicodeEncodeError: 'gbk' codec can't encode character u'"xd6' in position 0: il legal multibyte sequence 指定原始编码后: unicode(QtCore.QString('中文'),'gbk','ignore') u'"u4e2d"u6587' print unicode(QtCore.QString('中文'),'gbk','ignore') 中文 TEST
个人分类: Python|5090 次阅读|0 个评论
Origin 特殊字符
swx0789 2011-9-25 16:28
1. 在文本框上右键单击——》propertiy——》在弹出的文本框内需要的位置输入\(a197)就会显示了 注意,要变换字号的话应将文本变换好之后再加单位,否则埃单位字号不变 2 symbol map (先双击文本框,然后右键选择symbol map)导入常用字符 3 origin-edit-copy page-word-paste 把origin图片导入word
个人分类: 知识储备|4207 次阅读|0 个评论
[转载]matlab学习
wjc05 2011-8-27 20:50
http://bbs.sciencenet.cn/home.php?mod=spaceuid=295036do=blogid=281362 1、在matlab中怎么输入特殊符号 下标用 _(下划线),右上标 ^,如cm^-^1,g.kg^-^1,希腊字母等特殊字符用 \加拼音 如 α \alpha ,β \beta ,γ \gamma ,θ \theta ,Θ \Theta ,Г \Gamma ,δ \delta ,Δ \Delta ,ξ \xi ,Ξ \Xi ,η \elta, ε \epsilong ,ζ \zeta ,μ \miu ,υ \nu ,τ \tau ,λ \lamda ,∧ \Lamda ,π \pi ,∏ \Pi ,σ \sigma ,∑ \Sigma ,φ \phi ,Φ \Phi ,ψ \psi ,Ψ \Psi ,χ \chi ,ω \ommiga ,Ω \Ommiga , \leq , \geq ,不等于 \neq , \ll , \gg ,正负 \pm ,左箭头 \leftarrow ,右箭头 \rightarrow ,上箭头 \uparrow 例 text(2,3,'\alpha_2^\beta') 2,注: 可用{}把须放在一起的括起来 3,Matlab图形中允许用TEX文件格式来显示字符。使用\bf,\it,\rm表示黑体,斜体,正体字符,特别注意大括号{ }的用法。 4,比如想打一个符号:x的正上方加一横,作为横轴的名称, xlabel('$\bar x$','Interpreter','latex','fontsize',18) 5,画图命令积累, subplot(3,2,1) plot(x) title('默认格式') subplot(3,2,2) plot(x) set(gca,'xtick', ); set(gca,'ytick', ); set(gca,'xticklabel',sprintf('%03.4f|',get(gca,'xtick'))) set(gca,'ytick', ); set(gca,'yticklabel',{'Two','Four','Five','Seven'}); title('XY自定义间隔、精度及显示方式') subplot(3,2,4) plot(x) set(gca,'xminortick','on');%style 5 set(gca,'ticklength', ); set(gca,'tickdir','out'); title('XY坐标刻度显示方式') subplot(3,2,5) plot(x) set(gca,'xtick', ); set(gca,'ytick', ); title('论文中常用的标准3点式显示') x=20:10:20000; y=rand(size(x)); subplot(3,2,6) semilogx(x,y); set(gca,'XLim', ); set(gca,'XMinorTick','off'); set(gca,'XTick', ); set(gca,'XGrid','on'); set(gca,'XMinorGrid','off'); title('自定义网格显示') plot 建立向量或矩阵各队队向量的图形 字元 颜色 字元 图线型态 loglog x、y轴都取对数标度建立图形 y 黄色 . 点 semilogx x轴用于对数标度,y轴线性标度绘制图形 k 黑色 o 圆 semilogy y轴用于对数标度,x轴线性标度绘制图形 w 白色 x x title 给图形加标题 b 蓝色 + + xlabel 给x轴加标记 g 绿色 * * ylabel 给y轴加标记 r 红色 - 实线 text 在图形指定的位置上加文本字符串 c 亮青色 : 点线 gtext 在鼠标的位置上加文本字符串 m 锰紫色 -. 点虚线 grid 打开网格线 -- 虚线 hold on 命令用于在已画好的图形上添加新的图形 1 x=0:0.001:10; % 0到10的1000个点(每隔0.001画一个点)的x座标 y=sin(x); % 对应的y座标 plot(x,y); % 绘图 注:matlab画图实际上就是描点连线,因此如果点取得不密,画出来就成了折线图,请试验之 2 Y=sin(10*x); plot(x,y,'r:',x,Y,'b') % 同时画两个函数 3 若要改变颜色,在座标对后面加上相关字串即可: x=0:0.01:10; plot(x,sin(x),'r') 4 若要同时改变颜色及图线型态(Line style),也是在坐标对后面加上相关字串即可: plot(x,sin(x),'r*') 5 用axis( )函数来调整图轴的范围 axis( ) 6 MATLAB也可对图形加上各种注解与处理:(见上表) xlabel('x轴'); % x轴注解 ylabel('y轴'); % y轴注解 title('余弦函数'); % 图形标题 legend('y = cos(x)'); % 图形注解 gtext('y = cos(x)'); % 图形注解 ,用鼠标定位注解位置 grid on; % 显示格线 7画椭圆 a = '; %角度 X = cos(a)*3; %参数方程 Y = sin(a)*2; plot(X,Y); xlabel('x'), ylabel('y'); title('椭圆') 8 绘制函数 在0 ≤ x ≤ 1时的曲线。 x=0:0.1:1 y=x.*exp(-x) %为什么用点运算?若不用会怎样 plot(x,y),xlabel('x'),ylabel('y'),title('y=x*exp(-x)') 9 画出衰减振荡曲线 与它的包络线 及 。t 的取值范围是 。 t=0:pi/50:4*pi; y0=exp(-t/3); y=exp(-t/3).*sin(3*t); plot(t,y,'-r',t,y0,':b',t,-y0,':b') % -r表示红色实线,:b表示蓝色点线,看上表 grid 10 在同一个画面上建立几个坐标系, 用subplot(m,n,p)命令;把一个画面分成m×n个图形区域, p代表当前的区域号,在每个区域中分别画一个图,如 x=linspace(0,2*pi,30); y=sin(x); z=cos(x); u=2*sin(x).*cos(x); v=sin(x)./cos(x); subplot(2,2,1),plot(x,y),axis( ),title('sin(x)') subplot(2,2,2),plot(x,z),axis( ),title('cos(x)') subplot(2,2,3),plot(x,u),axis( ),title('2sin(x)cos(x)') subplot(2,2,4),plot(x,v),axis( ),title('sin(x)/cos(x)') 三维图形 11三维螺旋线: t=0:pi/50:10*pi; plot3(sin(t),cos(t),t) %参数方程 grid %添加网格 12 t=linspace(0,20*pi, 501); plot3(t.*sin(t), t.*cos(t), t); %注意点乘 也可以同时画出两条曲线,格式与二维情况类似,兹不举例。 13用mesh命令画曲面 画出由函数 形成的立体网状图: a=linspace(-2, 2, 25); % 在x轴上从(-2,2)取25点 b=linspace(-2, 2, 25); % 在y轴上取25点 =meshgrid(a, b); % x和y都是21x21的矩阵 z=x.*exp(-x.^2-y.^2); % 计算函数值,z也是21x21的矩阵 mesh(x, y, z); % 画出立体网状图 14 surf和mesh的用法类似: a=linspace(-2, 2, 25); % 在x轴上取25点 b=linspace(-2, 2, 25); % 在y轴上取25点 =meshgrid(a, b); % x和y都是21x21的矩阵 z=x.*exp(-x.^2-y.^2); % 计算函数值,z也是21x21的矩阵 surf(x, y, z); % 画出立体曲面图
11412 次阅读|0 个评论

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-6-14 11:35

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部