emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Orgmode] Re: [Babel] Can't export to LaTeX anymore (args-out-of-ran


From: Eric Schulte
Subject: Re: [Orgmode] Re: [Babel] Can't export to LaTeX anymore (args-out-of-range 0 0)
Date: Tue, 21 Sep 2010 10:19:52 -0600
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.0.50 (gnu/linux)

Sébastien Vauban <address@hidden> writes:

> Hi Eric and all the others,
>
> "Eric Schulte" wrote:
>> Sébastien Vauban <address@hidden> writes:
>>> "Eric Schulte" wrote:
>>>>> The error occurs with such a simple document:
>>>>>
>>>>> #+TITLE:     Org-isodoc
>>>>> #+LANGUAGE:  en_US
>>>>>
>>>>> * Context
>>>>>
>>>>> This is a letter sample.
>>>>>
>>>>> * Subject
>>>>> #+srcname: subject
>>>>> #+begin_src org :results latex
>>>>> Composing letters using Org mode and the LaTeX isodoc class
>>>>> #+end_src
>>>>
>>>> This is a tricky problem indeed. [...] This fix will probably take some
>>>> time to implement, and until then I don't think it will be possible to
>>>> evaluate org-mode blocks during export.
>>
>> Noweb expansion is still possible, however explicitly performing the export
>> is not.
>>
>>> What could be a workaround?
>>
>> Simply change =:results latex= to =:results org= and the code block body
>> will be harmlessly expanded and deposited in the org buffer on export, then
>> carried along with the rest of the file for export.
>>
>> * Subject
>> #+source: me
>> #+begin_src org
>>   I am *eric*.
>> #+end_src
>>
>> #+srcname: subject
>> #+begin_src org :results org replace :noweb yes
>> Composing letters using *Org mode* and the LaTeX isodoc class
>>
>> <<me>>
>> #+end_src
>
> Question: =:results org replace= (instead of =:results org=) is necessary if
> we wanna see the results expanded in the Org buffer, on key =C-c C-v C-e=.
> Why?
>

