LaTeX 教學系列:用 Beamer 製作簡報

latex

利用 TikZ 套件繪製圖形

Author

Anthony Sung

Published

August 4, 2024

簡報製作在各種領域都是一項很重要的技能,畢竟透過簡報,可以將複雜的資訊用簡單的方式呈現。1最常見的簡報製作軟體非 PowerPoint 莫屬,還有近幾年異軍突起的 Canva 也是一套很搶手的製作簡報軟體。

這篇文章將會教你如何使用 LaTeX 裡面的 Beamer 類別製作簡報,如果想要更多模板,可以參考 Overleaf 上面的簡報模板區,筆者最常用也是最喜歡的模板是Metropolis Beamer Theme,如果你有發現其他更好看的模板,歡迎分享給我!

Beamer 簡介

Beamer 是一個用於建立簡報的 LaTeX 的文件類別,其同時支援 LaTeX + dvips、pdfLaTeX、LuaLaTeX 以及 XeLaTeX。Beamer 的名稱來源自德文詞彙 “Beamer”,意思是影像演示(pseudo-anglicism)。2

作為一個用於製作簡報的工具,與常見的 PowerPoint 不同,Beamer 讓你可以用純文字來做簡報:只要寫一些簡單的指令,就會自動把你的內容變成漂亮的投影片。因此 Beamer 最大的優點是特別適合做學術技術簡報,除了因為它可以用簡單的指令來將文字呈現在投影片上,更能夠使用 LaTeX 最引以為傲的功能:插入數學公式、程式碼、圖表等專業內容。而且 Bemaer 它的格式非常一致,不會因為你換了電腦就跑掉,只要設定好文件外觀就沒事。

對初學者而言,用 Beamer 做簡報雖然一開始可能會覺得有點難,但熟悉後就會發現它其實很方便,因為你可以專注在內容上,不用花太多時間去調整外觀;此外,Beamer 做出來的簡報檔案很小,非常方便分享。

Beamer 文件基本結構

使用 Beamer 製作簡報時,我們需要指定文件的類別為 beamer,如以下程式碼所示:

\usepackage[選項]{beamer}

articlereport 等類別一樣,我們可以在前言區加上文件的資訊,如標題、作者姓名、日期等,程式碼與之前相同。接著就可以進入 document 環境編寫本文。

一頁的投影片使用 frame 這個環境包住的。最古早的簡報是由一幀一幀的幻燈片(lantern slide)製作而成,透過光學的技巧投影成像,而一幀在英文中就是 “frame”。

圖 1:幻燈片使用3

frame 環境是產生 beamer 頁面的關鍵。frame 環境的設定如下:

\begin{frame}[頁面設定]
\frametitle{頁面標題}
\framesubtitle{頁面副標題}
    頁面內容
\end{frame}

或者也可以是

\begin{frame}[頁面設定]{頁面標題}{頁面副標題}
    頁面內容
\end{frame}

標題頁

如同前面提及的,若想要顯示標題頁,可以在前言區先加入文件資訊。關於文件資訊的設定,我們一一講解。首先看一下完整的標題頁設定程式碼:

\title[About Beamer] % 選填
{About the Beamer class in presentation making}

\subtitle{A short story}

\author[Anthony, Ben] % 選填
{Anthony\inst{1} \and Ben\inst{2}}

\institute[NTU] % 選填
{
  \inst{1}%
  Department of Political Science\\
  National Taiwan University
  \and
  \inst{2}%
  Department of Economics\\
  National Taiwan University
}

\date[2024] % 選填
{Very Large Conference, April 2024}

我們可以看到,在設定標題、作者名字、所屬研究機構與日期時,都有一個選填的方括號,其中的內容是可選的簡短標題,會在導航欄或目錄中顯示。而花括號中的內容則是我們需要填入的資訊。另外,我們可以同時設定很多作者,並且使用 \inst{} 指令來標示機構編號。

如果想要在標題頁加上 logo,則使用 \logo{\includegraphics{logo 檔案}} 即可。同樣為了管理方便,建議在資料夾裡面新建一個子資料夾,用於儲存圖片。

目錄頁

通常來說,在一份演講簡報中都會含有目錄頁,目的是為了讓觀眾能夠先快速地掌握本次演講的重點,從而能夠在之後的演講中抓到其想要了解的重要資訊。加入目錄頁的方式跟標題頁十分相似,只要改為 \tableofcontents 即可。

