news 2026/6/11 21:13:59

LaTeX实战排版指南:从公式、表格到代码块的优雅呈现

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
LaTeX实战排版指南:从公式、表格到代码块的优雅呈现

1. LaTeX公式排版:从基础到进阶

第一次用LaTeX写公式时,我被那些反斜杠和花括号搞得头晕眼花。直到发现用$E=mc^2$就能轻松插入质能方程,才意识到这比Word的公式编辑器高效多了。LaTeX的数学模式分为两种:行内公式用单美元符号包裹,独立公式用双美元符号或equation环境。比如这段文字里的质能方程就是行内公式,而下面这个麦克斯韦方程组就是独立公式:

\begin{equation} \nabla \cdot \mathbf{E} = \frac{\rho}{\epsilon_0} \end{equation}

公式编号是学术写作的刚需。在equation环境里,LaTeX会自动给公式加上编号。如果需要引用,记得在环境内加上\label{eq:maxwell}这样的标签,之后用\eqref{eq:maxwell}就能自动生成编号引用。我写论文时经常遇到公式需要对齐的情况,这时候align环境就是神器:

\begin{align} f(x) &= (x+1)^2 \label{eq:example1} \\ &= x^2 + 2x + 1 \label{eq:example2} \end{align}

&符号指定对齐位置,通常放在等号前面。每个\\表示换行,每行都会自动编号。如果不需要编号,可以用align*环境或在行尾加上\nonumber。对于多行公式组,gather环境可以让每个公式居中独立显示,而multline环境适合特别长的公式需要折行的情况。

矩阵和分段函数是理工科论文的常客。用bmatrix环境可以生成方括号矩阵,pmatrix生成圆括号矩阵。我经常用这个来展示神经网络权重:

\mathbf{W} = \begin{bmatrix} w_{11} & w_{12} & \cdots & w_{1n} \\ w_{21} & w_{22} & \cdots & w_{2n} \\ \vdots & \vdots & \ddots & \vdots \\ w_{m1} & w_{m2} & \cdots & w_{mn} \end{bmatrix}

分段函数建议用cases环境,它能自动加上左边的大括号:

f(x) = \begin{cases} x^2 & \text{当 } x \geq 0 \\ -x^2 & \text{当 } x < 0 \end{cases}

2. 专业级表格制作技巧

三线表是学术论文的标准格式,用booktabs宏包可以轻松实现。我刚开始总是用\hline画线,直到审稿人指出这不够专业。正确做法是用\toprule\midrule\bottomrule

\begin{table}[htbp] \centering \caption{不同算法的准确率比较} \begin{tabular}{lcc} \toprule 算法 & 训练集准确率 & 测试集准确率 \\ \midrule SVM & 95\% & 89\% \\ 随机森林 & 97\% & 91\% \\ 神经网络 & 99\% & 93\% \\ \bottomrule \end{tabular} \label{tab:performance} \end{table}

表格位置参数[htbp]中的字母分别代表here、top、bottom和page,LaTeX会按优先级尝试放置。\label要放在\caption之后才能正确引用。

复杂表格经常需要跨列或跨行,这时候\multicolumn\multirow就派上用场了(需要multirow宏包)。比如这个合并单元格的例子:

\begin{tabular}{|c|c|c|} \hline \multirow{2}{*}{模型} & \multicolumn{2}{c|}{准确率} \\ \cline{2-3} & 训练集 & 测试集 \\ \hline CNN & 98\% & 92\% \\ \hline \end{tabular}

表格太宽超出页面怎么办?用tabularx宏包的X列类型可以自动调整列宽。我还会用\small临时缩小字体,或者用\rotatebox旋转表头。对于超长表格,longtable宏包支持跨页显示,记得在表头重复\endfirsthead\endhead定义的内容。

3. 图片排版与多图并排

图片排版最头疼的就是浮动体位置问题。我的经验是尽量用[htbp]组合,必要时用!强制优先放置。\centeringcenter环境更节省空间:

\begin{figure}[htbp] \centering \includegraphics[width=0.8\textwidth]{network.pdf} \caption{神经网络架构图} \label{fig:network} \end{figure}

