2012-02-24 10 views
72

Attualmente sto scrivendo un documento in markdown e mi piacerebbe fare riferimento ad un'immagine dal mio testo.Come faccio a fare riferimento a una figura in markdown usando pandoc?

this is my text, I want a reference to my image1 [here]. blablabla 

![image1](img/image1.png) 

voglio farlo di riferimento, perché dopo la conversione mia Markdown in pdf, le immagini vengono inseriti in una o due pagine dopo e il documento non ha alcun senso.

UPDATE:

Ho provato Ryan's answer in that post e non riesco a farlo funzionare. A quanto pare il codice:

[image]: image.png "Image Title" 
![Alt text][image] 
A reference to the [image](#image). 

dovrebbe produrre:

\begin{figure}[htbp] 
\centering 
\includegraphics[keepaspectratio,width=\textwidth,height=0.75\textheight]{i mage.png} 
\caption{Alt text} 
\label{image} 
\end{figure} 

A reference to the image (\autoref{image}). 

invece, ottengo:

\begin{figure}[htbp] 
\centering 
\includegraphics{image.png} 
\caption{Alt text} 
\end{figure} 

A reference to the \href{\#image}{image}. 

ho notato due problemi:

  • \label{image} doesn' t apparire: no riferimento è stato creato.
  • (\autoref{image}) diventa \href{\#image}{image}: non viene rilevato alcun riferimento incrociato.

E quindi, quando lo converto in pdf ovviamente non si collega all'immagine. C'è un link, ma non si collega a nulla.

Qualsiasi aiuto sarebbe molto apprezzato !!

+1

Hai provato il metodo indicato in http://groups.google.com/group/pandoc-discuss/msg/4a42442657a96414? –

+0

L'ho provato e non produce un autoref. strano ... –

+0

Forse dovresti modificare la tua domanda per includere ciò che hai provato, quello che hai ottenuto e quello che vuoi (in modo che sia più facile aiutarti). –

risposta

61

In Pandoc si può anche fare:

![This is the caption\label{mylabel}](/url/of/image.png) 
See figure \ref{mylabel}. 
+35

Questo aiuta solo se si converte in TeX ma non se si vuole anche creare HTML dalla stessa sorgente Markdown. – Jakob

+9

Ci sono un paio di filtri disponibili per fare riferimento alle figure con tutti i formati di output [pandoc-fignos] (https://github.com/tomduck/pandoc-fignos) e [pandoc-crossref] (https: // github. com/lierdakil/pandoc-crossref) –

+0

Purtroppo questo non è un modo molto flessibile per farlo. Non è possibile specificare la larghezza o l'altezza dell'immagine in questo modo. È possibile includere i PDF in questo modo? Se no, sarebbe anche un aspetto negativo, dal momento che è preferibile nel PDF come caso di output. – Zelphir

17

Ho avuto una conversazione con Ryan Gray dopo aver letto his answer in un post simile. In realtà la sua soluzione di utilizzo:

[image]: image.png "Image Title" 
![Alt text][image] 
A reference to the [image](#image). 

si adatta solo quando si utilizza multimarkdown.

Quando si tratta di Pandoc, l'unica soluzione per fare riferimenti incrociati sta utilizzando lattice direttamente parole chiave:

[image]: image.png "Image Title" 
![Alt text \label{mylabel}][image] 
See figure \ref{mylabel}. 
+3

Ma come ha detto Jakob alla risposta accettata, "Questo aiuta solo se convertite in TeX ma non se volete anche creare HTML dalla stessa fonte Markdown." – DanielTuzes

+0

Per multimarkdown, esiste un modo per fare riferimento alla figura tramite un numero di figura calcolato automaticamente? Immagino qualcosa di simile a [] (# immagine) e quindi multimarkdown sostituirà il testo vuoto con un numero (come fa per le note a piè di pagina). –

4

Pandoc supporta riferimento sezioni (via section identifiers con prefisso #).

Commenti su questo open issue descrivono come la seguente soluzione sfrutta sezione identificatori per generare i riferimenti di immagine in LaTeX e HTML:

<div id="fig:lalune"> 
![A voyage to the moon\label{fig:lalune}](lalune.jpg) 

</div> 

[The voyage to the moon](#fig:lalune). 

è richiesto La linea vuota prima </div>.

+4

Una soluzione adeguata, ovvero una [estensione alla sintassi del markdown pandoc per consentire identificatori per le immagini] (https://github.com/jgm/pandoc/issues/261#issuecomment-50236381) ora è finalmente in corso. resta sintonizzato :) –

15

È possibile utilizzare il filtro pandoc-fignos per la numerazione delle figure e il riferimento. Funziona con qualsiasi formato di output, non solo LaTeX.

Aggiungere un'etichetta agli attributi dell'immagine come questo:

![Caption.](image.png) {#fig:description} 

... e quindi fare riferimento alla figura in questo modo:

@fig:description 

informazioni su come installare e applicare le Pandoc-fignos filtro è dato sulla sua pagina Web. C'è anche il filtro pandoc-eqnos per fare lo stesso genere di cose con le equazioni.

+0

Mi piacerebbe fare qualcosa di simile con [facendo riferimento a un elemento di una lista ordinata] (http://stackoverflow.com/questions/29086880/how-to-place-labels-correctly-and-use -cross-reference-in-latex-to-be-able-to-con) – DanielTuzes

0

Supponendo che si desidera output PDF di Pandoc alla fine:

La migliore soluzione per l'inserimento di immagini e cambiando i loro attributi che ho trovato è:

\begin{figure}[H] 
\includegraphics[width=0.25\textwidth, height=!]{images/path.png} 
\centering 
\caption{mycaption} 
\end{figure} 

e nel mio template.latex ho:

\usepackage{wrapfig} 
\usepackage{float} 

Altre soluzioni non possono specificare la larghezza o l'altezza dell'immagine, almeno non nel contrassegno standard. Tuttavia è spesso essenziale per qualcosa come un libro o un foglio di carta per specificare le dimensioni delle figure, tranne che si desidera configurare la dimensione dell'output delle immagini prima di utilizzarle nel documento. In tal caso dovresti gestire impostazioni diverse per quegli strumenti che usi per creare le immagini.

In caso di Matplotlib è consigliabile esportare in PDF e quindi utilizzare il codice che ho postato. Ciò garantirà la migliore qualità dell'immagine e la massima flessibilità nella configurazione di come apparirà l'immagine nel PDF di output, senza doversi preoccupare di cose.

+0

Tutta questa sintassi del latex va direttamente nel tuo file markdown? – spinup

+0

@ pinpin Sì. Pandoc è in grado di gestire contenuti in lattice incorporati nel tuo file markdown. Un altro consiglio: esporta come file PDF quando esporti da Matplotlib. In questo modo il motore Pandoc/latex non diminuirà la qualità dell'immagine e avrai un'immagine scalabile, invece di qualcosa pixellata quando si ingrandisce e si estrae il file PDF. – Zelphir