Yes! Find it attached...

Best, /PA

On Wed, 1 Jul 2026 at 20:22, Ihor Radchenko <[email protected]> wrote:

> Pedro Andres Aranda Gutierrez <[email protected]> writes:
>
> > Hi,
> >
> > Last second change to support framesubtitle in ltx-talk.
> > Best, /PA
> >
> > PS: The idea of keeping the short-hand
> > \begin{frame}[]{title}{subtitle}
> > is generating a convolute code that is not easy to read (and maintain).
> >
> > ox-latex & ox-beamer maintainer
>
> Did you intent to attach a patch here?
>
> --
> Ihor Radchenko // yantar92,
> Org mode maintainer,
> Learn more about Org mode at <https://orgmode.org/>.
> Support Org development at <https://liberapay.com/org-mode>,
> or support my work at <https://liberapay.com/yantar92>
>


-- 
Fragen sind nicht da, um beantwortet zu werden,
Fragen sind da um gestellt zu werden
Georg Kreisler

"Sagen's Paradeiser" (ORF: Als Radiohören gefährlich war) => write BE!
Year 2 of the New Koprocracy

This was produced by a human (implied virtues and weaknesses acknowledged)
I'd hate this being fed to any form of AS (sorry AI)...
From ff771e91b165ec0f4ce48efef13f6231767db78b Mon Sep 17 00:00:00 2001
From: "Pedro A. Aranda" <[email protected]>
Date: Mon, 29 Jun 2026 07:17:27 +0200
Subject: [PATCH 3/3] ox-beamer: ltx-talk needs framesubtitle spelt out

* lisp/ox-beamer.el (org-beamer--format-frame): Adjust newlines and
spell out framesubtitle for ltx-talk.
* testing/lisp/test-ox-beamer.el
(test-ox-beamer/ltx-talk-frame-subtitle): Renamed test
(test-ox-beamer/ltx-talk-multi-verb-frame) and add handout as class
options and a subtitle to the second frame.
---
 lisp/ox-beamer.el              | 13 +++++++++----
 testing/lisp/test-ox-beamer.el | 15 ++++++++++-----
 2 files changed, 19 insertions(+), 9 deletions(-)

diff --git a/lisp/ox-beamer.el b/lisp/ox-beamer.el
index 57a40aa70..efeb47bcc 100644
--- a/lisp/ox-beamer.el
+++ b/lisp/ox-beamer.el
@@ -520,22 +520,27 @@ (defun org-beamer--format-frame (headline contents info)
 	      (org-beamer--normalize-argument
 	       (mapconcat #'identity (append label fragile options) ",")
 	       'option))
+            ;; FIXME: Always adding \\frametitle{} and \\framesubtitle
+            ;;        would help readibility and future maintainance.
 	    ;; Title.
 	    (let ((env (org-element-property :BEAMER_ENV headline))
                   (frame-title (org-export-data
 			     (org-element-property :title headline) info)))
-              ;; Separate frametitle doesn't hurt beamer
+              ;; Separate frametitle wouldn't hurt beamer
               ;; but ltx-talk will not work w/o it.
               (or (and (equal latex-class "beamer")
-	               (format "{%s}\n"
+	               (format "{%s}"
 		               (if (and env (equal (downcase env) "fullframe"))
                                    ""
 			         frame-title)))
-                  (format "\n\\frametitle{%s}\n" frame-title)))
+                  (format "\n\\frametitle{%s}" frame-title)))
             ;; Subtitle
+            ;; ltx-talk needs framesubtitle spelt out.
+            ;; It wouldn't hurt beamer
             (when-let* ((subtitle
                          (org-element-property :BEAMER_SUBTITLE headline)))
-              (format "{%s}"
+              (format (concat (and (equal latex-class "ltx-talk") "\n\\framesubtitle")
+                              "{%s}")
                       (org-export-data
                        (org-element-parse-secondary-string
                         subtitle
diff --git a/testing/lisp/test-ox-beamer.el b/testing/lisp/test-ox-beamer.el
index 72baa29ea..c41c4cf8d 100644
--- a/testing/lisp/test-ox-beamer.el
+++ b/testing/lisp/test-ox-beamer.el
@@ -191,19 +191,19 @@ (ert-deftest test-ox-beamer/ltx-talk-multi-line-metadata ()
        (should (search-forward "\\section{A section}" nil t))
        (should (search-forward "\\frametitle{A frame}" nil t))))))
 
-(ert-deftest test-ox-beamer/ltx-talk-multi-verb-frame ()
+(ert-deftest test-ox-beamer/ltx-talk-frame-subtitle ()
   "Test that a frame with verbatim elements uses \"frame*\"."
   (let ((org-latex-compiler "lualatex")
         (org-latex-hyperref-template nil)
         (org-latex-packages-alist nil)
-        (org-latex-default-packages-alist nil)
-        (org-latex-title-command "\\begin{frame}\n\\maketitle\n\\end{frame}\n"))
+        (org-latex-default-packages-alist nil))
     (org-test-with-exported-text
      'beamer
      "#+STARTUP: beamer
 #+OPTIONS: toc:nil H:2 title:t
 #+LATEX_CLASS: ltx-talk
 #+LATEX_CLASS_PRE: \\DocumentMetadata{tagging=on}
+#+LATEX_CLASS_OPTIONS: handout
 #+TITLE: Testing =ltx-talk= verbatims
 #+BEAMER_THEME:
 
@@ -212,7 +212,10 @@ (ert-deftest test-ox-beamer/ltx-talk-multi-verb-frame ()
 - First
 - Second
 - Third
-** A frame with a listing
+** A second frame with a subtitle
+   :properties:
+   :beamer_subtitle: Testing listings
+   :end:
 - This is a listing:
   #+BEGIN_SRC python
 import sys
@@ -226,12 +229,14 @@ (ert-deftest test-ox-beamer/ltx-talk-multi-verb-frame ()
      (save-excursion (should-not (search-forward "[label=]" nil t)))
      (save-excursion
        (should (search-forward "\\DocumentMetadata{tagging=on}" nil t))
+       (should (search-forward "\\documentclass[handout]{ltx-talk}" nil t))
        (should (search-forward "\\section{A section}\n" nil t))
        (should (search-forward "\\begin{frame}" nil t))
        (should (search-forward "\\frametitle{A frame}\n" nil t))
        (should (search-forward "\\end{frame}" nil t))
        (should (search-forward "\\begin{frame*}" nil t))
-       (should (search-forward "\\frametitle{A frame with a listing}\n" nil t))
+       (should (search-forward "\\frametitle{A second frame with a subtitle}\n" nil t))
+       (should (search-forward "\\framesubtitle{Testing listings}\n" nil t))
        (should (search-forward "\\end{frame*}" nil t))))))
 
 (ert-deftest test-ox-beamer/beamer-verb-frame ()
-- 
2.43.0

Reply via email to