Beamer 將 LaTeX 強大的排版功能和生態系統帶進建立幻燈片中。
Beamer 是用於生成幻燈片的 LaTeX 包。它最棒的功能之一是它可以利用 LaTeX 強大的排版系統和其生態系統中的所有其他軟體包。例如,我經常在包含程式碼的 Beamer 簡報中使用 LaTeX 的 listings 包。
要建立一個 Beamer 文件,輸入:
\documentclass{beamer}
與任何其他 LaTeX 文件一樣,新增你要使用的任何包。例如,要使用 listings
包,請輸入:
\usepackage{listings}
將所有內容放在 document
環境中:
\begin{document}
Beamer 文件通常時是一系列的 frame
環境。包含程式碼的 frame
應該被標記為 fragile
:
\begin{frame}[fragile]
使用標題開始你的 frame
:
\frametitle{Function to Do Stuff}
世上最糟糕的感受之一你在演講中說到程式碼時,突然發現了一個 bug —— 也許是拼錯了關鍵詞或者漏掉了括號。
解決方法之一就是測試演示的程式碼。在多數演示環境中,這意味著建立一個單獨的檔案、編寫測試接著拷貝和貼上。
然而,在 Beamer 中有一種更好的方法。想象一下,你有一個名為 do_stuff.py
的檔案,其中包含程式碼。你可以在第二個檔案中編寫 do_stuff.py
程式碼的測試,你可以將其命名為 test_do_stuff.py
,並且可以使用 pytest 測試。但是,do_stuff.py
中的大多數行都缺乏教學價值,比如定義輔助函數。
要簡化你受眾看到的東西,你可在簡報中只匯入你要討論的行到 frame 中:
\lstinputlisting[ language=Python, firstline=8, lastline=15]{do_stuff.py}
由於你會對這幾行(從 8 到 15)進行討論,因此幻燈片上不需要任何其他內容。結束 frame
:
\end{frame}
在下一張幻燈片中,你想展示剛才的 do_stuff()
函數的用法範例:
\begin{frame}[fragile]\frametitle{Calling Function to Do Stuff}\lstinputlisting[ language=Python, firstline=17, lastline=19]{do_stuff.py}\end{frame}
你使用相同的檔案,但這次顯示呼叫該函數的行。最後,結束 document
:
\end{document}
假設你在 do_stuff.py
中有一個合適的 Python 檔案,這將生成一個含有 2 頁的幻燈片。
Beamer 還支援必要的功能如漸進式演示,每次給觀眾展示一部分以免受到前面的打擾。在行中放入 \pause
會將頁面分成不同的部分:
\begin{frame}Remember:\begin{itemize}\item This will show up on the first slide. \pause\item This will show up on the second slide, as well as the preceding point. \pause\item Finally, on the third slide, all three bullets will show up.\end{frame}
Beamer 中我最喜歡的功能是可以用 \documentclass[ignorenonframetext]{beamer}
設定忽略 frame
外的所有內容。當我準備簡報時,我離開頂部(宣告文件類的位置)並自動生成它的兩個版本:我的簡報使用 Beamer 忽略任何 frame
之外的所有文字,另一個含有類似這樣的頭:
\documentclass{article}\usepackage{beamerarticle}
這會生成一份講義:一份含有所有 frame
和它們之間文字的 PDF。
當會議組織者要求我發布我的幻燈片時,我會包含原始幻燈片作為參考,但我希望人們拿到的是講義,它包含了所有我不想在幻燈片上寫的解釋部分。
在建立幻燈片時,人們經常會考慮是為演講優化講稿還是為之後想要閱讀它的人們優化。幸運的是,Beamer 提供了兩全其美的辦法。