\begin{frame}
    \tableofcontents
\end{frame}

當然,如果你直接將上面的程式碼放到你的 .tex 檔案裡面是不會跑出東西的,我們在使用目錄頁的時候必須確認已經加入 \section\subsection 等章節指令。

第一份 Beamer 簡報

綜合以上資訊,我們可以建立第一份 Beamer 簡報。

設定簡報外觀

雖然 Beamer 簡報看起來很簡潔,但有點太過簡潔,少了一點美感。因此我們需要對 Beamer 簡報的外觀進行調整。以下將詳細介紹如何設定和自定義 Beamer 簡報,包括主題選擇、顏色主題、字體主題以及內部和外部主題的設定。關於內部和外部主題,我們等稍後提到更多細節之後再來討論。

主題選擇

正如上面所提到的,Beamer 的預設主題太過慘白,因此我們需要為它增添一些新的色彩。對此,Beamer 提供多種主題樣式,每種主題都有獨特的風格和設計,因此使用者可以根據需求選擇合適的主題,使簡報看起來更加專業,並且擺脫單調。以下是一些常見的主題選擇和設定方法。

我們只需在文件的前言區使用 \usetheme{主題名稱} 命令即可。例如,使用 Warsaw 主題:

而我們也可以修改顏色的主題,改變整體的配色,不僅能夠提升簡報的視覺效果,還能夠使得不同類型的資訊更加醒目和易於區分。設定顏色主題的語法為 \usecolortheme{顏色主題}。例如使用 dolphin 顏色主題,加上剛剛的 Warsaw 主題,看起來就會像這樣:

字體主題

字體主題可以改變簡報中使用的字體樣式,讓簡報的整體美感和可讀性得到大大的提升。Beamer 提供了多種字體主題,我們可以根據需要進行設定。我們使用 \usefonttheme{字體主題} 來進行字體主題的設定,而字體主題的指令則列舉於下方表格:

選項名稱 指令
預設字體主題 \usefonttheme{default}
襯線字體 \usefonttheme{serif}
粗體結構字體 \usefonttheme{structurebold}
斜體襯線字體 \usefonttheme{structureitalicserif}
小型大寫襯線字體 \usefonttheme{structuresmallcapsserif}
粗體斜體襯線字體 \usefonttheme{structurebolditalicserif}
粗體小型大寫襯線字體 \usefonttheme{structureboldsmallcapsserif}
斜體粗體字體 \usefonttheme{structureitalicbold}
斜體小型大寫字體 \usefonttheme{structureitalicsmallcaps}
專業字體 \usefonttheme{professionalfonts}

例如我們使用 professionalfonts,並搭配上面的設定。

如果說你想要找更多主題,可以在 Another Beamer Theme Matrix 這個網站找到。該網站展示 Beamer 預設主題和顏色主題變化,行列分別列出了 Beamer 的預設主題和顏色主題搭配,使用者可以通過該網站快速預覽各種組合效果。

簡報內容的細節

接下來我們要談一下簡報設定的細節。之前提過的數學模式、字體設定等,在此就不細談,請讀者自行參考之前的文章。以下所談的內容,是用來處理簡報內容的呈現,例如列點、分欄、區塊等,使用這些設定不只可以讓簡報變得更易讀,還能夠提升專業性。

列點與條列

列點與條列在之前的文章LaTeX 教學系列:進階設定已經提過,但是注意到,在 Beamer 類別中,很不幸地我們不能使用 enumitem 來設定條列式環境的項目符號。那麼要怎麼做呢?我們使用 \setbeamertemplate 來處理。setbeamertemplate 指令可以用來設定 Beamer 中的各種項目,其中包含我們稍後會提到的區塊以及文字內容等。

