From: Pedro Andres Aranda Gutierrez <paaguti@gmail.com>
To: Org Mode List <emacs-orgmode@gnu.org>
Cc: Leo.Butler@umanitoba.ca, Ihor Radchenko <yantar92@posteo.net>
Subject: Re: Re: [BUG] beamer export
Date: Sun, 28 Jan 2024 07:33:00 +0100 [thread overview]
Message-ID: <F4CD8872-5074-43D1-8EDA-2E83424C48B1@gmail.com> (raw)
In-Reply-To: <mailman.49.1706374853.3945.emacs-orgmode@gnu.org>
[-- Attachment #1: Type: text/plain, Size: 5598 bytes --]
Hi
CAVEAT EMPTOR: Although it’s some years that I have been using org to create my slides, I never needed this… Interesting to learn new things ;-)
I personally would not oppose to have a customizable org-frame-environment variable, with its default value being “frame”.
Then, when actually emitting the code, add something like:
(unless (string= org-frame-environment “frame”
…)
Which would create the code most of us would expect (i.e. \begin{frame}…\end{frame}) in almost any case except when you really need the `newenvironment’ construct.
My .02 cents, /PA
> El 27 ene 2024, a las 18:00, emacs-orgmode-request@gnu.org escribió:
>
> Message: 2
> Date: Fri, 26 Jan 2024 20:54:17 +0000
> From: Leo Butler <Leo.Butler@umanitoba.ca <mailto:Leo.Butler@umanitoba.ca>>
> To: Ihor Radchenko <yantar92@posteo.net <mailto:yantar92@posteo.net>>
> Cc: Ihor Radchenko <yantar92@gmail.com <mailto:yantar92@gmail.com>>, Daniel Fleischer
> <danflscr@gmail.com <mailto:danflscr@gmail.com>>, Org Mode Mailing List <emacs-orgmode@gnu.org <mailto:emacs-orgmode@gnu.org>>
> Subject: Re: [BUG] beamer export
> Message-ID: <87wmrvlsso.fsf@t14.reltub.ca <mailto:87wmrvlsso.fsf@t14.reltub.ca>>
> Content-Type: text/plain; charset="iso-8859-1"
>
> On Fri, Jan 26 2024, Ihor Radchenko <yantar92@posteo.net <mailto:yantar92@posteo.net>> wrote:
>
>> Leo Butler <Leo.Butler@umanitoba.ca <mailto:Leo.Butler@umanitoba.ca>> writes:
>>
>>>> Apparently, LaTeX has really hard time processing verbatim code inside
>>>> beamer frames.
>>>
>>> I looked again at the solution here:
>>> https://tex.stackexchange.com/questions/140719/verbatim-in-beamer-showing-error-file-ended-while-scanning-use-of-xverbatim <https://tex.stackexchange.com/questions/140719/verbatim-in-beamer-showing-error-file-ended-while-scanning-use-of-xverbatim>
>>>
>>> and it errors out with a recent version of pdflatex:
>>>
>>> This is pdfTeX, Version 3.141592653-2.6-1.40.25 (TeX Live 2023/Debian) (preloaded format=pdflatex)
>>>
>>> This is, apparently, a known problem:
>>>
>>> https://github.com/josephwright/beamer/issues/360 <https://github.com/josephwright/beamer/issues/360>
>>>
>>> The end of that issue report includes a work-around that we might apply
>>> in org. I have attached a patch for your feedback. The example that
>>> stimulated this discussion compiles with the patch and the testsuite
>>> shows no errors related to it.
>>
>> Thanks!
>> I have concerns about your approach though.
>>
>> You are replacing all the frame environments with custom environment
>> unconditionally. However, custom environment has downsides. For example,
>> \againframe will stop working, as pointed earlier in the linked beamer
>> thread
>> https://github.com/josephwright/beamer/issues/360#issuecomment-708705250 <https://github.com/josephwright/beamer/issues/360#issuecomment-708705250>
>
> The comment that you are citing shows how to define the custom
> environment so that \againframe works correctly. See the attachment
> `beamer-example-againframe.tex' and pdf. You can see that \againframe
> works with the custom environment.
>
>>
>> Since the problem appears only when the frame contents contains
>> \end{frame}, it may be sufficient to replace the standard frame
>> environment with the workaround only in such scenario.
>
> Yes, that might be true. But my feeling is that it would be simpler and
> more robust to use the custom frame environment in most cases.
>
>>
>>> +;; Needed to set-up Beamer export.
>>> +(defconst org-beamer--frame-environment
>>> + (concat "orgframe" (org-id-uuid))
>>> + "Name of the beamer frame environment.
>>> +This is randomized to prevent collisions.")
>>
>> Please use constant name. (org-id-uuid) makes export randomized for no
>> good reason.
>
> There is a good reason to randomize (or at least make customize-able)
> the environment name: so that beamer code generated by ox-beamer can be
> safely inserted into org files and exported by ox-beamer. With a fixed
> name for the environment, we will have just recreated the original
> source of the bug report. As a compromise, in the attached patch, I have
> made the environment name customize-able.
>
>>
>>> ;; Install a default set-up for Beamer export.
>>> (unless (assoc "beamer" org-latex-classes)
>>> (add-to-list 'org-latex-classes
>>> - '("beamer"
>>> - "\\documentclass[presentation]{beamer}"
>>> + `("beamer"
>>> + ,(concat "\\documentclass[presentation]{beamer}\n"
>>> + ;; Define an alias for the beamer frame environment
>>> + "\\newenvironment<>{"
>>> + org-beamer--frame-environment
>>> + "}[1][]{\\begin{frame}[environment="
>>> + org-beamer--frame-environment
>>> + ",#1]}{\\end{frame}}")
>>
>> Please use `org-beamer-template' rather than modifying the class.
>> Modifying the class may confuse users.
>
> Ok, I have done so.
>
> The docstring of `org-latex-classes' says:
>
> The HEADER-STRING is the header that will be inserted into the
> LaTeX file. It should contain the \documentclass macro, and
> anything else that is needed for this setup.
>
>> From that, I figured that would be the correct place to put that
> \newenvironment command. I have moved it, as requested.
>
> Please see the revised patch. I believe that I have taken into account
> your suggestions.
>
> Leo
[-- Attachment #2: Type: text/html, Size: 42296 bytes --]
parent reply other threads:[~2024-01-28 6:34 UTC|newest]
Thread overview: expand[flat|nested] mbox.gz Atom feed
[parent not found: <mailman.49.1706374853.3945.emacs-orgmode@gnu.org>]
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=F4CD8872-5074-43D1-8EDA-2E83424C48B1@gmail.com \
--to=paaguti@gmail.com \
--cc=Leo.Butler@umanitoba.ca \
--cc=emacs-orgmode@gnu.org \
--cc=yantar92@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).