by default org mode blocks do not insert their results, this was due to
their initial use to wrap results of code blocks.  This can be changed
in your personal configuration by customizing the value of the
`org-babel-default-header-args:org' variable.

>
> Trying to build on the route you mention, I come up with different
> solutions, such as:
>
> #+TITLE:     Org-isodoc
> #+AUTHOR:    Seb Vauban
> #+DATE:      2010-09-20
>
> * COMMENT Parameters
>
> #+source: contents
> #+begin_src org
> My body includes a list:
>
> - one
> - two
>
> and a small table:
>
> | first | second |
> | other | last   |
>
> Not more.
> #+end_src
>
> #+srcname: letter
> #+begin_src org :results org replace :noweb yes
> Composing letters using *Org mode* and the LaTeX isodoc class
>
> <<contents>>
> #+end_src
>
> * Results
>
> #+LaTeX: \documentclass[11pt]{isodoc}
> #+LaTeX: \usepackage[utf8x]{inputenc}
> #+LaTeX: \usepackage[T1]{fontenc}
>
> #+LaTeX: \setupdocument{
> #+LaTeX:     to = {Eric},
> #+LaTeX:     subject = {Tough to understand what to do...},
> #+LaTeX:     opening = {Hi},
> #+LaTeX:     closing = {Best}
> #+LaTeX: }
>
> #+LaTeX: \begin{document}
> #+LaTeX: {}\letter{%
>
> #+results: letter
> #+BEGIN_SRC org
> Composing letters using *Org mode* and the LaTeX isodoc class
>
> My body includes a list:
>
> - one
> - two
>
> and a small table:
>
> | first | second |
> | other | last   |
>
> Not more.
> #+END_SRC
>
> #+LaTeX: }
> #+LaTeX: \end{document}
>
> Asking for Org results, as you mentioned, made me dream about a direct export
> to PDF on =C-c C-v C-e=. However, when the Org results block =letter= is
> surrounded by LaTeX code, items and tables aren't translated anymore to their
> LaTeX counterparts.
>

true, your outer-most block would have to be an org-mode block, which
could include LaTeX sections if they were already surrounded in
begin/end_latex blocks.

>
> OK, even if it doe, I still have a couple of problems to resolve:
>
> - How to avoid generating the title of the exported headline (=* Results=)?
> - How to impose my =documentclass isodoc= instead of =article=?
>
> and maybe more.
>

Yes, it may not be possible to export directly to a latex letter using
Org-mode's build latex exporter.  I think the tangling solution you
mention below may be preferable.

>
> Then, if I understand correctly, the only fallback is the tangling
> solution:
>

agreed.

>
> * Letter
>   :PROPERTIES:
>   :ID:       02360e5c-8f76-4e6d-a98f-b8c5fa2a3da4
>   :END:
>
> #+source: body
> #+begin_src org :results latex
> My body includes a list:
>
> - one
> - two
>
> and a small table:
>
> | first | second |
> | other | last   |
>
> Not more.
> #+end_src
>
> #+begin_src latex :noweb yes :tangle yes
> \documentclass[11pt]{isodoc}
> \usepackage[utf8x]{inputenc}
> \usepackage[T1]{fontenc}
>
> \setupdocument{
>     to = {Eric},
>     subject = {Tough to understand what to do...},
>     opening = {Hi},
>     closing = {Best}
> }
>
> \begin{document}
> \letter{%
> <<body()>>
> }
> \end{document}
> #+end_src
>
> #+results:
> #+BEGIN_LaTeX
> \documentclass[11pt]{isodoc}
> \usepackage[utf8x]{inputenc}
> \usepackage[T1]{fontenc}
>
> \setupdocument{
>     to = {Eric},
>     subject = {Tough to understand what to do...},
>     opening = {Hi},
>     closing = {Best}
> }
>
> \begin{document}
> \letter{%
> My body includes a list:
>
> \begin{itemize}
> \item one
> \item two
> \end{itemize}
>
> and a small table:
>
>
> \begin{center}
> \begin{tabular}{ll}
>  first  &  second  \\
>  other  &  last    \\
> \end{tabular}
> \end{center}
>
>
>
> Not more.
>
> }
> \end{document}
> #+END_LaTeX
>
> Here, the above results is perfectly translated into LaTeX. But trying to
> export this buffer raises the =Args out of range: 0, 0= error.
>

This is the same error we discovered earlier, namely trying to export
the body of an Org-mode block to latex in the middle of a latex export.
I've pushed up a more useful error message.

>
> The solution is to tangle it, and launch pdflatex on the tangled file.
>

agreed.  BTW: I've just pushed up a code block to the library of babel
which makes it possible to include headlines into noweb exports.  I
imagine this would be very useful when composing letters in this manner.
See the email where I initially mention this
http://thread.gmane.org/gmane.emacs.orgmode/29926/focus=30667

>
> Questions:
>
> - Is the above overview right, or am I *still* missing things?
>



>
> - Couldn't =C-c C-v C-e= tangle to files, when the =tangle= parameter is
>   present?  FYI, I've lost some amount of time (won't tell you how much, I'm
>   ashamed) thinking that the tangling process did not work anymore on my
>   machine, because I was expecting it on =C-c C-v C-e=. At my discharge, I
>   only used tangling once, a couple of months ago, but...
>
>   ... and I think I already had once that request in mind, maybe even asked on
>   the list.
>

=C-c C-v C-e= is already used for executing code blocks, unfortunately
key-bindings are at a premium, so I don't think it is worth re-binding
this -- although I do see how you could be confused

>
> Idealistic goal that I have in mind (so that I share upfront which directions
> I would enjoy to be able to follow):
>
> - be able to produce =isodoc= letter in PDF just by =C-c C-v C-e=
>

by =C-c C-v C-e= do you mean tangle or execute?

>
> - next step: be able to produce /mail merge/ ("publiposting"), having in Org
>   the list of recipients and the letter's contents -- both in one unique Org
>   file --, and producing all the letters at once (in one PDF), just by =C-c
>   C-v C-e=...
>

this shouldn't be impossible with the current setup, maybe use sbe to
call a code block on every row of a table with the table holding the
recipients.  Certainly wouldn't be trivial though.

Best -- Eric

>
> Thanks for your help (past, present... and future)!
>
> Best regards,
>   Seb



reply via email to

[Prev in Thread] Current Thread [Next in Thread]