;;; test-ox-latex.el --- tests for ox-latex.el -*- lexical-binding: t; -*- ;; Copyright (C) 2022 Ihor Radchenko ;; Author: Ihor Radchenko ;; This program is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation, either version 3 of the License, or ;; (at your option) any later version. ;; This program is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; You should have received a copy of the GNU General Public License ;; along with this program. If not, see . ;;; Commentary: ;; Tests checking validity of Org LaTeX export output. ;;; Code: (require 'ox-latex nil t) (unless (featurep 'ox-latex) (signal 'missing-test-dependency '("org-export-latex"))) (ert-deftest test-ox-latex/unnumbered-toc () "Test unnumbered toc elements" (org-test-with-exported-text 'latex "#+OPTIONS: num:nil * Test :PROPERTIES: :ALT_TITLE: alt :END: This is a test. " (goto-char (point-min)) (should (search-forward "\\begin{document}")) (should (search-forward "\\tableofcontents")) (should (search-forward "\\section*{Test}")) (should (search-forward "\\addcontentsline{toc}{section}{alt}")) (should (search-forward "\\label{")) (should (search-forward "This is a test.")))) (ert-deftest test-ox-latex/unnumbered-toc-mixed () "Test unnumbered toc elements" (org-test-with-exported-text 'latex "* Introduction: a test :PROPERTIES: :ALT_TITLE: Introduction :END: A shorter test for alt title ** State of the Art :PROPERTIES: :UNNUMBERED: t :ALT_TITLE: SOTA :END: And now an unnumbered section in the ToC " (goto-char (point-min)) (should (search-forward "\\begin{document} \\tableofcontents \\section[Introduction]{Introduction: a test} \\label{sec:org")) (should (search-forward "} A shorter test for alt title \\subsection*{State of the Art} \\addcontentsline{toc}{subsection}{SOTA} \\label{sec:")) (should (search-forward "} And now an unnumbered section in the ToC")))) (ert-deftest text-ox-latex/protect-square-brackets () "Test [foo] being interpreted as plain text even after LaTeX commands." (org-test-with-exported-text 'latex "* This is test lorem @@latex:\\pagebreak@@ [ipsum] #+begin_figure [lorem] figure #+end_figure | [foo] | 2 | | [bar] | 3 | - [bax] - [aur] " (goto-char (point-min)) (should (search-forward "lorem \\pagebreak {[}ipsum]")) (should (search-forward "{[}lorem] figure")) (should (search-forward "{[}foo]")) (should (search-forward "\\item {[}bax]")))) (ert-deftest test-ox-latex/verse () "Test verse blocks." (org-test-with-exported-text 'latex "#+begin_verse lorem ipsum dolor lorem ipsum dolor lorem ipsum dolor lorem ipsum dolor lorem ipsum dolor lorem ipsum dolor #+end_verse " (goto-char (point-min)) (should (search-forward "\\begin{verse} lorem ipsum dolor\\\\ lorem ipsum dolor lorem ipsum dolor\\\\ lorem ipsum dolor lorem ipsum dolor\\\\ lorem ipsum dolor\\\\ \\end{verse}")))) (ert-deftest test-ox-latex/longtable () "Test table export with longtable environment." (org-test-with-exported-text 'latex "#+attr_latex: :environment longtable | First | Second | | Column | Column | |--------------+--------| | a | 1 | | b | 2 | | \\pagebreak c | 3 | | d | 4 | " (goto-char (point-min)) (should (search-forward "\\begin{longtable}{lr} First & Second\\\\ Column & Column\\\\ \\hline \\endfirsthead")) (goto-char (point-min)) (should (search-forward "First & Second\\\\ Column & Column \\\\ \\hline \\endhead")) (goto-char (point-min)) (should (search-forward "\\hline\\multicolumn{2}{r}{Continued on next page} \\\\ \\endfoot")))) (ert-deftest test-ox-latex/inline-image () "Test inline images." (org-test-with-exported-text 'latex "#+caption: Schematic [[https://orgmode.org/worg/images/orgmode/org-mode-unicorn.svg][file:/wallpaper.png]]" (goto-char (point-min)) (should (search-forward "\\href{https://orgmode.org/worg/images/orgmode/org-mode-unicorn.svg}{\\includegraphics[width=.9\\linewidth]{/wallpaper.png}}")))) (provide 'test-ox-latex) ;;; test-ox-latex.el ends here