2012-09-28 6 views
8

Uso Sphinx per generare alcuni documenti. Ho un documento redatto per il testo e mi piacerebbe inserire un'immagine in esso. Il caso è che l'immagine debba essere cliccabile in modo che dopo che un utente fa clic sull'immagine, l'immagine dovrebbe essere mostrata a grandezza originale. Io uso la direttiva immagine e la sua opzione di destinazione in questo modo:Comportamento in miniatura utilizzando l'attributo target della direttiva image

.. image:: /images/some_image.png 
    :alt: Image descripion 
    :align: center 
    :target: `big_some_image`_ 

.. _big_some_image: /images/some_image.png 

Il problema è che nella pagina visualizzata ottengo:

<a href="/images/some_image.png"><img src="../../../_images/some_image.png"></a> 

Quindi non è corretto src dalla direttiva immagine, ma un errato href attributo dal collegamento ipertestuale.

Domande:

  • Esiste un modo per generare link in modo che la direttiva immagine lo fa? Intendo relativamente al documento.

  • c'è un altro modo (integrato) per avere il comportamento di "miniatura -> clic -> immagine grande"?

risposta

3

Quando si utilizza la direttiva image dall'interno Sfinge, Sfinge fa qualche trattamento speciale per trovare il file immagine e copiarlo nel progetto (come la vostra directory _images), e quindi rende il codice HTML per puntare a quel posto .

Ma l'opzione target accetta solo un URL come parametro. Non sa nulla del tuo progetto Sphinx, o di come sono disposte le tue immagini, e non tenta di indovinare.

Se si desidera far puntare a una versione più grande dello stesso file, è probabile che sia necessario eseguire alcuni passaggi manuali (ad esempio copiare il file in una posizione specifica) o fornire un URL relativo al grande file, piuttosto che l'URL assoluto che hai nel tuo esempio.

Se vuoi procedere in un modo completamente diverso, puoi anche provare a sovrascrivere e modificare i modelli HTML per il tuo progetto per aggiungere alcuni JavaScript per ottenere l'effetto click-to-large-image desiderato.

+1

c'è davvero nessun altro modo? È il tipo di funzionalità che ci si può aspettare di essere supportati immediatamente. – toniedzwiedz

7

è sufficiente utilizzare l'opzione di scala:

.. image:: large_image.png 
    :scale: 20% 

Quando l'immagine in scala viene cliccato, le immagini a pieno carico in una finestra separata. Quindi questo non aumenta la dimensione dell'immagine sulla pagina, ma sarebbe comunque complicato.

+0

Mentre funziona, significa che non si ottiene il ridimensionamento automatico * (con almeno il tema Sfinge 1.3 e RTD) * – ideasman42

+0

Sì, questo squish la mia immagine orizzontalmente. Modifica: trovato questo css funziona intorno: 'img { altezza: auto! Importante; } ' –

0

Sembra che ci sia un'estensione Sfinge che lo fa ora, e molto bene, sphinxcontrib-fancybox 0.3.2. Installare con pip, aggiungerlo ai estensioni in conf.py, e utilizzare la direttiva fancybox:

.. fancybox:: images/image.png 
+0

Ho appena provato. È ancora un po 'ruvido intorno ai bordi. La didascalia viene mostrata solo su un'immagine a dimensione intera, ma sfortunatamente per me è un rompicapo. Ho bisogno che faccia il contrario. Mostra la didascalia solo sulla miniatura. – fred

+0

Quello che sto facendo per ora è impostare una larghezza/altezza per la mia dimensione di anteprima. Quindi quando clicco sull'immagine, invia il browser all'URL dell'immagine. È come usare 'scale'. Se riesco a far aprire al browser una nuova finestra/scheda, potrei conviverci. – fred

0

link relativi sembrano funzionare. Per la configurazione dei documenti Mapserver, se un'immagine è inserita nella directory images, un collegamento relativo come nel seguente codice funziona nel mio build locale.Qui è un esempio usando figura (la sottolineatura ("_") prima di "immagini" nella destinazione collegamento è necessario):

.. figure:: ../../images/carto-elements.png 
    :height: 400 
    :width: 600 
    :align: center 
    :target: ../../_images/symcon-overlay.png 
Problemi correlati