Re: Support for tabularray in LaTeX export

2021-10-25 Thread Thomas Dye


> On Oct 25, 2021, at 4:23 AM, Juan Manuel Macías  
> wrote:
> 
> Vikas Rawal writes:
> 
>>> 
>>>Hi Vikas,
>>> 
>>>You can define a modified version of `org-latex--org-table',
>>>adding a new LaTeX attribute `:options'. Something like this:
>> 
>> Is there a case for incorporating this in orgmode itself? There is some 
>> general utility for this in my view.
> 
> I can prepare a patch based on that code, if you consider it useful
> (https://list.orgmode.org/87ilzjgyqg@posteo.net/)
> 
> Best regards,
> 
> Juan Manuel 
> 
+1

All the best,
Tom



Re: Support for tabularray in LaTeX export

2021-10-25 Thread Juan Manuel Macías
Vikas Rawal writes:

>>
>> Hi Vikas,
>>
>> You can define a modified version of `org-latex--org-table',
>> adding a new LaTeX attribute `:options'. Something like this:
>
> Is there a case for incorporating this in orgmode itself? There is some 
> general utility for this in my view.

I can prepare a patch based on that code, if you consider it useful
(https://list.orgmode.org/87ilzjgyqg@posteo.net/)

Best regards,

Juan Manuel 



Re: Support for tabularray in LaTeX export

2021-10-25 Thread Vikas Rawal


>
> Hi Vikas,
>
> You can define a modified version of `org-latex--org-table',
> adding a new LaTeX attribute `:options'. Something like this:

Is there a case for incorporating this in orgmode itself? There is some general 
utility for this in my view.


Vikas



Re: Support for tabularray in LaTeX export

2021-09-02 Thread Vikas Rawal
This is perfect. Thank you, Juan Manuel.

Vikas

On Thu, 2 Sept 2021 at 14:06, Juan Manuel Macías 
wrote:

> Hi Vikas,
>
> You can define a modified version of `org-latex--org-table',
> adding a new LaTeX attribute `:options'. Something like this:
>
> #+begin_src emacs-lisp
> (defun my/org-latex--org-table (table contents info)
>   "Return appropriate LaTeX code for an Org table.
>
> TABLE is the table type element to transcode.  CONTENTS is its
> contents, as a string.  INFO is a plist used as a communication
> channel.
>
> This function assumes TABLE has `org' as its `:type' property and
> `table' as its `:mode' attribute."
>   (let* ((attr (org-export-read-attribute :attr_latex table))
>  (alignment (org-latex--align-string table info))
>  (opt (org-export-read-attribute :attr_latex table :options))
>  (table-env (or (plist-get attr :environment)
> (plist-get info :latex-default-table-environment)))
>  (width
>   (let ((w (plist-get attr :width)))
> (cond ((not w) "")
>   ((member table-env '("tabular" "longtable")) "")
>   ((member table-env '("tabu" "longtabu"))
>(format (if (plist-get attr :spread) " spread %s "
>  " to %s ")
>w))
>   (t (format "{%s}" w)
>  (caption (org-latex--caption/label-string table info))
>  (above? (org-latex--caption-above-p table info)))
> (cond
>  ((member table-env '("longtable" "longtabu"))
>   (let ((fontsize (let ((font (plist-get attr :font)))
> (and font (concat font "\n")
> (concat (and fontsize (concat "{" fontsize))
> (format "\\begin{%s}%s{%s}\n" table-env width alignment)
> (and above?
>  (org-string-nw-p caption)
>  (concat caption "\n"))
> contents
> (and (not above?)
>  (org-string-nw-p caption)
>  (concat caption "\n"))
> (format "\\end{%s}" table-env)
> (and fontsize "}"
>  (t
>   (let ((output (format "\\begin{%s}%s%s{%s}\n%s\\end{%s}"
> table-env
> (if opt opt "")
> width
> alignment
> contents
> table-env)))
> (org-latex--decorate-table output attr caption above? info))
>
> (advice-add 'org-latex--org-table :override #'my/org-latex--org-table)
> #+end_src
>
> and then:
>
> #+ATTR_LATEX: :environment longtblr
> #+ATTR_LATEX: :align 
> #+ATTR_LATEX: :booktabs t
> #+ATTR_LaTeX: :options []
>
> Best regards,
>
> Juan Manuel
>
> Vikas Rawal writes:
>
> > tabularray (CTAN: Package tabularray) provides longtblr environment
> > that is called as
> >
> > ---
> > \begin{longtblr}[various-table-options]{column and row specifications}
> >
> > \end{longtblr}
> > ---
> >
> > Adding something like the following to orgmode tables makes them
> > export nicely as longtblr
> >
> > ---
> > #+ATTR_LATEX: :environment longtblr
> > #+ATTR_LATEX: :align width=0.8\textwidth,colspec={lX[2,r]X[3,r]X
> > [r,bg=gray9]}
> > #+ATTR_LATEX: :booktabs t
> > ---
> >
> > Everything seems to work very well with orgmode except that I cannot
> > figure out how to pass [various table options] from orgmode. These
> > table options include, most importantly, table notes.
> >
> > I normally use threeparttable for table notes, but longtblr does not
> > seem to work with threeparttable and has its own syntax for table
> > notes.
> >
> > Any advice on how to pass [table-options] to longtblr environment?
> >
> > Vikas
> >
>


Re: Support for tabularray in LaTeX export

2021-09-02 Thread Juan Manuel Macías
Hi Vikas,

You can define a modified version of `org-latex--org-table',
adding a new LaTeX attribute `:options'. Something like this:

#+begin_src emacs-lisp
(defun my/org-latex--org-table (table contents info)
  "Return appropriate LaTeX code for an Org table.

TABLE is the table type element to transcode.  CONTENTS is its
contents, as a string.  INFO is a plist used as a communication
channel.

This function assumes TABLE has `org' as its `:type' property and
`table' as its `:mode' attribute."
  (let* ((attr (org-export-read-attribute :attr_latex table))
 (alignment (org-latex--align-string table info))
 (opt (org-export-read-attribute :attr_latex table :options))
 (table-env (or (plist-get attr :environment)
(plist-get info :latex-default-table-environment)))
 (width
  (let ((w (plist-get attr :width)))
(cond ((not w) "")
  ((member table-env '("tabular" "longtable")) "")
  ((member table-env '("tabu" "longtabu"))
   (format (if (plist-get attr :spread) " spread %s "
 " to %s ")
   w))
  (t (format "{%s}" w)
 (caption (org-latex--caption/label-string table info))
 (above? (org-latex--caption-above-p table info)))
(cond
 ((member table-env '("longtable" "longtabu"))
  (let ((fontsize (let ((font (plist-get attr :font)))
(and font (concat font "\n")
(concat (and fontsize (concat "{" fontsize))
(format "\\begin{%s}%s{%s}\n" table-env width alignment)
(and above?
 (org-string-nw-p caption)
 (concat caption "\n"))
contents
(and (not above?)
 (org-string-nw-p caption)
 (concat caption "\n"))
(format "\\end{%s}" table-env)
(and fontsize "}"
 (t
  (let ((output (format "\\begin{%s}%s%s{%s}\n%s\\end{%s}"
table-env
(if opt opt "")
width
alignment
contents
table-env)))
(org-latex--decorate-table output attr caption above? info))

(advice-add 'org-latex--org-table :override #'my/org-latex--org-table)
#+end_src

and then:

#+ATTR_LATEX: :environment longtblr
#+ATTR_LATEX: :align 
#+ATTR_LATEX: :booktabs t
#+ATTR_LaTeX: :options []

Best regards,

Juan Manuel

Vikas Rawal writes:

> tabularray (CTAN: Package tabularray) provides longtblr environment
> that is called as
>
> ---
> \begin{longtblr}[various-table-options]{column and row specifications}
>
> \end{longtblr}
> ---
>
> Adding something like the following to orgmode tables makes them
> export nicely as longtblr
>
> ---
> #+ATTR_LATEX: :environment longtblr
> #+ATTR_LATEX: :align width=0.8\textwidth,colspec={lX[2,r]X[3,r]X
> [r,bg=gray9]}
> #+ATTR_LATEX: :booktabs t
> ---
>
> Everything seems to work very well with orgmode except that I cannot
> figure out how to pass [various table options] from orgmode. These
> table options include, most importantly, table notes.
>
> I normally use threeparttable for table notes, but longtblr does not
> seem to work with threeparttable and has its own syntax for table
> notes.
>
> Any advice on how to pass [table-options] to longtblr environment?
>
> Vikas
>