emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
* Sub-figures in Org Mode
@ 2021-10-22 23:27 Jason Ross
  2021-10-23  0:00 ` Juan Manuel Macías
                   ` (2 more replies)
  0 siblings, 3 replies; 6+ messages in thread
From: Jason Ross @ 2021-10-22 23:27 UTC (permalink / raw)
  To: emacs-orgmode

Are there any workarounds people use to create subfigures in Org Mode
when exporting to LaTeX? Example output:

#+begin_example latex
\documentclass{article}
\usepackage[demo]{graphicx}
\usepackage{subcaption}
\begin{document}
\begin{figure}
\begin{subfigure}{.5\textwidth}
   \centering
   \includegraphics[width=.8\linewidth]{image1}
   \caption{1a}
   \label{fig:sfig1}
\end{subfigure}%
\begin{subfigure}{.5\textwidth}
   \centering
   \includegraphics[width=.8\linewidth]{image2}
   \caption{1b}
   \label{fig:sfig2}
\end{subfigure}
\caption{plots of....}
\label{fig:fig}
\end{figure}
\end{document}
#+end_example

Based on how ox-latex.el handles images I don't see how this would be
possible but the people on this list are a lot smarter than I am so
maybe one of you has found a way.


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Sub-figures in Org Mode
  2021-10-22 23:27 Sub-figures in Org Mode Jason Ross
@ 2021-10-23  0:00 ` Juan Manuel Macías
  2021-10-26 17:46   ` Jason Ross
  2021-10-25 10:44 ` Eric S Fraga
  2021-10-25 10:48 ` Eric S Fraga
  2 siblings, 1 reply; 6+ messages in thread
From: Juan Manuel Macías @ 2021-10-23  0:00 UTC (permalink / raw)
  To: Jason Ross; +Cc: orgmode

Hi Jason,

Jason Ross <jasonross1024@gmail.com> writes:

> Are there any workarounds people use to create subfigures in Org Mode
> when exporting to LaTeX? Example output:

In this thread I explain a procedure to export images as subfigures
using org links: https://list.orgmode.org/87mty1an66.fsf@posteo.net/

Best regards,

Juan Manuel 


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Sub-figures in Org Mode
  2021-10-22 23:27 Sub-figures in Org Mode Jason Ross
  2021-10-23  0:00 ` Juan Manuel Macías
@ 2021-10-25 10:44 ` Eric S Fraga
  2021-10-25 10:48 ` Eric S Fraga
  2 siblings, 0 replies; 6+ messages in thread
From: Eric S Fraga @ 2021-10-25 10:44 UTC (permalink / raw)
  To: Jason Ross; +Cc: emacs-orgmode

[-- Attachment #1: Type: text/plain, Size: 477 bytes --]

On Friday, 22 Oct 2021 at 16:27, Jason Ross wrote:
> Are there any workarounds people use to create subfigures in Org Mode
> when exporting to LaTeX? Example output:

The attached should do the job?  At least, it seems to export to your
sample LaTeX.  I cannot compile as for some reason subcaption conflicts
with my standard org to LaTeX setup.

-- 
: Eric S Fraga via Emacs 28.0.60, Org release_9.5-163-g4eab5b
: Latest paper written in org: https://arxiv.org/abs/2106.05096

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: t.org --]
[-- Type: text/x-org, Size: 609 bytes --]

#+latex_header: \usepackage[demo]{graphicx}
#+latex_header: \usepackage{subcaption}
* Question
Are there any workarounds people use to create subfigures in Org Mode
when exporting to LaTeX? Example output:
* Attempt
#+name: fig:fig
#+caption: plots of....
#+begin_figure

#+name: fig:sfig1
#+caption: 1a
#+attr_latex: :options {0.5\textwidth}
#+begin_subfigure
#+attr_latex: :width 0.8\linewidth
[[~/s/test/mip.png]]
#+end_subfigure

#+name: fig:sfig2
#+attr_latex: :options {0.5\textwidth}
#+caption: 1a
#+begin_subfigure
#+attr_latex: :width 0.8\linewidth
[[~/s/test/mip.png]]
#+end_subfigure

#+end_figure

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Sub-figures in Org Mode
  2021-10-22 23:27 Sub-figures in Org Mode Jason Ross
  2021-10-23  0:00 ` Juan Manuel Macías
  2021-10-25 10:44 ` Eric S Fraga
@ 2021-10-25 10:48 ` Eric S Fraga
  2 siblings, 0 replies; 6+ messages in thread
From: Eric S Fraga @ 2021-10-25 10:48 UTC (permalink / raw)
  To: Jason Ross; +Cc: emacs-orgmode

[-- Attachment #1: Type: text/plain, Size: 183 bytes --]

Updated example attached: forgot the subcaptions...

-- 
: Eric S Fraga via Emacs 28.0.60, Org release_9.5-163-g4eab5b
: Latest paper written in org: https://arxiv.org/abs/2106.05096

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: t.org --]
[-- Type: text/x-org, Size: 659 bytes --]

#+latex_header: \usepackage[demo]{graphicx}
#+latex_header: \usepackage{subcaption}
* Question
Are there any workarounds people use to create subfigures in Org Mode
when exporting to LaTeX? Example output:
* Attempt
#+name: fig:fig
#+caption: plots of....
#+begin_figure