指令 說明 指令 說明
title page 設定標題頁的樣式 footline 設定頁尾的樣式
frametitle 設定每張投影片標題的樣式 headline 設定頁首的樣式
background 設定背景的樣式 sidebar left 設定左側邊欄的樣式
sidebar right 設定右側邊欄的樣式 navigation symbols 設定導航符號的樣式
blocks 設定區塊的樣式 itemize items 設定 itemize 環境中項目的樣式
enumerate items 設定 enumerate 環境中項目的樣式 section in toc 設定目錄中的章節樣式
subsection in toc 設定目錄中的子章節樣式 bibliography item 設定參考文獻項目的樣式
caption 設定圖表標題的樣式 footnotes 設定註腳的樣式
note page 設定注釋頁的樣式 sidebar 設定側邊欄的樣式
part page 設定部分頁面的樣式 subsection in sidebar 設定側邊欄中的子章節樣式
mini frames 設定迷你框架的樣式 section in sidebar 設定側邊欄中的章節樣式
section in head/foot 設定頁首或頁尾中的章節樣式 subsection in head/foot 設定頁首或頁尾中的子章節樣式
title graphic 設定標題頁中的圖形 page number in head/foot 設定頁首或頁尾中的頁碼樣式
title logo 設定標題頁中的標誌 frametitle continuation 設定跨頁框架標題的樣式
frametitle continuation first 設定跨頁框架標題的首個頁面樣式 framesubtitle 設定每張投影片副標題的樣式
frametitle right 設定右對齊的投影片標題樣式 block title 設定區塊標題的樣式
block body 設定區塊內容的樣式 alerted text 設定警告文本的樣式
example text 設定示例文本的樣式 itemize subitem 設定 itemize 環境中子項目的樣式
enumerate subitem 設定 enumerate 環境中子項目的樣式 itemize subsubitem 設定 itemize 環境中子子項目的樣式
enumerate subsubitem 設定 enumerate 環境中子子項目的樣式 description item 設定 description 環境中項目的樣式
frametitle in head/foot 設定頁首或頁尾中的投影片標題樣式 logo in head/foot 設定頁首或頁尾中的標誌樣式
mini frame in head/foot 設定頁首或頁尾中的迷你框架樣式 note 設定注釋的樣式
note page 設定注釋頁的樣式 navigation symbols 設定導航符號的樣式
headline 設定頁首的樣式 footline 設定頁尾的樣式
sidebar left 設定左側邊欄的樣式 sidebar right 設定右側邊欄的樣式
background 設定背景的樣式 section in toc 設定目錄中的章節樣式
subsection in toc 設定目錄中的子章節樣式 bibliography item 設定參考文獻項目的樣式
caption 設定圖表標題的樣式 footnotes 設定註腳的樣式
part page 設定部分頁面的樣式 section in head/foot 設定頁首或頁尾中的章節樣式
subsection in head/foot 設定頁首或頁尾中的子章節樣式 title graphic 設定標題頁中的圖形
title logo 設定標題頁中的標誌 framesubtitle 設定每張投影片副標題的樣式
frametitle 設定每張投影片標題的樣式 block title 設定區塊標題的樣式
block body 設定區塊內容的樣式 alerted text 設定警告文本的樣式
example text 設定示例文本的樣式 itemize subitem 設定 itemize 環境中子項目的樣式
enumerate subitem 設定 enumerate 環境中子項目的樣式 itemize subsubitem 設定 itemize 環境中子子項目的樣式
enumerate subsubitem 設定 enumerate 環境中子子項目的樣式 description item 設定 description 環境中項目的樣式
frametitle in head/foot 設定頁首或頁尾中的投影片標題樣式 logo in head/foot 設定頁首或頁尾中的標誌樣式
mini frame in head/foot 設定頁首或頁尾中的迷你框架樣式 note 設定注釋的樣式
note page 設定注釋頁的樣式 navigation symbols 設定導航符號的樣式
headline 設定頁首的樣式 footline 設定頁尾的樣式

我們以 itemize 環境作為範例(預設為三角形),假設我們想要將第一層的項目符號設定為圓形,第二層設為三角形,第三層設為正方形,我們可以在前言區使用以下程式碼:

\setbeamertemplate{itemize item}[circle]
\setbeamertemplate{itemize subitem}[triangle]
\setbeamertemplate{itemize subsubitem}[square]

enumerate 環境的設定方法也是相同的。

分欄

作為簡報者,當然會想要簡報越能簡短的報告出越詳細的內容越好,因此常會在圖片、文字旁邊加上註解、說明文字,又或是進行比較。這樣做不僅能幫助觀眾快速抓住重點,還能有效地傳達複雜資訊。例如,在展示圖表時,可以在旁邊加上簡短的說明,解釋圖表中的關鍵數據和趨勢。這樣聽眾便能一目了然地理解圖表與數據背後的意義。此外,適時使用註解可以提供額外的資訊,如數據的來源、計算方法或是相關背景知識。