图片尺寸可以用相对单位(如\textwidth)或绝对单位(如5cm)。scale参数等比例缩放,但矢量图建议用widthheight保持清晰度。PDF格式的矢量图在LaTeX中显示效果最好,我通常用Inkscape绘制后导出为PDF。

多图并排是论文常见的需求,subfigure已经过时了,现在推荐用subcaption宏包配合minipage

\begin{figure}[htbp] \centering \begin{minipage}[b]{0.48\textwidth} \centering \includegraphics[width=\textwidth]{loss.pdf} \subcaption{训练损失曲线} \label{fig:loss} \end{minipage} \hfill \begin{minipage}[b]{0.48\textwidth} \centering \includegraphics[width=\textwidth]{accuracy.pdf} \subcaption{测试准确率} \label{fig:accuracy} \end{minipage} \caption{模型训练结果} \label{fig:results} \end{figure}

\hfill让两个minipage左右撑满,中间的间距会自动调整。注意总宽度要小于\textwidth,留出间距空间。子图引用用\subref{fig:loss},会自动生成(a)这样的标签。

4. 代码高亮与专业呈现

技术文档少不了代码展示,listings宏包是最常用的解决方案。我习惯在导言区统一设置样式:

\usepackage{xcolor} \usepackage{listings} \lstset{ basicstyle=\ttfamily\small, keywordstyle=\color{blue}, commentstyle=\color{green!50!black}, stringstyle=\color{red}, numbers=left, numberstyle=\tiny\color{gray}, stepnumber=1, numbersep=5pt, backgroundcolor=\color{white}, showspaces=false, showstringspaces=false, showtabs=false, tabsize=4, captionpos=b, breaklines=true, breakatwhitespace=true, escapeinside={\%*}{*)}, morekeywords={*,...} }

然后在正文中插入Python代码:

