Take the 2-minute tour ×
TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. It's 100% free, no registration required.

I am using pandoc to convert markdown to pdf, but I need to place some figures with more formating than the

  ![Alt text](image.png)

so I use something like this:

  # Document with figures

  This document have figures but they appear before the title

  \begin{figure}
  \centering
  {\includegraphics[width=2.5in]{some_figure.png}}
  \caption{Comparing Dq from different p-model}
  \end{figure}

and then I use the following command:

 pandoc -H test_fig.sty test_fig.md -o test_fig.pdf

and test_fig.sty have:

 \usepackage{graphicx}

the resulting pdf have first the figure and then the title.

share|improve this question

migrated from stackoverflow.com Mar 10 '13 at 1:37

This question came from our site for professional and enthusiast programmers.

2 Answers 2

up vote 1 down vote accepted

This is most likely because the figure environment floats, which is not what you're after. For this you have a couple of options:

  1. Add the float package which provides the H float specifier, allowing you to use

    \usepackage{float}% http://ctan.org/pkg/float
    %...
    
    \begin{figure}[H]
    %...
    \caption[<ToC>]{<regular>}
    \end{figure}
    

    stopping the float from moving around.

  2. Add the caption (or the super-tiny capt-of) package and wrap your figure inside a minipage to keep the image and caption together. Use it as follows:

    \usepackage{caption}% http://ctan.org/pkg/caption
    %\usepackage{capt-of}% http://ctan.org/pkg/capt-of
    %...
    
    \noindent\begin{minipage}{\textwidth}
    %...
    \captionof{figure}[<ToC>]{<regular>}
    \end{minipage}
    %...
    

For more information on the placement of figures, see How to influence the position of float environments like figure and table in LaTeX? and Keeping tables/figures close to where they are mentioned.

The above proposal are purely LaTeX-driven.

share|improve this answer

Pandoc generates tex output with all of the tables and figures defined with the [htbp] placement options. This isn't a massive problem though, since you can use sed to change all instances of [htbp] to [H] e.g.

sed -i 's/begin{figure}\[htbp\]/begin{figure}\[H\]/g' tex/out.tex

Basically, just use pandoc to generate the tex output, then run your tex engine afterwards (twice) and you'll be good to go. You'll also need to make sure that the float package is actually being used in your template file (which contains your tex preamble):

\usepackge{float}

NOTE: Although in the default latex template, the float package is used, but it's only used if you're actually using tables:

$if(tables)$
\usepackage{ctable}
\usepackage{float}
$endif$

...I just moved \usepackage{float} to the line outside of the if block in my custom template.

share|improve this answer
    
Do you mean s/begin{figure}\[[htbp]*\]/begin{figure}[H]/g ? –  Marc van Dongen Nov 5 '13 at 14:38
    
Nope, the square brackets in this case are literal and not a regex character grouping; [htbp] should become [H]. –  agosse Nov 6 '13 at 13:03
    
Wouldn't the \[[htbp]\]' be more robust? It would work for placement involving _any_ subset of htbp. (BTW I use sed` a lot. I wasn't aware of the-i flag. Useful that.) –  Marc van Dongen Nov 6 '13 at 13:08
    
Sure it will be more robust - in case pandoc changes the way it writes figures in the future. For now, probably not needed, but do whatever makes you happy. :-) –  agosse Nov 7 '13 at 12:17

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.