或當我們進行比較時,可以將不同數據或觀點擺放在一起,通過圖表或列表形式直觀地展示差異。這種方法不僅能使內容更有說服力,更能幫助觀眾快速理解不同選項的優劣,或是兩者之間的差異。

我們使用 columns 環境來處理。根據想要分成幾欄(建議不超過三欄),選擇使用幾個 column 環境,也就是說 columns 裡面包著 column 環境。

區塊環境

區塊可以將一般文字與想要強調的文字、公式等區分開,這個目的具有強調、警示的作用,能夠讓觀眾看到此張投影片的重點。使用區塊的另一個好處是可以提高簡報的視覺層次感,讓聽眾更容易分辨不同類型的資訊。例如,在介紹一個複雜的概念時,可以使用普通區塊來呈現主要內容,並使用警示區塊將重點或注意事項凸顯出來。

使用區塊的程式碼為:

\begin{區塊名稱}{區塊標題}
    區塊內容
\end{區塊名稱}

其中區塊標題可以選填,若留空則會將內容第一個字設定為標題。而 Beamer 也有提供底下的幾個區塊名稱:

區塊名稱 說明
block 普通環境
theorem 定理環境
lemma 引理環境
proof 證明環境
corollary 推論環境
example 示例環境
alertblock 警示環境

例如我們想要將 Euler 公式放到投影片中,並用警示環境,可以這麼做:

如果你覺得原本的區塊環境很醜,想要自己設定一個,就用 \newenvironment 建立一個自己的區塊環境。例如我們定義了一個名為 customblock 的自定義區塊環境。當使用 customblock 環境時,區塊的標題背景設定為紅色(bg=red),標題文字設定為白色(fg=white),區塊正文背景設定為淡紅色(bg=red!10),正文文字設定為黑色(fg=black)。標題字體大小設定為較大(size=\large),並使用粗體字(series=\bfseries)。

頁內逐步顯示

在簡報中使用逐步顯示的功能可以有效吸引觀眾的注意力,使他們能夠逐步理解複雜的概念和圖形。逐步顯示不僅能讓觀眾跟隨報告者的節奏,還能防止他們提前看到所有資訊而感到困惑,更方便簡報者依序將內容呈現出來。此種方式特別適合在介紹流程圖、數學推導或多步驟過程時使用,讓每一步的邏輯和重點更加清楚。

pause 指令

\pause 是 Beamer 中的一個指令,可以在投影片中建立暫停點。 例如在 TikZ 圖形中使用 \pause 時,它會將圖形分割成多個部分,每次顯示一部分。

但是在使用 \pause 指令時必須注意,它會將同一頁投影片的內容依照暫停點的位置,分成好幾頁。因此使用 \pause 指令的時機建議在真正要進行簡報時使用,如果是作閱讀用,不想要一個個將 \pause 指令刪除的話,可以在文件類別選項中加上 handout,也就是讓整份投影片變成講義的形式。

另一個與 \pause 指令相同的指令為 <>,該指令允許使用者指定每個元素在投影片上顯示的順序,其語法為 <起始編號-結束編號>。例如我們可以依照 1➡️3➡️2 的順序顯示 itemize 環境的項目。

插入動圖

在 PowerPoint 中,我們有時會插入動圖,讓使用者能夠在漫長的簡報過程中,利用動圖的生動與有趣緩和一下無聊的情緒。此外,當簡報者在呈現數據變化、操作步驟或流程時,使用 動圖可以比靜態圖片更具說服力和吸引力。

Beamer 中插入動圖的方式我們需要使用 animate 套件。首先,在文件的導言區中載入此套件:

\usepackage{animate}

轉換動圖

接著準備好動圖檔案(通常來講都是 .gif 檔)後,將動圖轉換為多張靜態圖片。本篇文章參考Insert a GIF into LaTeX Beamer — Short guide的建議,使用 ImageMagick 進行轉換。

下載 ImageMagick 完成後,無論是哪種系統,打開終端機後,切換到動圖存在的目錄後,使用以下指令進行轉換:

magick <動圖名稱>.gif <靜態圖名稱>.png

ImageMagick 會自動將靜態圖片以 靜態圖名稱-數字.png 格式命名,其中數字預設從 0 開始。轉換成功後,將轉換過後的 .png 圖片放到 .tex 主文件的子資料夾中。

插入動圖

最後,在想要插入動圖的地方,使用 \animategraphics 指令,其語法為

