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中文本的中心对齐的主要内容,如果未能解决你的问题,请参考以下文章

如何对齐图像中心的文本

如何在页面中心的多个面板中仅对齐两个面板的分组文本?

想要将时间戳添加到中心对齐文本视图,并将标签调整为右对齐

文本对齐的媒体查询:中心

如何左对齐和垂直对齐标题中的图像并将文本水平保持在div的中心[重复]

在android的微调器中设置视图文本在中心对齐