1

PyX生成された PDF ファイルに挿入したい一連の UTF-8 文字があります。# -*- 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)
4

3 に答える 3

1

Unicode 文字を (La)TeX に渡すように PyX をセットアップできます。次に、問題の文字を 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 インストールを使用して行われたことに注意してください。また、LaTeX でこれらの文字を作成する方法について、 https://tex.stackexchange.com/questions/171611/how-to-write-a-single-hiragana-character-in-latexの情報を使用しました。LaTeX内であらゆる種類の文字をUnicode文字として直接使用できるように設定するCJKutf8のようなソリューションがあるようですが、これは私の経験からは程遠いものです。とにかく、すべてのセットアップが適切に行われていれば、LaTeX 自体からの場合と同様に、PyX 内からすべて正常に動作するはずです。幸運を!

于 2014-10-24T16:25:20.643 に答える
1

これを試して:

# -*- coding: utf-8 -*-
c = canvas.canvas()
txt = u'aあä'.encode('utf-8')
c.text(1, 4, "UID: %s"%(txt))
c.writeEPSfile("filename.eps")
于 2014-10-21T08:44:35.033 に答える
1

äドイツ語(ウムラウト)を挿入しようとしたときに同じエラーが発生したbabelパッケージから、対応するセットを見つけることができるかもしれません。ドイツ語の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

于 2016-05-13T12:06:09.687 に答える