\begin{lstlisting}[language=Python,caption=快速排序算法] def quicksort(arr): if len(arr) <= 1: return arr pivot = arr[len(arr)//2] left = [x for x in arr if x < pivot] middle = [x for x in arr if x == pivot] right = [x for x in arr if x > pivot] return quicksort(left) + middle + quicksort(right) \end{lstlisting}

对于复杂代码,可以用\lstinputlisting直接导入源文件。如果需要强调某行代码,用firstlinelastline参数指定范围。我经常用emph参数给特定关键字加粗显示:

\lstset{emph={import,def,return},emphstyle=\bfseries}

算法伪代码推荐用algorithm2e宏包,它生成的排版更接近学术论文风格:

\begin{algorithm}[H] \SetAlgoLined \KwData{训练集 $X$, 标签 $y$} \KwResult{模型参数 $\theta$} 初始化 $\theta$\; \While{未收敛}{ 计算梯度 $\nabla J(\theta)$\; 更新 $\theta \leftarrow \theta - \eta \nabla J(\theta)$\; } \caption{梯度下降算法} \end{algorithm}

5. 文档结构与自动化工具

好的文档结构能让读者更容易理解内容。\section\subsection自动编号,用\tableofcontents生成目录。我习惯在导言区设置章节格式:

\usepackage{titlesec} \titleformat{\section}[hang]{\normalfont\Large\bfseries}{\thesection}{1em}{} \titleformat{\subsection}[hang]{\normalfont\large\bfseries}{\thesubsection}{1em}{}

参考文献管理用BibTeX最方便。创建.bib文件存储文献条目,然后在文档中引用:

\cite{key} % 引用编号 \citep{key} % 括号引用 \citet{key} % 文本引用

编译顺序是LaTeX → BibTeX → LaTeX ×2。现在更推荐用biber后端配合biblatex宏包,支持更多文献类型和排序方式。

交叉引用用\label\ref组合,LaTeX会自动处理编号。我习惯给所有可引用对象加上前缀:

\label{fig:architecture} % 图片 \label{tab:comparison} % 表格 \label{eq:matrix} % 公式 \label{sec:intro} % 章节

自动化工具可以大幅提升效率。用\includeonly选择性编译章节,用minted宏包实现更好的代码高亮(需要Python Pygments)。对于大型项目,subfiles宏包允许单独编译子文件。我常用的编译命令是:

pdflatex -shell-escape main.tex biber main pdflatex -shell-escape main.tex

6. 常见问题与调试技巧

遇到编译错误时,先看日志文件里!标记的错误位置。我遇到最多的问题是特殊字符未转义,比如&%_等在LaTeX中有特殊含义,需要写成\&\%\_

图片找不到通常是路径问题。我建议:

  1. 使用相对路径而非绝对路径
  2. 避免中文和空格文件名
  3. 确认文件扩展名正确
  4. \graphicspath{{figures/}}设置搜索路径

公式编号混乱时,检查是否误用了equation*等不编号环境。如果需要重置编号,用\setcounter{equation}{0}。子公式编号用subequations环境:

\begin{subequations} \begin{align} a &= b \label{eq:sub1} \\ c &= d \label{eq:sub2} \end{align} \end{subequations}

参考文献显示问号?说明需要运行BibTeX。引用显示问号?可能是标签未定义或需要重新编译。我习惯用\usepackage{refcheck}检查未引用的标签。

性能优化方面,可以:

  1. \include替代\input加速编译
  2. 预编译页眉页脚\usepackage{prelim2e}
  3. 禁用不必要的宏包
  4. \usepackage{draftwatermark}加速预览

7. 进阶技巧与个性化定制

自定义命令和环境能让代码更简洁。比如我经常定义矩阵命令:

\newcommand{\mat}[1]{\mathbf{#1}} \newcommand{\trans}{\mathsf{T}}

这样\mat{A}^\trans就能生成$\mathbf{A}^\mathsf{T}$。对于常用数学符号,可以在导言区统一定义:

\newcommand{\diff}{\mathop{}\!\mathrm{d}} \newcommand{\expect}{\mathbb{E}}

页面布局调整用geometry宏包:

\usepackage[top=2cm,bottom=2cm,left=2.5cm,right=2.5cm]{geometry}

字体设置推荐用fontspec(XeLaTeX/LuaLaTeX下):

\usepackage{fontspec} \setmainfont{Times New Roman} \setsansfont{Arial} \setmonofont{Courier New}

颜色主题可以用xcolor定义:

\usepackage[dvipsnames]{xcolor} \definecolor{myblue}{RGB}{0,74,155}

页眉页脚设计用fancyhdr

\usepackage{fancyhdr} \pagestyle{fancy} \fancyhf{} \rhead{\thepage} \lhead{\leftmark}

最后提醒,重要的LaTeX文件一定要用版本控制。我习惯用Git管理,.gitignore里排除临时文件:

*.aux *.log *.out *.toc *.bbl *.blg
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/11 21:02:02

从零到一上手 UniApp:我的能源管理 APP 开发入门全经验分享

大家好&#xff01;最近我完成了基于 UniApp 的能源管理 APP 开发入门项目&#xff0c;从环境搭建、基础语法到核心功能开发&#xff0c;踩过不少坑&#xff0c;也沉淀了一套完整的学习方法。今天就把我的 UniApp 学习路线、知识点拆解和实操心得整理成这篇万字干货&#xff0c…

作者头像 李华
网站建设 2026/6/11 20:52:52

稀疏自编码器在多模态表示学习中的应用与优化

1. 稀疏自编码器与多模态表示学习基础解析1.1 稀疏自编码器的核心原理稀疏自编码器(SAE)本质上是一种特殊设计的神经网络架构&#xff0c;其核心目标是通过施加稀疏性约束来学习数据的高效表示。与传统自编码器不同&#xff0c;SAE在隐藏层引入了稀疏性惩罚项&#xff0c;迫使网…

作者头像 李华
网站建设 2026/6/11 20:50:06

如何利用WaveNet架构构建端到端英语语音识别系统

如何利用WaveNet架构构建端到端英语语音识别系统 【免费下载链接】speech-to-text-wavenet Speech-to-Text-WaveNet : End-to-end sentence level English speech recognition based on DeepMinds WaveNet and tensorflow 项目地址: https://gitcode.com/gh_mirrors/sp/speec…

作者头像 李华
网站建设 2026/6/11 20:48:45

让AI成为你的图像审美顾问:如何用深度学习量化视觉质量

让AI成为你的图像审美顾问&#xff1a;如何用深度学习量化视觉质量 【免费下载链接】image-quality-assessment Convolutional Neural Networks to predict the aesthetic and technical quality of images. 项目地址: https://gitcode.com/gh_mirrors/im/image-quality-asse…

作者头像 李华