我正在寻找在 reStructured Text 中让图像旁边出现文本的最佳方式。我发现几个网站声称展示了它是如何完成的,但没有一个展示实际运行的示例。有几个显示了似乎失败的例子。我实际上正在使用 Sphinx (v0.6.6) 并希望避免过度使用它附带的“本机”CSS。
5 回答
用 Emily Litella (来自 SNL)的话来说,“哦......没关系......” ;-) 用 Alex Trebek (来自 Jepordy!)的话来说,“答案是......”
在.rst文件中
.. container:: twocol
.. container:: leftside
.. figure:: _static/illustrations/structure.svg
.. container:: rightside
Bla-bla-blah, and yada-yada.
在自定义 CSS 中(我使用了sphinxdoc.css的副本,我将其放入 ./source/_static/ 中):
div.leftside {
width: 414px;
padding: 0px 3px 0px 0px;
float: left;
}
div.rightside {
margin-left: 425px;
}
每个 ..container:: 成为一个 <div>。就我而言,我想要图像的固定宽度和其余部分的可变宽度。而且,通过对 Sphinx 生成的 LaTeX 进行了一些调整,它在为该部分生成两列输出方面也做得不错。
我希望这足以帮助其他人弄清楚一开始对我来说并不明显的事情。
使用 Sphinx v1.1.3,我一直在使用以下方法 - 浮动左图像和清除块。它似乎没有记录在任何地方,而且有点hacky,所以在这里分享......
首先是图像,根据此rST doc左对齐。
.. image:: _static/my_image.png
:align: left
然后你可以用正常的方式写你的段落,它们环绕图像。
完成后,放入一个肮脏的清洁器 - 我使用 1x1 png 作为容器的内容。
.. container:: clearer
.. image :: _static/spacer.png
这会生成以下 HTML,它使用了 Sphinx 的div.clearer
CSS。
<div class="clearer container">
<img src="_images/spacer.png" alt="_images/spacer.png">
</div>
然后你可以继续写作,你的下一段被很好地清除了。
我认为使用替代可以获得更好的结果。
这是文档中的摘录,可能会有所帮助:
The |biohazard| symbol must be used on containers used to
dispose of medical waste.
.. |biohazard| image:: biohazard.png
我希望这有帮助
您可以定义一个替换:
.. |clearfloat| raw:: html
<div class="clearer"></div>
然后对图像使用 align 属性:
.. image:: _static/my_image.png
:align: left
并像这样插入一个更清晰的:
|clearer|
你可以只使用这样的图形元素:
.. figure: path/to/image.png
:figwidth: 100%
:target: images/navegacion_d.png
并且 figure 元素将使用 100% 的 body 而不改变原始图像宽度:
+---------------------------+
| figure |
| |
|<------ figwidth --------->|
| |
| +---------------------+ |
| | image | |
| | | |
| |<--- width --------->| |
| +---------------------+ |
| |
|The figure's caption should|
|wrap at this width. |
+---------------------------+