Re: [O] [patch, ox-latex] caption and :float nil

2015-07-03 Thread Nicolas Goaziou
Rasmus ras...@gmx.us writes:

 Pushed.

Thank you.

Regards,



Re: [O] [patch, ox-latex] caption and :float nil

2015-07-03 Thread Rasmus
 I updated the patches.

Pushed.

Thanks,
Rasmus

-- 
Hvor meget poesi tror De kommer ud af et glas isvand?




Re: [O] [patch, ox-latex] caption and :float nil

2015-07-02 Thread Aaron Ecay
Hi Rasmus,

2015ko uztailak 1an, Rasmus-ek idatzi zuen:
 
 Hi,
 
 Aaron Ecay aarone...@gmail.com writes:
 
 AFAICS you sent the original message only to me.  I’m replying also to
 the org mode list.  You may want to resend the patch attachment though,
 since the quoting in this reply will probably mangle it.
 
   http://permalink.gmane.org/gmane.emacs.orgmode/98791
 
 ??

Both Gmail and my MUA (notmuch) showed the message as addressed only to
me, but now that I examine the raw headers I see a Newsgroups: line.  I
guess you sent the list copy via NNTP instead of email?  In any case, I
didn’t notice it.  Sorry.

 I think this should depend on the value of org-latex-listings:
 nil - use \captionof{float}
 
 You mean figure.  But a source block in not a float.

