PyX中文本的中心对齐
Posted
技术标签:
【中文标题】PyX中文本的中心对齐【英文标题】:Center alignment of text in PyX 【发布时间】:2019-01-06 17:34:13 【问题描述】:我正在使用PyX 创建矩形并在矩形内放置一些 (LaTex) 文本。
# python 3
from pyx import *
text.set(text.LatexRunner)
c = canvas.canvas()
c.stroke(path.rect(0, 0, 1, 1), [style.linewidth.Thick,
color.rgb.red,
deco.filled([color.rgb.green])])
c.text(0.25, 0.25, r"\LaTeX")
c.writePDFfile("text-centered") # creates a PDF file
上面的代码sn-p创建一个PDF:
如您所见,文本未对齐。可以手动尝试直到它(明显地)居中,但这显然是有问题的。
我的问题:是否可以自动对齐文本居中(水平和垂直)?
【问题讨论】:
【参考方案1】:随便用
c.text(0.5, 0.5, r"\LaTeX", [text.halign.center, text.vshift.mathaxis])
见
http://pyx.sourceforge.net/manual/text.html#text.halign.center http://pyx.sourceforge.net/manual/text.html#text.vshift.mathaxis http://pyx.sourceforge.net/examples/text/halign.html http://pyx.sourceforge.net/examples/text/valign.html一些文档和示例
【讨论】:
这样就解决了问题。但是,我有一个后续问题:存在文本宽度大于矩形的情况。有没有自动调整矩形大小的方法? 您认为我应该将此作为单独的问题发布吗? 确实,这基本上是一个新问题。而这一切都取决于你想要达到的目标。 c.text(...) 返回文本“对象”,它具有宽度、高度、深度、左侧和右侧等属性。这些是 PyX 长度,但您可以将它们传递给路径项和路径构造函数。但是,您可能希望先渲染文本(使用 text.text(...)),然后再将其插入画布(c.insert(...))。您可以在此处应用转换(例如转换的平移)。这样你就可以先得到扩展,决定布局,然后把它全部放到画布上。以上是关于PyX中文本的中心对齐的主要内容,如果未能解决你的问题,请参考以下文章