From mboxrd@z Thu Jan 1 00:00:00 1970 From: John Kitchin Subject: Re: src-blocks with captions do not respect attr_latex :placement options Date: Sun, 25 Feb 2018 16:37:35 -0800 Message-ID: References: <874lmdl1re.fsf@nicolasgoaziou.fr> Mime-Version: 1.0 Content-Type: text/plain Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:40104) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eq6nX-0001PR-Mr for emacs-orgmode@gnu.org; Sun, 25 Feb 2018 19:37:44 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eq6nW-0004e8-Jb for emacs-orgmode@gnu.org; Sun, 25 Feb 2018 19:37:43 -0500 Received: from mail-pf0-x22b.google.com ([2607:f8b0:400e:c00::22b]:41447) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1eq6nW-0004bV-CT for emacs-orgmode@gnu.org; Sun, 25 Feb 2018 19:37:42 -0500 Received: by mail-pf0-x22b.google.com with SMTP id f80so725110pfa.8 for ; Sun, 25 Feb 2018 16:37:42 -0800 (PST) In-reply-to: <874lmdl1re.fsf@nicolasgoaziou.fr> List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: "Emacs-orgmode" To: Nicolas Goaziou Cc: org-mode-email Nicolas Goaziou writes: > Hello, > > John Kitchin writes: > >> 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