From: John Kitchin <jkitchin@andrew.cmu.edu>
To: "Juan Manuel Macías" <maciaschain@posteo.net>
Cc: emacs-orgmode@gnu.org
Subject: Re: [tip] Export subfigures to LaTeX (and HTML)
Date: Mon, 28 Dec 2020 13:03:48 -0500 [thread overview]
Message-ID: <m2a6txajuj.fsf@andrew.cmu.edu> (raw)
In-Reply-To: <87mty1an66.fsf@posteo.net>
This is an interesting use of links, in particular extending the
information in the description.
You might look at this
http://kitchingroup.cheme.cmu.edu/blog/2015/02/05/Extending-the-org-mode-link-syntax-with-attributes/
for another way to do that.
Check out this alternative approach all together that also uses a
special block.
http://kitchingroup.cheme.cmu.edu/blog/2016/01/17/Side-by-side-figures-in-org-mode-for-different-export-outputs/
I don't use either of these today, and they are old so who knows if they
still work, but they have some fun ideas in them.
Juan Manuel Macías <maciaschain@posteo.net> writes:
> Hi,
>
> I have come up with a way to export subfigures to LaTeX (with the subfigure package) by
> defining a new link type. The 'subcaption' of the subfigure would be the description of
> the link. If we want to add parameters such as width, scale, etc., we can put them next
> between the marks '>( ... )'
>
> The code:
>
> #+begin_src emacs-lisp
> (org-link-set-parameters
> "subfig"
> :follow (lambda (file) (find-file file))
> :face '(:foreground "chocolate" :weight bold :underline t)
> :display 'full
> :export (lambda (file desc backend)
> (when (eq backend 'latex)
> (if (string-match ">(\\(.+\\))" desc)
> (concat "\\subfigure[" (replace-regexp-in-string "\s+>(.+)" "" desc) "]"
> "{\\includegraphics"
> "["
> (match-string 1 desc)
> "]"
> "{"
> file
> "}}")
> (format "\\subfigure[%s]{\\includegraphics{%s}}" desc file)))))
> #+end_src
>
> Example:
>
> #+begin_src org
> ,#+CAPTION: Lorem impsum dolor
> ,#+ATTR_LaTeX: :options \centering
> ,#+begin_figure
> [[subfig:img1.jpg][Caption of img1 >(width=.3\textwidth)]]
>
> [[subfig:img2.jpg][Caption of img2 >(width=.3\textwidth)]]
>
> [[subfig:img3.jpg][Caption of img3 >(width=.6\textwidth)]]
> ,#+end_figure
> #+end_src
>
> Results:
>
> #+begin_src latex
> \begin{figure}\centering
> \subfigure[Caption of img1]{\includegraphics[width=.3\textwidth]{img1.jpg}}
>
> \subfigure[Caption of img2]{\includegraphics[width=.3\textwidth]{img2.jpg}}
>
> \subfigure[Caption of img3]{\includegraphics[width=.6\textwidth]{img3.jpg}}
> \caption{Lorem impsum dolor}
> \end{figure}
> #+end_src
>
> If we want to export to HTML it would be something more tricky. In this case, the export
> function could be like this (a width parameter would be enclosed between >{ ... }):
>
> #+begin_src emacs-lisp
> (lambda (file desc backend)
> (cond
> ((eq backend 'latex)
> (if (string-match ">(\\(.+\\))" desc)
> (concat "\\subfigure[" (replace-regexp-in-string "\s*>.+" "" desc) "]" "{\\includegraphics" "[" (match-string 1 desc) "]" "{" file "}}")
> (format "\\subfigure[%s]{\\includegraphics{%s}}" (replace-regexp-in-string "\s*>.+" "" desc) file)))
> ((eq backend 'html)
> (if (string-match ">{\\(.+\\)}" desc)
> (concat "<td><img src=\"" file "\" alt=\"" file "\"" " style=\"width:"
> (match-string 1 desc)
> "\""
> "/><br>"
> (replace-regexp-in-string "\s*>.+" "" desc)
> "</td>")
> (format "<td><img src=\"%s\" alt=\"%s\"/><br>%s</td>"
> file file
> (replace-regexp-in-string "\s*>.+" "" desc))))))
> #+end_src
>
> Example:
>
> #+begin_src org
> ,#+CAPTION: Lorem impsum dolor
> ,#+ATTR_LaTeX: :options \centering
> ,#+begin_figure
> @@html:<div class="org-center"><table style="margin-left:auto;margin-right:auto;"><tr>@@
>
> [[subfig:img1.jpg][Caption of img1 >(width=.3\textwidth) >{300px}]]
>
> [[subfig:img2.jpg][Caption of img2 >(width=.3\textwidth) >{300px}]]
>
> @@html:</tr></table><p> </p><table style="margin-left:auto;margin-right:auto;"><tr>@@
>
> [[subfig:img3.jpg][Caption of img3 >(width=.6\textwidth) >{600px}]]
>
> @@html:</tr></table><br>Lorem ipsum dolor</div>@@
> ,#+end_figure
> #+end_src
>
> As you can see, it is not the panacea, and you have to apply some direct format...
>
> Happy holidays
>
> Juan Manuel
--
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
next prev parent reply other threads:[~2020-12-28 18:05 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-12-25 16:02 [tip] Export subfigures to LaTeX (and HTML) Juan Manuel Macías
2020-12-28 18:03 ` John Kitchin [this message]
2020-12-29 15:00 ` Juan Manuel Macías
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.orgmode.org/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=m2a6txajuj.fsf@andrew.cmu.edu \
--to=jkitchin@andrew.cmu.edu \
--cc=emacs-orgmode@gnu.org \
--cc=maciaschain@posteo.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).