2012-10-07 36 views
10

¿Alguna idea sobre cómo puedo hacer referencia a una imagen en línea mientras estoy documentando con Sphinx?Especificación de una imagen en línea en formato Sphinx (restructuredtext)

esto no funciona:

.. image:: http://www.mysite.com/images/someimage.png 

me da:

/home/user/proj/2010/11/08/the_forever_war.rst:11: WARNING: nonlocal image URI found: http://www.mysite.com/images/someimage.png 

Gracias ...

+1

Mostraste da una advertencia, pero no hay nada que indique que no funciona. De hecho, indica que hay algo de apoyo para ello (reconoce un URI) y simplemente no es recomendable. – delnan

+0

¡Tienes toda la razón! – stratosgear

Respuesta

3

que es bastante embarazoso ...

Como se mencionó anteriormente delnan en su comenta, solo recibo una advertencia.

En mi defensa, estaba intentando algunas directivas crudas bastante complicadas antes de establecer la directiva de imágenes, y solo estaba viendo la salida de Sphinx en lugar de las páginas representadas. Cuando vi la salida larga de Sphinx, asumí que golpeé otro error nuevamente.

No obstante, tengo la culpa ... La imagen carga bien.

5

que use el código HTML puro para esto, por ejemplo:

.. raw:: html 

    <p style="height:22px"> 
    <a href="https://travis-ci.org/aio-libs/aiozmq" > 
     <img src="https://travis-ci.org/aio-libs/aiozmq.svg?branch=master"/> 
    </a> 
    </p> 
+0

Este formato permite las imágenes externas sin la advertencia, lo que permite el uso de 'sphinx-build -W' (convierta las advertencias en errores) en suites de integración continua como travis/tox. – jwhitlock

+0

Sin embargo, el analizador RST en GitHub ignora 'raw :: html' :( – jwhitlock

+0

No incluyo README.rst en mis documentos sphinx, y no espero que nadie mire en mi directorio/docs - GitHub estropea el marcado de sphinx de todos modos –

19

A partir de la esfinge 1.4, puede "parche mono" esfinge de su archivo docs/conf.py así:

import sphinx.environment 
from docutils.utils import get_source_line 

def _warn_node(self, msg, node, **kwargs): 
    if not msg.startswith('nonlocal image URI found:'): 
     self._warnfunc(msg, '%s:%s' % get_source_line(node), **kwargs) 

sphinx.environment.BuildEnvironment.warn_node = _warn_node 

Una versión previa de esta respuesta proporcionó un parche que es incompatible con la última versión de sphinx 1.4 [1]. Además, la siguiente versión de Sphinx debe apoyar esta opción de configuración [2]:

suppress_warnings = ['image.nonlocal_uri'] 

Esto excluirá cualquier advertencia de 'imagen no local URI encontró'.

Me encontraron esta necesaria porque quiero que el sphinx-build -W a emitir "advertencias como errores" como parte de mi prueba & construcción de infraestructura, para asegurarse de que no hay errores en la documentación - Me sé muy bien que yo Estoy usando URI de imagen no local y estoy de acuerdo con eso, pero no quiero ignorar las otras advertencias.

[1] https://github.com/sphinx-doc/sphinx/issues/2429#issuecomment-210255983

[2] https://github.com/sphinx-doc/sphinx/issues/2466

+0

Esto funciona, pero rompe Sphinx> 1.3 en que las advertencias causan excepciones (por ejemplo, si una referencia vinculada no existe). Necesita ser modificado ligeramente para aceptar kwargs **. MOre información aquí: https://github.com/sphinx-doc/sphinx/issues/2429 –

+0

Aquí hay otro parche de mono http://www.dpetzel.info/tips/python/2013/09/24/sphinx -with-external-image-annoyance.html –

Cuestiones relacionadas