\animategraphics[選項]{每秒播放的幀數}{動圖文件名稱}{起始編號}{結束編號}

例如我們使用一隻可愛貓貓的動圖,將其命名為 cute_cat,然後讓動圖自動播放,並且無限循環。

內外部主題設定

Beamer 中的內外部主題設定,實際上是在控制投影片的整體外觀和風格。外部主題就是投影片的「皮」,而內部主題則是投影片的「肉」,通過調整這兩種主題,可以建立出獨特的、專屬於你自己的演講風格和內容的簡報設計。

外部主題

我們在前言區使用 \useoutertheme{主題名稱} 來調整外部主題。常見的外部主題包含:

  • 默認(default):最基本的主題,通常不需要顯式設定。

  • infolines:在頁首和頁尾顯示作者、標題和頁碼等資訊。

  • sidebar:在投影片一側加入導航欄。

  • split:將標題欄分成兩部分,用於顯示標題和子標題。

  • shadow:為投影片元素新增陰影效果。

  • tree:使用樹狀結構顯示章節資訊。

例如我們使用 infolines,排版結果如下所示:

內部主題

內部主題可以控制投影片內容的呈現方式,包括區塊、列表、強調文本等。設定內部主題的指令是 \useinnertheme{主題名稱},而常見的內部主題包含:

  • 默認(default):最基本的內部樣式。

  • circles:使用圓形項目符號。

  • rectangles:使用矩形項目符號。

  • rounded:設定為圓角。

  • inmargin:將某些元素放置在邊距中。

例如我們使用 circles 將項目符號設定為圓形。

自定義內外部主題

前面提到我們可以使用 \setbeamertemplate 指令來修改 Beamer 中的元素。以下表格列出了 Beamer 中主要的外部和內部主題元素,以及每個元素的簡要說明。

外部主題元素 說明 內部主題元素 說明
headline 投影片頂部的頁首區域 itemize items 無序列表的項目符號
footline 投影片底部的頁尾區域 enumerate items 有序列表的編號樣式
sidebar 投影片側邊的導航欄 blocks 用於強調內容的塊環境
navigation symbols 用於控制演示的導航圖標 alerted text 需要特別強調的文本
logo 在投影片上顯示的標誌 example text 用於示例的文本樣式
frametitle 每張投影片的標題區域 theorem 定理環境的樣式
background 投影片的背景 proof 證明環境的樣式
section in head/foot 在頁首或頁尾顯示的章節資訊 description items 描述列表的樣式
subsection in head/foot 在頁首或頁尾顯示的小節資訊 button 按鈕樣式的文本
page number 頁碼的顯示方式 quote 引用文本的樣式
frame number 幀編號的顯示方式 verse 詩歌格式的文本樣式
caption 圖表標題的樣式 bibliography item 參考文獻條目的樣式
date in head/foot 在頁手或頁尾顯示的日期 footnote 腳註的樣式
author in head/foot 在頁首頁或頁尾顯示的作者資訊 abstract 摘要環境的樣式
title in head/foot 在頁首或頁尾顯示的標題資訊 section in toc 目錄中章節的顯示樣式
institute in head/foot 在頁首或頁尾顯示的機構資訊 subsection in toc 目錄中小節的顯示樣式

例如以下程式碼,就將頁腳設定只顯示幀編號,並隱藏導航符號,且將列表項目符號設定為三角形,並為區塊環境新增圓角和陰影。

\setbeamertemplate{footline}[frame number]
\setbeamertemplate{navigation symbols}{}
\setbeamertemplate{itemize items}[triangle]
\setbeamertemplate{blocks}[rounded][shadow=true]

當然,你也可以自己建立一個 .sty 檔來自定義主題。例如

\ProvidesPackage{mytheme}
\useoutertheme{infolines}
\useinnertheme{rectangles}
\usecolortheme{crane}
% 更多自定義設定...

接著就可以在主文件使用 mytheme 套件:

\usetheme{mytheme}

插入程式碼

許多資工系或是會遇到需要報告程式碼的使用者,在一般的 PowerPoint 輸入程式碼後,程式碼的字體、排版不會太美觀,而 beamer 便提供了此功能(一般文件也可以使用)。這一小節我們不只會講如何在 Beamer 中插入程式碼,也可以應用於一般文件中。

使用 verbatim

