LaTeX 包 stmaryrd 无法与 org-mode beamer 模板一起使用

LaTeX 包 stmaryrd 无法与 org-mode beamer 模板一起使用

这一页提供了一些模板,让您在 Org-Mode 中制作 Beamer 演示文稿。但如果我使用stmaryrd包中的某些符号,则在使用 Org-Mode 导出为 PDF 时,它们不会被渲染。

以下是撰写本文时该页面的 2.1(Beamer 特定设置)和 2.2(框架(幻灯片)的大纲级别)的模板,导入stmaryrd包(#+LATEX_HEADER: \usepackage{stmaryrd})、一些示例文本和使用一些符号的公式stmaryrdllbracket\rrbracket)。

#+TITLE:     Writing Beamer presentations in org-mode
#+AUTHOR:    Eric S Fraga
#+EMAIL:     [email protected]
#+DATE:      2010-03-30 Tue
#+DESCRIPTION: 
#+KEYWORDS: 
#+LANGUAGE:  en

#+LATEX_HEADER: \usepackage{stmaryrd}

#+OPTIONS:   H:3 num:t toc:t \n:nil @:t ::t |:t ^:t -:t f:t *:t <:t
#+OPTIONS:   TeX:t LaTeX:t skip:nil d:nil todo:t pri:nil tags:not-in-toc
#+INFOJS_OPT: view:nil toc:nil ltoc:t mouse:underline buttons:0 path:http://orgmode.org/org-info.js
#+EXPORT_SELECT_TAGS: export
#+EXPORT_EXCLUDE_TAGS: noexport
#+LINK_UP:   
#+LINK_HOME:

#+startup: beamer
#+LaTeX_CLASS: beamer
#+LaTeX_CLASS_OPTIONS: [bigger]

* Introduction

Some text here

A formula:

\[ \llbracket 234 \rrbracket \]

将其导出到 pdf 文件不起作用,因为符号\llbracket\rrbracket不会被渲染。导出到 tex 文件,然后使用pdflatex将 tex 文件编译为 pdf 也是如此;这是我收到的错误消息之一:

! Undefined control sequence.
.73 \[ \llbracket
               234 \rrbracket \]

但是如果 org-file 中的这一行被注释掉:

#+LaTeX_CLASS: beamer

符号被渲染了。但是 pdf 文件看起来不再像 beamer 演示文稿了(这并不奇怪)。同样,如果我导出到 tex,然后在 tex 文件中注释掉此行:

\mode<{{{beamermode}}}>

符号渲染正确。我在编译 tex 文件时遇到很多错误,生成的 pdf 也不太好,但至少符号渲染正确。

链接到从 Org-Mode 导出的 tex 输出

stmaryrd 包可以在非 beamer org 文件里工作吗?是的;以下文档可以正确编译为pdf:

#+LATEX_HEADER: \usepackage{stmaryrd}

This is rendered: \llbracket

.emacs 设置:这是我在文件中使用的 beamer 设置.emacs。它取自这篇博文。代码将 beamer 类添加到org-latex-classes变量中。

(add-to-list 'org-latex-classes
;; beamer class, for presentations
'("beamer"
   "\\documentclass[11pt]{beamer}\n
    \\mode<{{{beamermode}}}>\n
    \\usetheme{{{{beamertheme}}}}\n
    \\usecolortheme{{{{beamercolortheme}}}}\n
    \\beamertemplateballitem\n
    \\setbeameroption{show notes}
    \\usepackage[utf8]{inputenc}\n
    \\usepackage[T1]{fontenc}\n
    \\usepackage{hyperref}\n
    \\usepackage{color}
    \\usepackage{listings}
    \\lstset{numbers=none,language=[ISO]C++,tabsize=4,
frame=single,
basicstyle=\\small,
showspaces=false,showstringspaces=false,
showtabs=false,
keywordstyle=\\color{blue}\\bfseries,
commentstyle=\\color{red},
}\n
    \\usepackage{verbatim}\n
    \\institute{{{{beamerinstitute}}}}\n          
      \\subject{{{{beamersubject}}}}\n"

   ("\\section{%s}" . "\\section*{%s}")

   ("\\begin{frame}[fragile]\\frametitle{%s}"
     "\\end{frame}"
     "\\begin{frame}[fragile]\\frametitle{%s}"
     "\\end{frame}")))

答案1

对于我的.emacsbeamer 设置代码,我将问题中描述的代码替换为以下代码,如下所示在此网页上在撰写本文时。

(require 'ox-latex)
(add-to-list 'org-latex-classes
             '("beamer"
               "\\documentclass\[presentation\]\{beamer\}"
               ("\\section\{%s\}" . "\\section*\{%s\}")
               ("\\subsection\{%s\}" . "\\subsection*\{%s\}")
               ("\\subsubsection\{%s\}" . "\\subsubsection*\{%s\}")))

上述网站似乎比我最初使用的博客文章更新得更快。从我发现的情况来看,它似乎现在就为 Org-mode 设置 Beamer 的方法。

至于投影仪演示的模板,我使用交互功能org-beamer-insert-options-template,选择“全局”选项来生成模板。

现在,stmaryrd在 beamer 演示文稿中使用该包可以正常工作:

...
#+LATEX_HEADER: \usepackage{stmaryrd}

This is rendered: \llbracket
...

相关内容