Как создать плавающие фигуры в reStructuredText / Sphinx?

Я хочу иметь фигуру с обернутым вокруг нее текстом.

Вот что я говорю:

Installation of Optional Accessories
====================================

.. warning:: Never plug in or unplug a Hand Robot or a Grasp Sensor while the robot is turned on, as the system will not function properly and damage to the robot could occur.

Installing a Hand Robot
-----------------------

.. _`fig-attach-hand-robot`:
.. figure:: attach-hand-robot.*
  :scale: 40%
  :align: right

  Attach Hand Robot

Make sure the robot is turned off as described in the section :ref:`turn-off-robot`. 

Take the hand robot out of the grounded bin that sits on top of the electrical panel (if you have an adjustable height table) or sits on top of the rear table (if you have a fixed height table). Make sure not to touch the pins on the electrical wiring while doing so. Insert the conical protrusion of the hand robot into the conical receptacle (see :ref:`fig-attach-hand-robot`). Once the hand robot is supported by the InMotion Arm Robot, make sure the two knobs below the Hand Robot have engaged and sprung in. If they have not, twist them until they do as shown (see :ref:`fig-knobs-in`).


и это то, что я получаю. а>

  • Почему подпись к рисунку располагается по центру, а не под изображением?
  • Почему основной текст («Убедитесь ...» и «Возьмите ...») не находится слева от изображения, а не под ним? Я хочу, чтобы фигура двигалась вправо, а текст оставался слева.

person Daniel    schedule 09.05.2013    source источник


Ответы (5)


Итак, я провел небольшое исследование reStructuredText, и мне кажется, что то, что вы хотите, на самом деле невозможно.

Документация для рисунка и image никогда не упоминают о возможности обтекания объекта текстом.

Это может быть запрос функции, который нужно предоставить разработчикам Sphinx, хотя я подозреваю, что они отклонят его, потому что это явно не упоминается в первой спецификации.

Я надеялся, что награда привлечет к этому внимание, но подозреваю, что это не так.

person Ian Stapleton Cordasco    schedule 13.05.2013

Хотя уже поздно, но, может быть, ответ поможет будущим людям.

Вы можете использовать директиву боковой панели, чтобы разместить изображение.

.. sidebar:: mandatory_title. Use can use image caption here

     .. Figure:: 1.png
person shubham    schedule 21.12.2018

Я обнаружил, что цифры смещаются в сторону, если указаны :figwidth: и :align:. (Используя тему readthedocs.)

..  figure:: images/myimage.jpg
    :figwidth: 40%
    :align: right

https://docutils.sourceforge.io/docs/ref/rst/directives.html#figure

person jjz    schedule 23.04.2020

Чтобы работать с изображениями, поскольку они были частью текста, вы можете использовать замены.

Вот отрывок из документации, который может быть полезен:

The |biohazard| symbol must be used on containers used to
dispose of medical waste.

.. |biohazard| image:: biohazard.png

надеюсь, это поможет

person vinnie    schedule 04.10.2013
comment
Это не очень полезно, если нужно поставить большую светящуюся букву в начале главы. - person Frotz; 07.04.2016

Если кто-то еще столкнется с этой проблемой, этот фрагмент кода может помочь. Я решил, что не хочу взламывать реальный код сфинкса, поэтому я сделал очень короткий скрипт python, примененный к сгенерированному _build/latex/pi3d_book.tex, чтобы преобразовать \includegraphics, который имел \hfill до или после, в обернутые изображения. Будет много вещей, которые остановят эту работу, например, размещение изображений в списках или масштабирование изображений. Директивы сфинкса в моем первом похожи на

.. image:: perspective.png
   :align: right

Очевидно, вам придется изменить имена файлов и пути в соответствии с вашими настройками. Из моего проекта spinx я запускаю

$ make latexpdf
$ python wrapfix.py # or whatever you call this file

листинг программы wrapfix.py

import subprocess

with open("_build/latex/pi3d_book.tex", "r") as f:
  tx = f.read().splitlines()

txnew = []
flg1 = True
for line in tx:
  if line == "" and flg1:
    txnew += ["\\usepackage{wrapfig}",""]
    flg1 = False # just do this once before first blank line
  elif "includegraphics{" in line and "hfill" in line:
    fname = line.split("{")[2].split("}")[0]
    if line.startswith("{\\hfill"): # i.e. right justify
      fl_type = "R"
    else:
      fl_type = "L"
    txnew += ["\\begin{wrapfigure}{" + fl_type + "}{0.35\\textwidth}",
              "\\includegraphics[width = 0.3\\textwidth]{" + fname + "}",
              "\\end{wrapfigure}"]
  else:
    txnew += [line]

txnew = "\n".join(txnew)
with open("_build/latex/pi3d_book.tex", "w") as fo:
  fo.write(txnew)

subprocess.Popen(["pdflatex", "pi3d_book"], cwd="/home/jill/pi3d_book/_build/latex")
person paddyg    schedule 15.06.2015
comment
Я пытаюсь включить изображение в свой PDF-файл Sphinx + Latex, но при этом возникают ошибки. Не могли бы вы проверить этот вопрос, пожалуйста? - person shaan; 18.08.2020