Re: [O] src-blocks with captions do not respect attr_latex :placement options
Hello, John Kitchinwrites: > org-latex-default-figure-position is defined as "htbp" > > where as :placement is usually defined as "[H]". One has brackets, and > one doesn't. This is reflected in ox-latex too. > > For example in this code (line 3219. ox-latex.el) > > (or (plist-get attr :placement) > (format "[%s]" (plist-get info > :latex-default-figure-position))) > > it is implied that :latex-default-figure-position does not have > brackets, but that (plist-get attr :placement) does since it is later > used in line 3259 as: > > (format "\\begin{%s}%s\n" float-env placement) > > So, it seems like one either has to add [] to the default > org-latex-default-figure-position, or put them in the template, or > change how the :placement value is used. It doesn't seem like we can > have it both ways without testing if there are brackets or not. It also > doesn't seem right to modify org-latex-default-figure-position just to > get float listings to be "[H]" for src blocks. OK. Note that Org provides `org-unbracket-string'. Regards, -- Nicolas Goaziou
Re: [O] src-blocks with captions do not respect attr_latex :placement options
Nicolas Goaziou writes: > Hello, > > John Kitchinwrites: > >> A block like this: >> >> #+attr_latex: :placement [H] >> >> #+caption: A test block >> #+BEGIN_SRC ipython >> >> 'hello' >> #+END_SRC >> >> exports to latex as: >> >> \begin{listing}[htbp] >> \begin{minted}[frame=lines,fontsize=\scriptsize,linenos]{ipython} >> 'hello' >> \end{minted} >> \caption{A test block} >> \end{listing} >> >> The root of this is in org-latex-src-block where (plist-get info >> :latex-default-figure-position) is being used to specify the >> placement. > > True. LaTeX back-end doesn't handle :placement attribute in source blocks. > >> It seems like a sort of easy fix, but requires a couple of changes in the >> function. >> >> I think we could replace all instances of >> >> (plist-get info :latex-default-figure-position) >> >> with >> >> (or (plist-get attributes :placement) >>(format "[%s]" >>(plist-get info :latex-default-figure-position))) > > Why (format "[%s]" ...)? That isn't changed from what is already in ox-latex, e.g. line 2367. > >> and also replace everything like: >> >> \\begin{figure*}[%s] >> >> with >> >> \\begin{figure*}%s >> >> I don't see a way around that unless :latex-default-figure-position is >> changed from "htbp" to "[htbp]". > > I fail to see why this change is needed. org-latex-default-figure-position is defined as "htbp" where as :placement is usually defined as "[H]". One has brackets, and one doesn't. This is reflected in ox-latex too. For example in this code (line 3219. ox-latex.el) (or (plist-get attr :placement) (format "[%s]" (plist-get info :latex-default-figure-position))) it is implied that :latex-default-figure-position does not have brackets, but that (plist-get attr :placement) does since it is later used in line 3259 as: (format "\\begin{%s}%s\n" float-env placement) So, it seems like one either has to add [] to the default org-latex-default-figure-position, or put them in the template, or change how the :placement value is used. It doesn't seem like we can have it both ways without testing if there are brackets or not. It also doesn't seem right to modify org-latex-default-figure-position just to get float listings to be "[H]" for src blocks. > >> Thoughts? > > Do you want to propose a patch? The manual would need to be updated > accordingly. Do you see another way to solve this? > > Regards, -- Professor John Kitchin Doherty Hall A207F Department of Chemical Engineering Carnegie Mellon University Pittsburgh, PA 15213 412-268-7803 @johnkitchin http://kitchingroup.cheme.cmu.edu
Re: [O] src-blocks with captions do not respect attr_latex :placement options
Hello, John Kitchinwrites: > A block like this: > > #+attr_latex: :placement [H] > > #+caption: A test block > #+BEGIN_SRC ipython > > 'hello' > #+END_SRC > > exports to latex as: > > \begin{listing}[htbp] > \begin{minted}[frame=lines,fontsize=\scriptsize,linenos]{ipython} > 'hello' > \end{minted} > \caption{A test block} > \end{listing} > > The root of this is in org-latex-src-block where (plist-get info > :latex-default-figure-position) is being used to specify the > placement. True. LaTeX back-end doesn't handle :placement attribute in source blocks. > It seems like a sort of easy fix, but requires a couple of changes in the > function. > > I think we could replace all instances of > > (plist-get info :latex-default-figure-position) > > with > > (or (plist-get attributes :placement) >(format "[%s]" >(plist-get info :latex-default-figure-position))) Why (format "[%s]" ...)? > and also replace everything like: > > \\begin{figure*}[%s] > > with > > \\begin{figure*}%s > > I don't see a way around that unless :latex-default-figure-position is > changed from "htbp" to "[htbp]". I fail to see why this change is needed. > Thoughts? Do you want to propose a patch? The manual would need to be updated accordingly. Regards, -- Nicolas Goaziou