
1. 項目概述從“差不多就行”到“精準控制”在LaTeX的世界里標題Title和章節標題Heading的處理往往是新手和老手之間的一道分水嶺。很多人剛開始用LaTeX時會覺得標題的樣式“默認就挺好”或者用一些基礎的命令比如\Huge,\centering簡單調整一下大小和位置就滿足了基本需求。但當你需要撰寫學位論文、準備投稿期刊、或是制作一份具有特定格式要求的報告時這種“差不多就行”的態度就會讓你陷入困境。你會發現默認的標題字體可能不符合學校模板要求標題與正文的間距總是不對多級標題的對齊方式五花八門甚至同一個文檔里章節標題和圖表標題的樣式都無法統一。這背后的核心需求遠不止是讓文字“變大”或“居中”那么簡單。它涉及到LaTeX文檔結構的邏輯性、樣式的一致性以及排版的專業性。控制標題的大小和位置本質上是在控制文檔的視覺層次和閱讀節奏。一個層次清晰、樣式規范的標題系統能極大地提升文檔的可讀性和專業度。無論是調整\maketitle生成的封面標題還是定制\chapter,\section等章節標題亦或是精細控制\caption為圖表添加的說明都需要一套系統的方法。本文將從實際應用場景出發拋開那些晦澀難懂的底層代碼講解直接聚焦于“如何實現”。我會帶你拆解LaTeX中三類核心標題文檔標題、章節標題、浮動體標題的控制方法涵蓋從全局樣式定義到局部微調的完整方案。你會發現無需成為LaTeX專家也能通過一些現成的宏包和清晰的邏輯實現對標題樣式的精準掌控。適合所有已經入門LaTeX但苦于無法讓文檔標題樣式完全符合自己要求的中級使用者。2. 核心思路理解LaTeX標題的“三層架構”要精準控制標題首先得理解LaTeX處理標題的邏輯。我將其歸納為“三層架構”文檔類層、宏包層、命令層。每一層都提供了不同粒度的控制手段理解它們的優先級和適用范圍是成功的關鍵。2.1 第一層文檔類Document Class的默認設定當你使用\documentclass{article}或\documentclass{book}時就已經引入了一套默認的標題樣式。這些樣式由文檔類文件.cls定義規定了諸如\part,\chapterbook類特有,\section,\subsection等命令的默認字體、字號、編號格式、前后間距等。這是最底層、也是最基本的樣式來源。例如article文檔類中\section的標題默認是\Large\bfseries大號、粗體并且左對齊。如果你想從根本上改變整個文檔所有章節標題的基調修改文檔類的定義是最徹底的但通常不推薦直接修改.cls文件因為這會破壞可移植性。更常見的做法是通過文檔類提供的選項或在導言區使用更高級的命令進行覆蓋。2.2 第二層專用宏包Package的增強與重構這是實現個性化標題控制最主要、最推薦的層面。LaTeX社區提供了大量功能強大的宏包它們像“增強插件”一樣可以無縫修改或完全重構文檔類定義的標題樣式。titlesec宏包這是標題格式控制的“瑞士軍刀”。它提供了\titleformat和\titlespacing等核心命令允許你分別定義每一級標題的格式包括字體、標簽、前后內容和間距包括上方間距、下方間距以及右側縮進。其設計哲學是將標題的“內容格式”和“版式間距”分離控制邏輯非常清晰。titling宏包專門用于控制\maketitle生成的文檔標題即封面信息如標題、作者、日期。它可以很方便地調整這些元素的字體、間距和相對位置。caption和subcaption宏包專門用于控制圖表等浮動體的標題\caption。它們提供了豐富的選項來設置標題的字體、標簽格式如“圖1.1”、與浮動體的間距、以及多行標題的懸掛縮進等。通過組合使用這些宏包你幾乎可以實現任何你能想到的標題樣式而無需觸碰底層代碼。2.3 第三層行內命令與局部環境這是最靈活、也是最“臨時”的一層。當你只是對某個特定的標題進行一次性微調時可以直接在標題命令內部使用字體命令或間距命令。例如\section{\Large\itshape 這是一個特殊的章節標題}。這種方式雖然直接但不利于保持樣式的一致性且無法控制標題編號的格式和全局間距。它通常用于解決一些非常特殊的、局部的需求。核心思路總結我們的策略是優先使用第二層宏包進行全局和系統性的樣式定義確保整個文檔的一致性。僅在遇到極端特殊情況時才考慮使用第三層行內命令進行局部覆蓋。第一層文檔類則作為我們樣式定義的起點和參考。3. 實戰操作三類標題的精細化控制接下來我們進入實戰環節。我將分別針對文檔標題、章節標題和浮動體標題給出具體的配置示例和代碼。3.1 文檔標題\maketitle的定制默認的\maketitle命令生成的封面比較簡單。使用titling宏包可以對其進行深度定制。\documentclass{article} \usepackage{titling} % 引入titling宏包 % 1. 設置標題、作者、日期的前置內容如“論文題目” \pretitle{\begin{center}\Huge\bfseries} % 標題前居中、Huge、粗體 \posttitle{\par\end{center}\vskip 0.5em} % 標題后換段增加0.5em垂直間距 \preauthor{\begin{center}\large} % 作者前居中、large \postauthor{\par\end{center}} % 作者后換段 \predate{\begin{center}\large} % 日期前居中、large \postdate{\par\end{center}} % 日期后換段 % 2. 直接重定義標題、作者、日期的樣式更直接的方式 \renewcommand{\maketitlehooka}{} % 標題前的鉤子可插入內容 \renewcommand{\maketitlehookb}{} % 標題與作者之間的鉤子 \renewcommand{\maketitlehookc}{} % 作者與日期之間的鉤子 % 使用\set命令直接設置屬性 \setlength{\droptitle}{-4\baselineskip} % 將整個標題塊上移4行緊貼頁眉 \title{我的論文題目\\LaTeX標題控制深入研究} \author{張三 \\ 某大學計算機學院 \and 李四 \\ 某研究所} \date{\today} \begin{document} \maketitle % 文檔內容... \end{document}關鍵參數解析\pretitle,\posttitle等這些命令允許你在標題元素前后插入任意格式代碼非常靈活。\droptitle這個長度參數控制整個標題塊相對于頁面頂部的垂直偏移。負值表示上移常用于減少標題上方的空白使排版更緊湊。\baselineskip是基礎行距以此為單位的調整能保持與正文行距的協調。注意titling宏包與某些文檔類如IEEEtran可能不兼容因為這些文檔類已經深度定制了自己的\maketitle。在這種情況下應優先遵循文檔類自身的標題定義方式。3.2 章節標題的全面改造使用titlesectitlesec宏包是控制章節標題的終極武器。其核心是\titleformat和\titlespacing命令。\documentclass[12pt]{article} \usepackage[UTF8]{ctex} % 中文支持 \usepackage{titlesec} % 引入titlesec宏包 \usepackage{fontspec} % 設置字體 \setmainfont{Times New Roman} % 設置西文主字體 % 定義一種漂亮的標題字體如果系統有該字體 \newfontfamily\titlefont{Georgia}[BoldFont{Georgia Bold}] % 1. 使用 \titleformat 定義格式 % 語法\titleformat{command}[shape]{format}{label}{sep}{before-code}[after-code] % 重定義 \section 格式 \titleformat{\section} % 作用的命令 {\titlefont\Large\bfseries\color{blue}} % 標題整體的格式字體、大小、顏色 {\thesection} % 標簽編號的格式這里直接用默認編號 {1em} % 編號與標題正文之間的水平間距 {} % 標題正文前的代碼可為空 [\titlerule] % 標題正文后的代碼這里添加一條水平線 % 重定義 \subsection 格式無編號左對齊帶背景色 \titleformat{\subsection} {\normalfont\large\bfseries\color{white}} % 標題字體 {} % 不顯示編號 {0pt} % 編號間距為0 {\colorbox{blue!60!black}{\quad\thesubsection\quad}} % 標題前一個帶背景色的編號框 [\vspace{-0.2\baselineskip}] % 標題后輕微上移補償背景框增加的高度 % 2. 使用 \titlespacing 調整間距 % 語法\titlespacing*{command}{left}{before-sep}{after-sep}[right-sep] % 帶星號版本會忽略該級標題的縮進通常用于section及以下 \titlespacing*{\section} {0pt} % 左側縮進0表示頂格 {3.5ex plus 1ex minus .2ex} % 標題上方的垂直間距彈性長度 {2.3ex plus .2ex} % 標題下方的垂直間距彈性長度 \titlespacing*{\subsection} {0pt} {2.5ex plus 1ex minus .2ex} {1.5ex plus .2ex} % 3. 完全自定義一個“無編號”的章節命令類似\section*但樣式不同 \titleclass{\mysection}{straight}[\part] % 定義一個新命令繼承自\part的“straight”樣式 \titleformat{\mysection} {\Huge\bfseries\filcenter} % 居中顯示 {} % 無編號 {0pt} {} \titlespacing*{\mysection} {0pt} {4ex plus 1ex minus .2ex} {3ex plus .2ex} % 使用自定義命令 \newcommand{\specialsection}[1]{\mysection*{#1}} \begin{document} \section{引言} 這里是引言部分的內容。通過上述設置這個“引言”標題將是藍色、大號、加粗并且下方帶有一條橫線。 \subsection{研究背景} 這個二級標題沒有編號但有一個藍色的背景框包裹著一個白色的編號雖然不顯示數字這是一種突出顯示的方式。 \specialsection{致謝} 這是一個完全自定義的章節使用\mysection*樣式通常可用于致謝、附錄標題等需要特殊格式的部分。 \end{document}關鍵參數與技巧解析彈性長度plus/minus在\titlespacing中使用的3.5ex plus 1ex minus .2ex是LaTeX的彈性長度。它告訴LaTeX理想間距是3.5ex但在排版需要時可以拉伸最多1ex或壓縮最多0.2ex。這有助于LaTeX在分頁時做出更優的布局決策避免產生難看的空白或孤行。\titleformat的[shape]參數這個可選參數可以改變標題的布局形狀例如display將標題和編號分開處理常用于書籍的chapter、runin使標題與正文首行在同一行像段落起始、frame給標題加框等。默認是display。\colorbox的使用在\subsection的例子中我們使用\colorbox{顏色}{內容}來為編號添加背景色。blue!60!black表示60%的藍色混合40%的黑色。\quad是插入一個空格的命令用于增加背景框的內邊距。自定義命令通過\titleclass和\titleformat結合可以創建全新的章節命令這為設計復雜的文檔結構如報告、手冊提供了極大的靈活性。3.3 浮動體標題\caption的美化圖表標題的控制主要依靠caption宏包。它提供了\captionsetup命令來統一或分別設置不同浮動體環境的標題樣式。\documentclass{article} \usepackage{graphicx} % 插入圖片 \usepackage{caption} % 引入caption宏包 \usepackage{subcaption} % 用于子圖標題 % 全局設置所有浮動體標題的樣式 \captionsetup{ font {small, sf}, % 字體小號無襯線體sans-serif labelfont {bf}, % 標簽字體如“圖1”加粗 textfont {it}, % 標題正文字體斜體 labelsep period, % 標簽與正文之間的分隔符句點生成“圖1.” justification centering, % 對齊方式居中 singlelinecheck false, % 即使單行也強制應用對齊設置對居中有效 margin 1cm % 標題的左右邊距相對于浮動體寬度 } % 單獨設置表格標題的樣式覆蓋全局設置 \captionsetup[table]{ font {footnotesize, rm}, % 表格標題用更小的腳注尺寸襯線體 labelsep space, % 標簽后跟一個空格生成“表 1” skip 5pt % 表格與標題之間的垂直間距 } % 設置子圖標題樣式 \captionsetup[sub]{ font {scriptsize, rm}, % 子圖標題用更小的字號 labelformat simple, % 標簽格式簡單如(a) justification raggedright % 左對齊 } \begin{document} \begin{figure}[htbp] \centering \includegraphics[width0.8\textwidth]{example-image-a} \caption{這是一個示例圖片的標題。根據全局設置它會以“圖1.”開頭整體居中使用小號無襯線體且“圖1”加粗、標題正文斜體。} \label{fig:example} \end{figure} \begin{table}[htbp] \centering \begin{tabular}{|c|c|} \hline 項目 數值 \\ \hline A 100 \\ \hline \end{tabular} \caption{這是一個示例表格的標題。它遵循了針對table的設置字號更小標簽后是空格。} \label{tab:example} \end{table} \begin{figure}[htbp] \centering \begin{subfigure}[b]{0.45\textwidth} \includegraphics[width\textwidth]{example-image-b} \caption{子圖A} \label{fig:suba} \end{subfigure} \hfill \begin{subfigure}[b]{0.45\textwidth} \includegraphics[width\textwidth]{example-image-c} \caption{子圖B} \label{fig:subb} \end{subfigure} \caption{包含兩個子圖的總體圖片標題。子圖標題字號更小且左對齊。} \label{fig:subfig} \end{figure} \end{document}關鍵參數解析justification這是控制標題文本對齊的關鍵。可選值有centering居中、raggedright左對齊、raggedleft右對齊和justified兩端對齊。對于較短的標題居中通常更美觀對于較長的、描述性的標題左對齊或兩端對齊可能更易讀。singlelinecheck默認情況下如果標題只有一行caption宏包可能會忽略justification設置尤其是居中。將其設為false可以強制始終應用對齊設置。labelsep控制編號label和標題正文text之間的分隔符。常用period句點或space空格也可以自定義為quad、colon冒號等。skip控制浮動體圖形或表格與標題之間的垂直距離。這是一個固定的長度值如5pt對于微調版面美觀度非常有用。margin設置標題文本的左右邊距。當浮動體寬度較窄時增加邊距可以防止標題文本顯得過于擁擠。4. 進階技巧與疑難雜癥處理掌握了基本方法后我們來看看一些更復雜或容易出問題的場景。4.1 處理超長標題與換行有時標題很長需要手動換行或確保換行后的格式正確。對于章節標題可以直接在標題文本中使用\\進行換行。\section{這是一個非常長的章節標題它需要被分成兩行來\\保持頁面的美觀和可讀性}對于浮動體標題caption宏包會自動處理換行。但如果你想手動控制可以在\caption中使用\par或\\需要將\captionsetup中的singlelinecheck設為false。更好的做法是讓caption宏包自動管理它通常做得很好。4.2 在特定章節如目錄、參考文獻中禁用標題格式修改使用titlesec修改標題格式后可能會影響到目錄Table of Contents, TOC和參考文獻標題的樣式。如果你希望這些部分的標題保持文檔類默認的樣式可以使用\titleformat的帶星號版本它只修改標題在正文中的顯示而不影響其在目錄或其他地方的格式。% 只修改正文中的\section樣式不影響目錄 \titleformat*{\section}{\Large\bfseries\color{red}} % 注意\titleformat* 是簡化命令不能定義編號格式和間距間距仍需用\titlespacing控制 \titlespacing*{\section}{0pt}{3.5ex}{2.3ex}或者更精細地控制你可以使用titlesec的page參數來指定樣式應用于奇數頁、偶數頁或所有頁但這屬于更高級的用法。4.3 與超鏈接宏包如hyperref的兼容性hyperref宏包用于創建PDF書簽和超鏈接它會在標題命令內部插入一些代碼。為了確保titlesec的修改與hyperref兼容一個重要的經驗法則是總是最后加載hyperref宏包少數特殊情況除外如cleveref需要在hyperref之后。這樣hyperref就能感知到之前由titlesec定義好的標題格式并正確生成書簽。\usepackage{titlesec} % ... 其他宏包 ... \usepackage{hyperref} % hyperref幾乎總是最后加載如果加載順序不當可能會導致PDF書簽中的標題文字格式錯亂或者超鏈接區域不正確。4.4 自定義標題編號格式如“第X章”、“實驗Y”titlesec的\titleformat命令中的{label}參數不僅可以放\thesection當前編號還可以對其進行包裝。% 將 \section 編號顯示為“第 \arabic{section} 節” \titleformat{\section} {\normalfont\Large\bfseries} {第 \arabic{section} 節} % 自定義標簽格式 {1em} {}這里\arabic{section}表示以阿拉伯數字形式輸出章節計數器section的值。你還可以用\Roman,\alph等命令輸出不同格式的數字。對于更復雜的編號體系如包含章節編號的1.2LaTeX的計數器是自動關聯的直接使用\thesection即可。5. 常見問題與排查清單在實際操作中你可能會遇到以下問題。這里提供一個快速排查指南。問題現象可能原因解決方案編譯錯誤Undefined control sequence. \titleformat未加載titlesec宏包。在導言區添加\usepackage{titlesec}。標題樣式未改變1. 代碼拼寫錯誤。2.\titleformat等命令放在了\begin{document}之后。3. 與其他宏包沖突如某些文檔類自帶標題格式。1. 檢查命令和宏包名。2. 確保所有格式定義都在導言區\begin{document}之前。3. 嘗試調整宏包加載順序或將titlesec的[options]參數設為explicit進行調試。目錄中的標題格式也變了使用了\titleformat而非\titleformat*且希望目錄保持原樣。使用\titleformat*僅修改正文標題或使用titlesec的title和page參數進行更精細控制。PDF書簽中的標題是亂碼或格式不對hyperref宏包與titlesec加載順序不當。確保hyperref宏包在titlesec之后、盡可能最后加載。標題間距調整無效\titlespacing的參數單位用錯或長度值被覆蓋。使用彈性長度如ex并檢查是否有后續代碼如\setlength修改了相關長度變量。用\showthe\length命令在日志中查看長度值。圖表標題與圖形/表格距離太遠或太近未設置或錯誤設置了caption宏包的skip參數。使用\captionsetup{skip5pt}進行調整。skip是標題與浮動體之間的垂直距離。多級標題如subsubsection樣式不統一只定義了高級別標題如section未定義低級別標題。使用\titleformat和\titlespacing為每一級需要自定義的標題\subsection,\subsubsection等分別定義樣式。自定義標題命令不工作\titleclass定義有誤或新命令未正確使用。檢查\titleclass的父級命令是否正確。確保在正文中使用\mysection*{標題}或類似格式。一個關鍵的實操心得在進行復雜的標題格式修改時強烈建議創建一個最小工作示例Minimal Working Example, MWE。即新建一個僅包含必要代碼你的文檔類、用到的宏包和格式定義的.tex文件進行測試。這樣可以有效隔離問題避免在復雜的主文檔中難以排查。當樣式調試成功后再將相關代碼移植到主文檔中。LaTeX的標題控制初看可能覺得繁瑣但一旦你理解了“三層架構”的思路并熟練運用titlesec,caption這幾個核心宏包就會發現它提供了無與倫比的精確性和一致性。這種控制力是所見即所得的文字處理器難以企及的。記住好的排版是“無聲的向導”而精心設計的標題正是這份向導中最清晰的路標。