Yes.

 
 t - use \captionof{listing}
 minted - use \captionof{listing} (see below for why)
 
 
 We could also unconditionally use captionof in case of verbatim output for
 src blocks, even if float is required, which would allow us to kill
 float.sty from default package alist.
 
 BTW: In the current code we uses \captionof{listing}{caption} with minted.
 This seems incompatible.  
 
 Minted uses listing as itsf floating environment; see sec. 5 of the
 minted manual.  So this seems correct in fact.
 
 Consider this minimal example
 
 \documentclass{article}
 \usepackage{minted}
 \usepackage{capt-of}
 \begin{document}
 \begin{minted}{lisp}
 (+ 1 1 )
 \end{minted}
 \captionof{listing}{test}
 \end{document}
 
 This is the error I get when compiling:
 
 ERROR: Undefined control sequence.
 
 --- TeX said ---
 \@tempf ... \@parboxrestore \normalsize \@fs@capt 
   {\@nameuse 
 {fnum@#1}}{\ign...
 l.8 \captionof{listing}{test}
 
 It works fine when I use another counter than listing.

OK, I’ve done some more investigation.  By default, minted uses
\newfloat from the float package to create the listing float class.
This does not set up the caption integration.  OTOH, adding the newfloat
option to minted uses \DeclareFloatingEnvironment from the newfloat
package, which works.  IOW, replacing the relevant line in your MWE with
the following makes it work:

\usepackage[newfloat]{minted}

I’m not sure how that should be integrated in the picture – perhaps org
should recommend (require) this invocation of minted.

 
 But I have not really used minted so I don't know if I did the
 test correctly.  minted has a [H] placement through it's listings
 environment, it seems, so I don't think we need captionof there.
 
 I’m not sure that minted provides this separately from the float
 package.  So it’s probably better to use \captionof in the minted case
 as well.  Certainly it will make things more consistent from org’s POV.
 
 
 I guess it doesn't.  In any, minted.sty has
 
   \RequirePackage{float}
 
 So we can be sure [H] is available.  Thus, we should just rely on
 float.

But this is an implementation detail of minted, and could change in a
future release.

-- 
Aaron Ecay



Re: [O] [patch, ox-latex] caption and :float nil

2015-07-02 Thread Rasmus
Aaron Ecay aarone...@gmail.com writes:

 OK, I’ve done some more investigation.  By default, minted uses
 \newfloat from the float package to create the listing float class.
 This does not set up the caption integration.  OTOH, adding the newfloat
 option to minted uses \DeclareFloatingEnvironment from the newfloat
 package, which works.  IOW, replacing the relevant line in your MWE with
 the following makes it work:

 \usepackage[newfloat]{minted}

 I’m not sure how that should be integrated in the picture – perhaps org
 should recommend (require) this invocation of minted.

That's weird.  The capt-of documentation recommend the float.sty way of
adding new environments.

 I guess it doesn't.  In any, minted.sty has
 
   \RequirePackage{float}
 
 So we can be sure [H] is available.  Thus, we should just rely on
 float.

 But this is an implementation detail of minted, and could change in a
 future release.

That's a good point.

I updated the patches.

1. Rework captions when float is nil and caption is not.  Kill usage of
   [H] as it's the same as a nonfloat.  A src block is always a nonfloat
   unless it is not.
2. Update documentation. 
3. Kill float dependency.

Does anybody disagree to especially the third change?  Otherwise I'll push
it.

Rasmus

-- 
Together we will make the possible totay impossible!
From a0b7c47e37c3c5c62492236562a5f19a38efc06f Mon Sep 17 00:00:00 2001
From: Rasmus ras...@gmx.us
Date: Wed, 1 Jul 2015 01:12:42 +0200
Subject: [PATCH 1/3] ox-latex: Support captions for None-floats

* ox-latex.el (org-latex--caption/label-string): Format
  nonfloating captions using the capt-of package.
  (org-latex--inline-image, org-latex-src-block)
  (org-latex--org-table): Allow none-float and caption.
---
 etc/ORG-NEWS |  1 +
 lisp/ox-latex.el | 88 
 2 files changed, 58 insertions(+), 31 deletions(-)

diff --git a/etc/ORG-NEWS b/etc/ORG-NEWS
index ea7a2de..9592f88 100644
--- a/etc/ORG-NEWS
+++ b/etc/ORG-NEWS
@@ -398,6 +398,7 @@ set using the hh:mm:ss format.
 ~org-clone-subtree-with-time-shift~ now accepts 0 as an argument for
 the number of clones, which removes the repeater from the original
 subtree and creates one shifted, repeating clone.
+*** None-floating tables, graphics and blocks can have captions
 ** Miscellaneous
 *** Strip all meta data from ITEM special property
 ITEM special property does not contain TODO, priority or tags anymore.
diff --git a/lisp/ox-latex.el b/lisp/ox-latex.el
index 11fa00d..31d804b 100644
--- a/lisp/ox-latex.el
+++ b/lisp/ox-latex.el
@@ -1109,21 +1109,37 @@ caption nor label, return the empty string.
 For non-floats, see `org-latex--wrap-label'.
   (let* ((label (org-latex--label element info nil t))
 	 (main (org-export-get-caption element))
+	 (attr (org-export-read-attribute :attr_latex element))
+	 (type (org-element-type element))
+	 (nonfloat (or (and (plist-member attr :float)
+			(not (plist-get attr :float))
+			main)
+		   (and (eq type 'src-block)
+			(not (plist-get attr :float))
+			(memq (plist-get info :latex-listings)
+  '(nil minted)
 	 (short (org-export-get-caption element t))
-	 (caption-from-attr-latex
-	  (org-export-read-attribute :attr_latex element :caption)))
+	 (caption-from-attr-latex (plist-get attr :caption)))
 (cond
  ((org-string-nw-p caption-from-attr-latex)
   (concat caption-from-attr-latex \n))
  ((and (not main) (equal label )) )
  ((not main) (concat label \n))
  ;; Option caption format with short name.
- (short (format \\caption[%s]{%s%s}\n
-		(org-export-data short info)
-		label
-		(org-export-data main info)))
- ;; Standard caption format.
- (t (format \\caption{%s%s}\n label (org-export-data main info))
+ (t
+  (format (if nonfloat \\captionof{%s}%s{%s%s}\n
+		\\caption%s%s{%s%s}\n)
+	  (if nonfloat
+		  (case type
+		(paragraph figure)
+		(src-block (if (plist-get info :latex-listings)
+   listing
+ figure))
+		(t (symbol-name type)))
+		)
+	  (if short (format [%s] (org-export-data short info)) )
+	  label
+	  (org-export-data main info))
 
 (defun org-latex-guess-inputenc (header)
   Set the coding system in inputenc to what the buffer is.
@@ -1975,14 +1991,15 @@ used as a communication channel.
 	 ;; Retrieve latex attributes from the element around.
 	 (attr (org-export-read-attribute :attr_latex parent))
 	 (float (let ((float (plist-get attr :float)))
-		  (cond ((and (not float) (plist-member attr :float)) nil)
-			((string= float wrap) 'wrap)
+		  (cond ((string= float wrap) 'wrap)
 			((string= float sideways) 'sideways)
 			((string= float multicolumn) 'multicolumn)
 			((or float
 			 (org-element-property :caption parent)
 			 (org-string-nw-p (plist-get attr :caption)))
-			 'figure
+			 (if (and (plist-member attr :float) (not float)) 'nonfloat
+			   'figure))
+			((and (not float) (plist-member attr 

Re: [O] [patch, ox-latex] caption and :float nil

2015-07-01 Thread Aaron Ecay
Hi Rasmus,

AFAICS you sent the original message only to me.  I’m replying also to
the org mode list.  You may want to resend the patch attachment though,
since the quoting in this reply will probably mangle it.

I have almost no time to follow org development these days (sadly).
However these are my brief thoughts.

2015ko uztailak 1an, Rasmus-ek idatzi zuen:
 
 Hi,
 
 Attached is a patch that works reasonably well to allow :float nil
 floats to have captions in ox-latex.
 
 The hard part is src-blocks.
 
 At the moment we sometimes allow captions to register as figures (at least
 when when using verbatim).  Instead we could go with listing.  Of course
 listing is not a known environment to LaTeX.  We can add register it with
 newfloat in default-packages, or we can mention in the manual the lines
 that needs to be added to org-latex-packages if desired:
 
  \usepackage{newfloat}
  \DeclareFloatingEnvironment{listing}


I think this should depend on the value of org-latex-listings:
nil - use \captionof{float}
t - use \captionof{listing}
minted - use \captionof{listing} (see below for why)

 We could also unconditionally use captionof in case of verbatim output for
 src blocks, even if float is required, which would allow us to kill
 float.sty from default package alist.
 
 BTW: In the current code we uses \captionof{listing}{caption} with minted.
 This seems incompatible.  

Minted uses listing as its floating environment; see sec. 5 of the
minted manual.  So this seems correct in fact.

 But I have not really used minted so I don't know if I did the
 test correctly.  minted has a [H] placement through it's listings
 environment, it seems, so I don't think we need captionof there.

I’m not sure that minted provides this separately from the float
package.  So it’s probably better to use \captionof in the minted case
as well.  Certainly it will make things more consistent from org’s POV.

Thanks,
Aaron

 
 Aaron: I think you had something to do with this at some point, hence the Cc.
 
 WDYT? 
 
 Rasmus
 
 Examples:
 
 #+caption: cap
 #+attr_latex: :float nil
 |a|
 
 ⇒
 
 \begin{center}
 \captionof{table}{cap}
 \begin{tabular}{l}
 \toprule
 a\\
 \bottomrule
 \end{tabular}
 \end{center}
 
 (Of course, this is from my normal Emacs session)
 
 
 #+caption: cap
 #+attr_latex: :float nil
 [[file:org.png]]
 
 ⇒
 
 \begin{center}
 \includegraphics{org.png}
 \captionof{figure}{cap}
 \end{center}
 
 
 #+caption: test
 #+attr_latex: :float nil
 #+BEGIN_SRC emacs-lisp
   (setq org-latex-listings 'minted)
 #+END_SRC
 
 ⇒ [Note, latex is happy with this...]
 
 % \usepackage{minted}
 \begin{minted}[]{common-lisp}
 (setq org-latex-listings 'minted)
 \end{minted}
 \captionof{listing}{test}
 
 
 #+caption: test
 #+attr_latex: :float nil
 #+BEGIN_SRC emacs-lisp
   (setq org-latex-listings nil)
 #+END_SRC
 
 ⇒ [Note, here I think we should use listing instead of figure]
 
 \begin{verbatim}
 (setq org-latex-listings nil)
 \end{verbatim}
 \captionof{figure}{test}
 
 
 -- 
 Don't panic!!!
 From 590390f2e5cf34edcfbb13b18e5c9abc67b98d93 Mon Sep 17 00:00:00 2001
 From: Rasmus ras...@gmx.us
 Date: Wed, 1 Jul 2015 01:12:42 +0200
 Subject: [PATCH] ox-latex: Support captions for None-floats
 
 * ox-latex.el (org-latex--caption/label-string): Format
   nonfloating captions using the capt-of package.
   (org-latex--inline-image, org-latex-src-block)
   (org-latex--org-table): Allow none-float and caption.
 ---
  etc/ORG-NEWS |  1 +
  lisp/ox-latex.el | 68 
 +++-
  2 files changed, 49 insertions(+), 20 deletions(-)
 
 diff --git a/etc/ORG-NEWS b/etc/ORG-NEWS
 index ea7a2de..9592f88 100644
 --- a/etc/ORG-NEWS
 +++ b/etc/ORG-NEWS
 @@ -398,6 +398,7 @@ set using the hh:mm:ss format.
  ~org-clone-subtree-with-time-shift~ now accepts 0 as an argument for
  the number of clones, which removes the repeater from the original
  subtree and creates one shifted, repeating clone.
 +*** None-floating tables, graphics and blocks can have captions
  ** Miscellaneous
  *** Strip all meta data from ITEM special property
  ITEM special property does not contain TODO, priority or tags anymore.
 diff --git a/lisp/ox-latex.el b/lisp/ox-latex.el
 index 11fa00d..918949b 100644
 --- a/lisp/ox-latex.el
 +++ b/lisp/ox-latex.el
 @@ -1109,21 +1109,31 @@ caption nor label, return the empty string.
  For non-floats, see `org-latex--wrap-label'.
(let* ((label (org-latex--label element info nil t))
(main (org-export-get-caption element))
 +  (attr (org-export-read-attribute :attr_latex element))
 +  (nonfloat (and (member :float attr)
 + (not (plist-get attr :float))
 + main))
(short (org-export-get-caption element t))
 -  (caption-from-attr-latex
 -   (org-export-read-attribute :attr_latex element :caption)))
 +  (caption-from-attr-latex (plist-get attr :caption)))
  (cond
   ((org-string-nw-p caption-from-attr-latex)
   

Re: [O] [patch, ox-latex] caption and :float nil

2015-07-01 Thread Rasmus
Hi,

Aaron Ecay aarone...@gmail.com writes:

 AFAICS you sent the original message only to me.  I’m replying also to
 the org mode list.  You may want to resend the patch attachment though,
 since the quoting in this reply will probably mangle it.

  http://permalink.gmane.org/gmane.emacs.orgmode/98791

??

 2015ko uztailak 1an, Rasmus-ek idatzi zuen:
 
 Hi,
 
 Attached is a patch that works reasonably well to allow :float nil
 floats to have captions in ox-latex.
 
 The hard part is src-blocks.
 
 At the moment we sometimes allow captions to register as figures (at least
 when when using verbatim).  Instead we could go with listing.  Of course
 listing is not a known environment to LaTeX.  We can add register it with
 newfloat in default-packages, or we can mention in the manual the lines
 that needs to be added to org-latex-packages if desired:
 
  \usepackage{newfloat}
  \DeclareFloatingEnvironment{listing}


 I think this should depend on the value of org-latex-listings:
 nil - use \captionof{float}

You mean figure.  But a source block in not a float.

 t - use \captionof{listing}
 minted - use \captionof{listing} (see below for why)


 We could also unconditionally use captionof in case of verbatim output for
 src blocks, even if float is required, which would allow us to kill
 float.sty from default package alist.
 
 BTW: In the current code we uses \captionof{listing}{caption} with minted.
 This seems incompatible.  

 Minted uses listing as itsf floating environment; see sec. 5 of the
 minted manual.  So this seems correct in fact.

Consider this minimal example

\documentclass{article}
\usepackage{minted}
\usepackage{capt-of}
\begin{document}
\begin{minted}{lisp}
(+ 1 1 )
\end{minted}
\captionof{listing}{test}
\end{document}

This is the error I get when compiling:

ERROR: Undefined control sequence.

--- TeX said ---
\@tempf ... \@parboxrestore \normalsize \@fs@capt 
  {\@nameuse {fnum@#1}}{\ign...
l.8 \captionof{listing}{test}

It works fine when I use another counter than listing.

 But I have not really used minted so I don't know if I did the
 test correctly.  minted has a [H] placement through it's listings
 environment, it seems, so I don't think we need captionof there.

 I’m not sure that minted provides this separately from the float
 package.  So it’s probably better to use \captionof in the minted case
 as well.  Certainly it will make things more consistent from org’s POV.


I guess it doesn't.  In any, minted.sty has

  \RequirePackage{float}

So we can be sure [H] is available.  Thus, we should just rely on float.

Rasmus

-- 
Lasciate ogni speranza, voi che leggete questo.



Re: [O] [patch, ox-latex] caption and :float nil

2015-07-01 Thread Nicolas Goaziou
Hello,

Rasmus ras...@gmx.us writes:

 Attached is a patch that works reasonably well to allow :float nil
 floats to have captions in ox-latex.

Thanks for the patch. A minor comment follows.

 +  (attr (org-export-read-attribute :attr_latex element))
 +  (nonfloat (and (member :float attr)

  (plist-member :float attr)


 -  'figure
 +  (if (and (member :float attr) (not float)) 'nonfloat
 +'figure))

Ditto.


Regards,

-- 
Nicolas Goaziou



[O] [patch, ox-latex] caption and :float nil

2015-06-30 Thread Rasmus
Hi,

Attached is a patch that works reasonably well to allow :float nil
floats to have captions in ox-latex.

The hard part is src-blocks.

At the moment we sometimes allow captions to register as figures (at least
when when using verbatim).  Instead we could go with listing.  Of course
listing is not a known environment to LaTeX.  We can add register it with
newfloat in default-packages, or we can mention in the manual the lines
that needs to be added to org-latex-packages if desired:

 \usepackage{newfloat}
 \DeclareFloatingEnvironment{listing}

We could also unconditionally use captionof in case of verbatim output for
src blocks, even if float is required, which would allow us to kill
float.sty from default package alist.

BTW: In the current code we uses \captionof{listing}{caption} with minted.
This seems incompatible.  But I have not really used minted so I don't
know if I did the test correctly.  minted has a [H] placement through it's
listings environment, it seems, so I don't think we need captionof there.

Aaron: I think you had something to do with this at some point, hence the Cc.

WDYT? 

Rasmus

Examples:

#+caption: cap
#+attr_latex: :float nil
|a|

⇒

\begin{center}
\captionof{table}{cap}
\begin{tabular}{l}
\toprule
a\\
\bottomrule
\end{tabular}
\end{center}

(Of course, this is from my normal Emacs session)


#+caption: cap
#+attr_latex: :float nil
[[file:org.png]]

⇒

\begin{center}
\includegraphics{org.png}
\captionof{figure}{cap}
\end{center}


#+caption: test
#+attr_latex: :float nil
#+BEGIN_SRC emacs-lisp
  (setq org-latex-listings 'minted)
#+END_SRC

⇒ [Note, latex is happy with this...]

% \usepackage{minted}
\begin{minted}[]{common-lisp}
(setq org-latex-listings 'minted)
\end{minted}
\captionof{listing}{test}


#+caption: test
#+attr_latex: :float nil
#+BEGIN_SRC emacs-lisp
  (setq org-latex-listings nil)
#+END_SRC

⇒ [Note, here I think we should use listing instead of figure]

\begin{verbatim}
(setq org-latex-listings nil)
\end{verbatim}
\captionof{figure}{test}


-- 
Don't panic!!!
From 590390f2e5cf34edcfbb13b18e5c9abc67b98d93 Mon Sep 17 00:00:00 2001
From: Rasmus ras...@gmx.us
Date: Wed, 1 Jul 2015 01:12:42 +0200
Subject: [PATCH] ox-latex: Support captions for None-floats

* ox-latex.el (org-latex--caption/label-string): Format
  nonfloating captions using the capt-of package.
  (org-latex--inline-image, org-latex-src-block)
  (org-latex--org-table): Allow none-float and caption.
---
 etc/ORG-NEWS |  1 +
 lisp/ox-latex.el | 68 +++-
 2 files changed, 49 insertions(+), 20 deletions(-)

diff --git a/etc/ORG-NEWS b/etc/ORG-NEWS
index ea7a2de..9592f88 100644
--- a/etc/ORG-NEWS
+++ b/etc/ORG-NEWS
@@ -398,6 +398,7 @@ set using the hh:mm:ss format.
 ~org-clone-subtree-with-time-shift~ now accepts 0 as an argument for
 the number of clones, which removes the repeater from the original
 subtree and creates one shifted, repeating clone.
+*** None-floating tables, graphics and blocks can have captions
 ** Miscellaneous
 *** Strip all meta data from ITEM special property
 ITEM special property does not contain TODO, priority or tags anymore.
diff --git a/lisp/ox-latex.el b/lisp/ox-latex.el
index 11fa00d..918949b 100644
--- a/lisp/ox-latex.el
+++ b/lisp/ox-latex.el
@@ -1109,21 +1109,31 @@ caption nor label, return the empty string.
 For non-floats, see `org-latex--wrap-label'.
   (let* ((label (org-latex--label element info nil t))
 	 (main (org-export-get-caption element))
+	 (attr (org-export-read-attribute :attr_latex element))
+	 (nonfloat (and (member :float attr)
+			(not (plist-get attr :float))
+			main))
 	 (short (org-export-get-caption element t))
-	 (caption-from-attr-latex
-	  (org-export-read-attribute :attr_latex element :caption)))
+	 (caption-from-attr-latex (plist-get attr :caption)))
 (cond
  ((org-string-nw-p caption-from-attr-latex)
   (concat caption-from-attr-latex \n))
  ((and (not main) (equal label )) )
  ((not main) (concat label \n))
  ;; Option caption format with short name.
- (short (format \\caption[%s]{%s%s}\n
-		(org-export-data short info)
-		label
-		(org-export-data main info)))
- ;; Standard caption format.
- (t (format \\caption{%s%s}\n label (org-export-data main info))
+ (t
+  (format (if nonfloat \\captionof{%s}%s{%s%s}\n
+		\\caption%s%s{%s%s}\n)
+	  (if nonfloat
+		  (let ((type (org-element-type element)))
+		(case type
+		  (paragraph figure)
+		  (src-block listing)
+		  (t (symbol-name type
+		)
+	  (if short (format [%s] (org-export-data short info)) )
+	  label
+	  (org-export-data main info))
 
 (defun org-latex-guess-inputenc (header)
   Set the coding system in inputenc to what the buffer is.
@@ -1975,14 +1985,15 @@ used as a communication channel.
 	 ;; Retrieve latex attributes from the element around.
 	 (attr (org-export-read-attribute :attr_latex parent))
 	 (float (let