#+name: fig:sfig1
#+attr_latex: :caption \subcaption{1a}
#+attr_latex: :options {0.5\textwidth}
#+begin_subfigure
#+attr_latex: :width 0.8\linewidth
[[~/s/test/mip.png]]
#+end_subfigure

#+name: fig:sfig2
#+attr_latex: :options {0.5\textwidth}
#+attr_latex: :caption \subcaption{1b}
#+begin_subfigure
#+attr_latex: :width 0.8\linewidth
[[~/s/test/mip.png]]
#+end_subfigure

#+end_figure

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Sub-figures in Org Mode
  2021-10-23  0:00 ` Juan Manuel Macías
@ 2021-10-26 17:46   ` Jason Ross
  2021-10-30 14:28     ` Juan Manuel Macías
  0 siblings, 1 reply; 6+ messages in thread
From: Jason Ross @ 2021-10-26 17:46 UTC (permalink / raw)
  To: Juan Manuel Macías; +Cc: orgmode

Hi Juan,

On 10/22/21 5:00 PM, Juan Manuel Macías wrote:
> Hi Jason,
> 
> Jason Ross <jasonross1024@gmail.com> writes:
> 
>> Are there any workarounds people use to create subfigures in Org Mode
>> when exporting to LaTeX? Example output:
> 
> In this thread I explain a procedure to export images as subfigures
> using org links: https://list.orgmode.org/87mty1an66.fsf@posteo.net/
> 
> Best regards,
> 
> Juan Manuel
> 

Those are some really clever solutions. I hadn't considered using a
dsl for figure options.

I'm looking at declaring a "figure" block the way you are, but
`org-element-map'ing over the links inside the block and processing them
with the "normal" link-handling machinery. That way, image options work
the same way in a subfigure as they do normally.

Here's what I'm messing with for the ConTeXt backend (this relies
on some changes to figure handling I haven't pushed yet):

#+begin_src elisp
(defun org-context--special-block-figure (orig-fun special-block 
contents info)
   (let ((type (org-element-property :type special-block)))
     (if (string= "figure" (downcase type))
         (let* ((attr (org-export-read-attribute :attr_context 
special-block))
                (links (org-element-map special-block 'link #'identity))
                (placefigure-options
                 (org-context--format-arguments
                  (org-context--get-placefigure-options special-block 
info)))
                (captionp
                 (mapcan
                  (lambda (link)
                    (let* ((parent (org-export-get-parent-element link))
                           (caption (org-string-nw-p 
(org-context--caption/label-string parent info))))
                      (and caption (list caption))))
                  links))
                (image-codes
                 (mapconcat
                  (lambda (link)
                    (let ((figure-string 
(org-context--get-link-figure-string link info)))
                      (if captionp
                        (let ((caption
                               (org-string-nw-p
                                (org-context--caption/label-string
                                 (org-export-get-parent-element link) 
info))))
                          (format "{%s}\n{%s}"
                                  figure-string (or caption "")))
                      (format "{%s}" figure-string)))

                    )
                  links
                  "\n"))
                (dimensions
                 (let* ((rows (plist-get attr :rows))
                        (cols (plist-get attr :cols))
                        (nlinks (length links)))
                   (if
                       (and rows cols)
                       (cons (string-to-number rows) (string-to-number 
cols))
                     (cons 1 nlinks))))
                combination-options)
           (if captionp
                (push (cons "alternative" "text") combination-options)
             (push (cons "alternative" "label") combination-options))
           (push (cons "nx" (format "%s" (cdr dimensions))) 
combination-options)
           (push (cons "ny" (format "%s" (car dimensions))) 
combination-options)
           (message (format "%S" combination-options))
           (format "\\startplacefigure[%s]
\\startcombination[%s]
%s
\\stopcombination
\\stopplacefigure"
                   placefigure-options
                   (org-context--format-arguments combination-options)
                   image-codes))
       (funcall orig-fun special-block contents info))))

(advice-add 'org-context-special-block :around 
#'org-context--special-block-figure)

#+end_src



^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Sub-figures in Org Mode
  2021-10-26 17:46   ` Jason Ross
@ 2021-10-30 14:28     ` Juan Manuel Macías
  0 siblings, 0 replies; 6+ messages in thread
From: Juan Manuel Macías @ 2021-10-30 14:28 UTC (permalink / raw)
  To: Jason Ross; +Cc: orgmode

Hi Jason, sorry for the late reply.

Jason Ross writes:

> I'm looking at declaring a "figure" block the way you are, but
> `org-element-map'ing over the links inside the block and processing them
> with the "normal" link-handling machinery. That way, image options work
> the same way in a subfigure as they do normally.

I really like your idea, and it's more consistent with the Org syntax,
since (as you say) the images behave like images and it is not necessary
to enter the options via marks within the link description, which is somewhat
hacky. I think your idea could also be adapted to LaTeX (and HTML)
backends... 

Best regards,

Juan Manuel 


^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2021-10-30 14:29 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-10-22 23:27 Sub-figures in Org Mode Jason Ross
2021-10-23  0:00 ` Juan Manuel Macías
2021-10-26 17:46   ` Jason Ross
2021-10-30 14:28     ` Juan Manuel Macías
2021-10-25 10:44 ` Eric S Fraga
2021-10-25 10:48 ` Eric S Fraga

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).