On Wed, Jan 24 2024, Ihor Radchenko <yanta...@posteo.net> wrote: > Leo Butler <leo.but...@umanitoba.ca> writes: > >>>> 1. ox-latex export bug for src blocks containing direct LaTeX when >>>> org-latex-src-block-backend is set to its default 'verbatim value >>> >>> This appears to be Beamer-specific problem with verbatim environments: >>> https://tex.stackexchange.com/questions/140719/verbatim-in-beamer-showing-error-file-ended-while-scanning-use-of-xverbatim >>> >>> The solution might be to use [fragile] frame parameter, but that might >>> have its own drawbacks: >>> https://tex.stackexchange.com/questions/136240/drawbacks-of-using-fragile-frames-in-beamer >> >> Yes, an *automatic* solution may create more problems than it solves. >> Although, I do note that ox-beamer does mark some frames as fragile already. >> I wonder how difficult it would be to add a property drawer to frames, >> so (amongst other things), they could be marked fragile? > > Hmm. Actually, that frame is already marked fragile. > Yet, it is not enough...
> 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 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 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. > >>>> 2. ox-beamer export bug as described in the attached org file >>> >>> This is not a bug. When you specify ignoreheading environment, you imply >>> that the contents of the heading is to be included as is. >>> If you want the contents to become a column, you should specify column >>> environment. >> >> I see. That is not now the ignoreheading property is described. It says >> [1]: >> >> ... As the text in the slide says, the left column is a list and the >> right one is an image. The left column's headline text is ignored, >> specified by =C-c C-b i= which tells org to *ignore* the headline >> text completely. >> >> I think the documentation and example needs to be corrected. I have >> attached a patch. > > Thanks! Applied. > https://git.sr.ht/~bzg/worg/commit/aedea59f Thanks. I can see the commit on master in git, but the webpage seems to be unchanged. https://orgmode.org/worg/exporters/beamer/tutorial.html Leo
From 9cb3489e3fe80fb2e3996b737f528aa4db9ba62d Mon Sep 17 00:00:00 2001 From: Leo Butler <leo.but...@umanitoba.ca> Date: Thu, 25 Jan 2024 09:48:20 -0600 Subject: [PATCH] lisp/ox-beamer.el: randomize the beamer frame environment * lisp/ox-beamer.el (org-beamer--frame-environment): new variable that contains the name of an environment that serves as an alias for the beamer frame environment. The environment's definition is appended to the set-up for beamer export. (org-beamer--format-frame): Replace the occurrence of \begin{frame} and \end{frame} with the new environment's name. Rationale: Code with \begin{frame} or \end{frame} cannot be embedded in a verbatim environment inside a beamer frame due to a design decision made by the beamer developers [1]. As suggested in that report, defining an alias for the beamer frame environment will allow such verbatim examples to compile correctly [2]. Refs: [1] https://github.com/josephwright/beamer/issues/360 [2] https://github.com/josephwright/beamer/issues/360#issuecomment-708705250 [3] https://list.orgmode.org/orgmode/87le8eg1hs.fsf@localhost/T/ --- lisp/ox-beamer.el | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/lisp/ox-beamer.el b/lisp/ox-beamer.el index 82c8841aa..be3003835 100644 --- a/lisp/ox-beamer.el +++ b/lisp/ox-beamer.el @@ -36,11 +36,23 @@ (require 'cl-lib) (require 'ox-latex) +;; 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.") + ;; 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}}") ("\\section{%s}" . "\\section*{%s}") ("\\subsection{%s}" . "\\subsection*{%s}") ("\\subsubsection{%s}" . "\\subsubsection*{%s}")))) @@ -414,7 +426,7 @@ used as a communication channel." ;; among `org-beamer-verbatim-elements'. (org-element-map headline org-beamer-verbatim-elements 'identity info 'first-match))) - (concat "\\begin{frame}" + (concat "\\begin{" org-beamer--frame-environment "}" ;; Overlay specification, if any. When surrounded by ;; square brackets, consider it as a default ;; specification. @@ -481,7 +493,7 @@ used as a communication channel." ;; output. (if (not fragilep) contents (replace-regexp-in-string "\\`\n*" "\\& " (or contents ""))) - "\\end{frame}"))) + "\\end{" org-beamer--frame-environment "}"))) (defun org-beamer--format-block (headline contents info) "Format HEADLINE as a block. -- 2.43.0