emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
* [PATCH] ob-latex: Added support for including files with a relative path
@ 2022-07-04 19:15 emacs--- via General discussions about Org-mode.
  2022-07-05 10:43 ` Daniel Fleischer
  0 siblings, 1 reply; 7+ messages in thread
From: emacs--- via General discussions about Org-mode. @ 2022-07-04 19:15 UTC (permalink / raw)
  To: Emacs Orgmode


[-- Attachment #1.1: Type: text/plain, Size: 1340 bytes --]

 Dear list, 

in the attachment you find a proposed patch to support including external files
when exporting a latex source block. Currently this was only possible by using a
:header argument. The problem with this approach is that, files needed to be
included with their absolute path.


My proposed change adds support for a :inputs header argument, which expands te
provided file paths to an absolute path before including them.


Example: 
#+HEADER: :file example.pdf
#+HEADER: :inputs '("./input/preamble.tex")
#+BEGIN_src latex
\begin{tikzpicture}
  \draw[->,custom-style] (-3,0) -- (-2,0)
    arc[radius=0.5cm,start angle=-180,endangle=0] (-1,0) -- (1,0)
    arc[radius=0.5cm,start angle=180,end angle=0] (2,0) -- (3,0);
    \filldraw (-1.5,0) circle[radius=1mm];
    \filldraw (1.5,0)circle[radius=1mm];
\end{tikzpicture}
#+END_src

Expands to 

\documentclass[article]...
\input{absolute/path/to/input/preamble.tex}
\begin{document}
\begin{tikzpicture}
  \draw[->,custom-style] (-3,0) -- (-2,0)
    arc[radius=0.5cm,start angle=-180,endangle=0] (-1,0) -- (1,0)
    arc[radius=0.5cm,start angle=180,end angle=0] (2,0) -- (3,0);
    \filldraw (-1.5,0) circle[radius=1mm];
    \filldraw (1.5,0)circle[radius=1mm];
\end{tikzpicture}
\end{document}
Kind regards,
Bob 

[-- Attachment #1.2: Type: text/html, Size: 2610 bytes --]

[-- Attachment #2: 0001-lisp-ob-latex.el-Added-latex-inputs.patch --]
[-- Type: application/octet-stream, Size: 1619 bytes --]

From 42da47c55106e6bf55f46333c7c50daa48b1a67f Mon Sep 17 00:00:00 2001
From: Bob Vergauwen <bob@vergauwen.me>
Date: Mon, 4 Jul 2022 20:46:25 +0200
Subject: [PATCH] lisp/ob-latex.el: Added latex inputs

* lisp/ob-latex.el (org-babel-execute:latex): Added support for
including external latex files. Using the :inputs header, external files
can be specified to be included at the top of the produced tex
file. All relative file paths are resolved before including the files.
(org-babel-header-args:latex): Added the inputs as a possible header argument

TINYCHANGE
---
 lisp/ob-latex.el | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/lisp/ob-latex.el b/lisp/ob-latex.el
index 54816bdc5..f0b466d6d 100644
--- a/lisp/ob-latex.el
+++ b/lisp/ob-latex.el
@@ -65,6 +65,7 @@
     (pdfwidth     . :any)
     (headers      . :any)
     (packages     . :any)
+    (inputs       . :any)
     (buffer       . ((yes no))))
   "LaTeX-specific header arguments.")
 
@@ -146,6 +147,10 @@ This function is called by `org-babel-execute-src-block'."
 	     (height (and fit (cdr (assq :pdfheight params))))
 	     (width (and fit (cdr (assq :pdfwidth params))))
 	     (headers (cdr (assq :headers params)))
+	     (inputs (mapcar (lambda (file)
+                           (concat "\\input{" (expand-file-name file) "}"))
+                         (cdr (assq :inputs params))))
+             (headers (append headers inputs))
 	     (in-buffer (not (string= "no" (cdr (assq :buffer params)))))
 	     (org-latex-packages-alist
 	      (append (cdr (assq :packages params)) org-latex-packages-alist)))
-- 
2.30.1 (Apple Git-130)


^ permalink raw reply related	[flat|nested] 7+ messages in thread
* Re: Re: [PATCH] ob-latex: Added support for including files with a relative path
@ 2022-07-06  7:49 emacs--- via General discussions about Org-mode.
  2022-07-06 10:18 ` Pedro Andres Aranda Gutierrez
  0 siblings, 1 reply; 7+ messages in thread
From: emacs--- via General discussions about Org-mode. @ 2022-07-06  7:49 UTC (permalink / raw)
  To: Pedro Andres Aranda Gutierrez; +Cc: Org Mode List, yantar92

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



> >>> Hi, adding an "input" type of header is one option. What about adding a
> >>> call to resolve relative file names instead, thus solving maybe other
> >>> needs in addition?
> >>>
> >> That was my second approach. I was concerned that forcing all imports with
> >> an absolute path could break existing exports? Correct me if I'm wrong. 
> >> Using the :header syntax external files can be loaded in via the old way,
> >> whereas using :inputs all relative paths are resolved. 
> >> The downside of course is that we clutter the export settings with a new 
> >> parameter. 
> >
> >Rather than changing paths to absolute, we can simply play with the
> >working directly for latex process and set it to the directory of the
> >.org file (unless :dir argument is passed to the latex source block).
> >This is probably the most expected behavior.
> >
> >Best,
> >Ihor
>
> Just my .01 cents...
>
> For Latex stuff I'm using just
>
> #+HEADER: \input{preamble} 
>
> and have my preamble.tex in the working directory. (For Beamer stuff it goes in a LATEX_HEADER).
>
> Changing that to
>
> #+HEADER :inputs '("preamble")
>
> well, would be a matter of taste. 
>
Ox-beamer (ox-latex) executes all latex commands at the current directory of 
your org file, whereas ob-latex uses a temporary file to do its thing. 
(with-temp-file FILE &rest BODY)
I think this is mostly done to prent metafiles from cluttering your current 
directory. 

Different export types, or different user included packages, generate different
 metafiles. This makes an automated cleanup process afterwards a bit more
complicated I think, if not impossible. 

The temporary file makes it hard to add files to the working directory. 








[-- Attachment #2: Type: text/html, Size: 2971 bytes --]

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

end of thread, other threads:[~2022-07-06 10:22 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-07-04 19:15 [PATCH] ob-latex: Added support for including files with a relative path emacs--- via General discussions about Org-mode.
2022-07-05 10:43 ` Daniel Fleischer
2022-07-05 10:52   ` emacs--- via General discussions about Org-mode.
2022-07-05 11:05     ` Ihor Radchenko
2022-07-05 13:29       ` Daniel Fleischer
2022-07-05 13:50         ` Ihor Radchenko
  -- strict thread matches above, loose matches on Subject: below --
2022-07-06  7:49 emacs--- via General discussions about Org-mode.
2022-07-06 10:18 ` Pedro Andres Aranda Gutierrez

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).