How do I make a reference to a figure in markdown using pandoc?

前端 未结 6 614
天涯浪人
天涯浪人 2020-12-12 11:08

I\'m currently writing a document in markdown and I\'d like to make a reference to an image from my text.

this is my text, I want a reference to my image1 [h         


        
相关标签:
6条回答
  • 2020-12-12 11:43

    I've had a chat with Ryan Gray after reading his answer in a similar post. Actually his solution of using :

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

    is only adapted when using multimarkdown.

    When it comes to pandoc, the only solution to make cross references is using directly latex keywords:

    [image]: image.png "Image Title"
    ![Alt text \label{mylabel}][image]
    See figure \ref{mylabel}.
    
    0 讨论(0)
  • 2020-12-12 11:48

    You can use the pandoc-fignos filter for figure numbering and referencing. It works with any output format -- not just LaTeX.

    Add a label to the image's attributes like this:

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

    ... and then reference the figure like this:

     @fig:description
    

    Information on how to install and apply the pandoc-fignos filter is given on its Web page. There is also the pandoc-eqnos filter for doing the same kind of thing with equations.

    0 讨论(0)
  • 2020-12-12 11:51

    Assuming that you want PDF output of Pandoc at the end:

    The best solution for inserting images and changing their attributes I found is:

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

    and in my template.latex I have:

    \usepackage{wrapfig}
    \usepackage{float}
    

    Other solutions cannot specify the image width or height, at least not in standard markdown. However it is often essential for something like a book or a paper to specify the dimensions of figures, except you want to configure output size of images before using them in your document. In that case you'd have to deal with different settings for those tools you use to create the images.

    I recommend in case of Matplotlib to export to PDF and then use the code I posted. This will give the best image quality and highest flexibility in configuring what the image will look like in the output PDF, without having to worry about stuff.

    0 讨论(0)
  • 2020-12-12 11:53

    Pandoc supports referencing sections (via section identifiers prefixed by #).

    Comments on this open issue describe how the following workaround leverages section identifiers for generating image references in LaTeX and HTML:

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

    The empty line before </div> is required.

    0 讨论(0)
  • 2020-12-12 11:55

    In pandoc you can even do:

    ![This is the caption\label{mylabel}](/url/of/image.png)
    See figure \ref{mylabel}.
    
    0 讨论(0)
  • 2020-12-12 11:55

    With pandoc-crossref you can cross reference figures with the following syntax:

    ![Caption](file.ext){#fig:label}
    

    Then reference the figure in the text similar to the citation syntax [@fig:label] and compile with --filter pandoc-crossref (needs to come before --filter pandoc-citeproc if you're using that also).

    You can control the styling with e.g. \usepackage[font=small,labelfont=bf]{caption} in header-includes.


    A neat related trick if you use \listoffigures in latex, is this lua-filter, which allows you to set a short title instead of having the entire figure legend showing up in your list of figures:

    ![Caption](file.ext){#fig:label short-caption='my short caption'}
    

    then compile with --lua-filter short-captions.lua.

    0 讨论(0)
提交回复
热议问题