所以我正在尝试从 Python 生成 postscript。目前在 Python3.4.2 上尝试使用 PyX 0.14.1,但如果您知道更简单的内容,我愿意接受建议。
我主要关注这个线程中 PyX 邮件列表中的建议。这是 Python2 并且已经很老了。以下显示了经过多次更改后我当前的代码:
from pyx import *
text.set(cls=text.LatexRunner, texenc='utf-8')
text.preamble(r'\usepackage{ucs}')
text.preamble(r'\usepackage[utf8x]{inputenc}')
c = canvas.canvas()
c.text(5, 5, "Sören Sundstrøm".encode("utf8"))
p = document.page(c, paperformat=document.paperformat.A4,
centered=0)
d = document.document([p])
d.writePSfile('test.ps')
PyX 以 TexResultError 停止。错误的有趣部分显示了 TeX 中发生的情况:
pyx.text.TexResultError: unhandled TeX response (might be an error)
The expression passed to TeX was:
\ProcessPyXBox{b'S\xc3\xb6ren Sundstr\xc3\xb8m'%
}{1}%
\PyXInput{7}%
After parsing the return message from TeX, the following was left:
*
*! Undefined control sequence.
<argument> b'S\xc
3\xb 6ren Sundstr\xc 3\xb 8m'
<*> }{1}
(cut after 5 lines; use errordetail.full for all output)
所以看起来latex接收的不是utf-8,而是utf-8的转义表示。我的问题:如何正确地将字符串传递给 canvas.text?还是我的序言错了?
我也尝试在 SO 上通过 wobsta 遵循这个答案,但除了太复杂之外,它对我也不起作用。(在这种情况下,看起来 PyX 不理解元字体消息)。
顺便说一下,直接在具有相同前导码的简单 utf-8 输入文件上运行 latex 可以正常工作。