LaTeX 教學系列:用 Beamer 製作簡報
利用 TikZ 套件繪製圖形
簡報製作在各種領域都是一項很重要的技能,畢竟透過簡報,可以將複雜的資訊用簡單的方式呈現。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}
跟 article
、report
等類別一樣,我們可以在前言區加上文件的資訊,如標題、作者姓名、日期等,程式碼與之前相同。接著就可以進入 document
環境編寫本文。
幀
一頁的投影片使用 frame
這個環境包住的。最古早的簡報是由一幀一幀的幻燈片(lantern slide)製作而成,透過光學的技巧投影成像,而一幀在英文中就是 “frame”。
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{樣式名稱}{樣式選項}
樣式選項如上表所示,而樣式名稱可以自己選擇,但盡量不要亂取名(例如 aaa
、abc
這種)。設定完畢後,我們指定 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 |
程式碼區塊的框線樣式,如 single 或 lines |
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
但許多人卻把「簡報」當成「報告本身」,將一大堆文字貼在簡報上,讓台下的聽眾不知是該聽台上的人報告,還是直接看簡報內容。讀完這篇文章不會教你任何簡報技巧,網路上對於簡報製作技巧的教學文多如牛毛;但是閱讀完這篇文章,你會學到如何用 Beamer 將各種元素簡化。↩︎
维基媒体项目贡献者. (2023a, September 20). Beamer (LaTeX). 维基百科,自由的百科全书. https://zh.wikipedia.org/wiki/Beamer_(LaTeX)↩︎
由 Photo: Andreas Praefcke - 自行拍攝, CC BY 3.0, https://commons.wikimedia.org/w/index.php?curid=715953↩︎
語法標示就是對岸所稱的高亮,為了方便以下就使用該詞詞彙,並無任何政治目的。↩︎
Reuse
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}
}