我有一组UTF-8字符,我想插入PyX
生成的pdf文件。
我已将# -*- coding: utf-8 -*-
添加到文件顶部。代码有点类似于以下内容:
# -*- coding: utf-8 -*-
c = canvas.canvas()
txt = "u'aあä'"
c.text(2, 2, "ID: %s"%txt)
c.writeEPSfile("filename.eps")
但我仍然无法理解这一点。
错误:
'ascii' codec can't encode character u'\xae' in position 47: ordinal not in range(128)
答案 0 :(得分:1)
试试这个:
# -*- coding: utf-8 -*-
c = canvas.canvas()
txt = u'aあä'.encode('utf-8')
c.text(1, 4, "UID: %s"%(txt))
c.writeEPSfile("filename.eps")
答案 1 :(得分:1)
您可以设置PyX将unicode字符传递给(La)TeX。然后,在TeX / LaTeX中生成有问题的字符都成为一个问题。这是产生相关输出的一个相当小的解决方案:
from pyx import *
text.set(cls=text.LatexRunner, texenc='utf-8')
text.preamble(r'\usepackage[utf8]{inputenc}')
text.preamble(r'\usepackage{newunicodechar}')
text.preamble(r"\newunicodechar{あ}{{\usefont{U}{min}{m}{n}\symbol{'102}}}")
text.preamble(r'\DeclareFontFamily{U}{min}{}')
text.preamble(r'\DeclareFontShape{U}{min}{m}{n}{<-> udmj30}{}')
c = canvas.canvas()
c.text(0, 0, 'UID: aあä')
c.writeGSfile('utf8.png')
这直接导致输出(如此处上传的PNG):
请注意,这是在Python 3上使用PyX 0.13和相当标准的LaTeX安装完成的。另外,我使用了https://tex.stackexchange.com/questions/171611/how-to-write-a-single-hiragana-character-in-latex中有关在LaTeX中创建这些字符的一些信息。似乎有像CJKutf8这样的解决方案来设置所有类型的字符,直接用作LaTeX中的unicode字符,但这是出于我的经验。无论如何,如果所有设置都已正确完成,它应该在PyX内部工作正常,就像从LaTeX本身那样。祝你好运!
答案 2 :(得分:1)
也许你可以从babel包找到一套相应的套装
当我尝试插入德语ä
(变音符号)时,我遇到了同样的错误。我只是添加了德国巴贝尔包:
text.preamble(r"\usepackage[ngerman]{babel}")
之后,这可能没有错误:
c.text(12, 34, "äöüßß")
我也使用了utf8输入编码,我认为这也是必要的。
进一步阅读:
https://en.wikibooks.org/wiki/LaTeX/Internationalization
https://en.wikibooks.org/wiki/LaTeX/Fonts