LaTeX 提供了 verbatim 環境來插入程式碼,verbatim 環境會保持輸入文本的原始格式,包括空格和換行。我們需要在前言區載入verbatim` 套件:

\usepackage{verbatim}

如果想要在行內顯示程式碼,我們毋需套件,只要使用 \verb|程式碼| 即可。在 Beamer 中,我們也可以使用 verbatim 環境,但必須將 frame 設定選項為 fragile,才能夠正確顯示程式碼。

verbatim 套件的缺點相信眼睛敏銳的你,應該一眼就能看出,就是它太過單調了,每一段程式碼都一樣,沒有語法標示4。而且 verbatim 套件難以進行更複雜的格式設定,例如行號、背景色等。因此建議使用以下的其他套件。

使用 listings 套件

為了提供更豐富的程式碼顯示功能,可以使用 listings 套件。listings 提供了強大的功能來插入和格式化程式碼,還可以指定程式碼語言。

首先,在前言區載入 listings 套件,而為了搭配高亮功能,我們還需要額外載入顏色套件 xcolor

\usepackage{listings}
\usepackage{xcolor}

然後就可以在文件內使用 lstlisting 將程式碼包住。

自定義程式碼樣式

但你可能會發現,在 ,w 中間有一個奇怪的符號。這是因為 listings 套件不知道「空格」什麼,因此會將其視為其他符號。解決方法是在前言區使用 \lstset 指令來設定程式碼格式。此外,我們可以使用 courier 套件,讓文字使用 Courier 字體,讓程式碼的顯示變得更好看。

\lstset 指令可以設定的選項如下所示:

指令名稱 說明 指令名稱 說明
basicstyle 基本字體樣式 caption 程式碼塊的標題
columns 列的對齊方式 commentstyle 註釋的樣式
deletekeywords 刪除指定關鍵字 emph 強調的單詞
emphstyle 強調單字的樣式 escapeinside 逃逸字符
firstnumber 第一行的行號 frame 程式碼框架樣式
identifierstyle 標識符的樣式 keywordstyle 關鍵字的樣式
language 程式碼語言 morekeywords 添加更多的關鍵字
numbers 行號顯示 numbersep 行號和程式碼之間的距離
numberstyle 行號的樣式 showspaces 是否顯示空格
showstringspaces 是否顯示字串中的空格 stepnumber 行號的步長
stringstyle 字串的樣式 tabsize Tab 符的寬度
title 程式碼塊的標題

此外,我們也可以使用 \lstdefinestyle 指令來自定義程式碼區塊的樣式。這樣做的好處是使樣式定義集中管理,方便維護和更新。其基本語法為

\lstdefinestyle{樣式名稱}{樣式選項}

樣式選項如上表所示,而樣式名稱可以自己選擇,但盡量不要亂取名(例如 aaaabc 這種)。設定完畢後,我們指定 listings 的樣式為自定義的樣式名稱:

\lstset{style=樣式名稱}

請參考以下範例:

插入外部程式碼

當我們想要將外部程式碼插入到 LaTeX 文件中,可以使用 \lstinputlisting 這個指令,從而將程式碼與 LaTeX 文件分開管理,保持程式碼文件的完整性和整潔。其基本語法為

\lstinputlisting[選項]{檔案名稱}

其中,選項是用於自定義顯示樣式的可選參數,例如可以指定語言。假設有一份名為 example.py 的 Python 程式碼文件,我們可以使用 \lstinputlisting 將這個程式碼文件插入到 LaTeX 文件中:

\lstinputlisting[language=Python]{example.py}

使用 minited 套件

minted 套件是另一個強大的插入程式碼工具。minted 使用 Pygments 程式碼高亮套件,提供了優異的語法高亮效果。需要注意的是,minted 依賴於外部的 Python 程式,因此需要額外的設定,因此必須確保系統已安裝 Python 和 Pygments 套件。

我們使用 pip 安裝 Pygments 套件:

pip install Pygments

並在終端中運行以下指令,確認 pygmentize 已安裝並可用:

pygmentize -V

安裝完成後,在前言區中導入 minted 套件:

\usepackage{minted}

接著就可以在 minted 環境中插入程式碼。以下為使用範例:

但必須注意,使用 minted 套件需要啟用 shell-escape 才能夠成功編譯。我們在終端中運行以下指令來編譯 LaTeX 文件:

pdflatex -shell-escape 文件名稱.tex

如果使用 Texmaker 或 TeXStudio 等 LaTeX 編輯器,可以設定這些編輯器在編譯時自動使用 -shell-escape 選項。設定方式為在這些編輯器的 Configure 中,將 pdflatex 命令更改為:

pdflatex -synctex=1 -interaction=nonstopmode -shell-escape %.tex

minted 環境可以透過以下選項設定:

選項名稱 說明 選項名稱 說明
linenos 顯示行號 frame 程式碼區塊的框線樣式,如 singlelines
fontsize 字體大小 bgcolor 背景顏色
style 語法高亮的樣式 numbersep 行號與程式碼之間的距離
xleftmargin 程式碼區塊左側的空白 xrightmargin 程式碼區塊右側的空白
escapeinside 文字轉義的起始和結束符號 tabsize Tab 符的寬度
baselinestretch 行間距 breaklines 自動換行長程式碼
breakanywhere 允許在任何地方斷行 gobble 忽略每行前的指定數量的空格
autogobble 自動忽略每行前的多餘空格 mathescape 允許在程式碼中使用 LaTeX 數學模式
samepage 防止頁面中斷 showspaces 顯示空格符號
showtabs 顯示 Tab 符號 stripnl 移除程式碼前後的空行
texcl 在行首顯示 LaTeX 註解 escapeinside 程式碼內部的文字轉義符號
bgcolor 背景顏色 breakautoindent 自動縮排斷行的程式碼
breakindent 斷行的縮排距離 numberblanklines 為空行顯示行號
numberfirstline 為第一行顯示行號 highlightlines 高亮顯示特定行
highlightcolor 高亮行的顏色 firstnumber 第一行的行號

按鈕與指定頁面

若要如 PowerPoint 一般,能夠跳到指定頁面,首先要將某頁投影片貼上標籤,即:

\begin{frame}[label=標籤]
    % 內容
\end{frame}

接著在其他投影片中加入按鈕即可,語法為 \hyperlink{標籤}{\beamerbutton{顯示文字}}

效果如以下影片所示:

設定幀

如果想要讓投影片有不同的效果,可以在 frame 環境的選項中設定。語法為:

\begin{frame}[選項]
    % 內容
\end{frame}

下面表格提供 frame 可以修改的選項:

選項 說明 選項 說明
allowframebreaks 允許在需要時自動分頁 fragile 允許在框架內使用 verbatim 環境
shrink 使內容自動縮小以適應框架 plain 移除標題和頁尾
t 垂直對齊置頂部 c 垂直對齊置中間
b 垂直對齊置底部 squeeze 壓縮框架內的空間
label 設定框架標籤 noframenumbering 禁止此框架顯示頁碼
environment 指定用於生成此框架的 LaTeX 環境 containsverbatim 指定此框架包含 verbatim 環境,需要特殊處理
allowdisplaybreaks 允許在數學環境中自動分頁 trans 設定過渡效果

Footnotes

  1. 但許多人卻把「簡報」當成「報告本身」,將一大堆文字貼在簡報上,讓台下的聽眾不知是該聽台上的人報告,還是直接看簡報內容。讀完這篇文章不會教你任何簡報技巧,網路上對於簡報製作技巧的教學文多如牛毛;但是閱讀完這篇文章,你會學到如何用 Beamer 將各種元素簡化。↩︎

  2. 维基媒体项目贡献者. (2023a, September 20). Beamer (LaTeX). 维基百科,自由的百科全书. https://zh.wikipedia.org/wiki/Beamer_(LaTeX)↩︎

  3. 由 Photo: Andreas Praefcke - 自行拍攝, CC BY 3.0, https://commons.wikimedia.org/w/index.php?curid=715953↩︎

  4. 語法標示就是對岸所稱的高亮,為了方便以下就使用該詞詞彙,並無任何政治目的。↩︎

Reuse

Citation

BibTeX citation:
@online{sung2024,
  author = {Sung, Anthony},
  title = {LaTeX {教學系列:用} {Beamer} {製作簡報}},
  date = {2024-08-04},
  url = {https://yueswater.com/posts/2024-08-04-latex-beamer/},
  langid = {en}
}
For attribution, please cite this work as:
Sung, Anthony. 2024. “LaTeX 教學系列:用 Beamer 製作簡報.” August 4, 2024. https://yueswater.com/posts/2024-08-04-latex-beamer/.