小坷笔记:Latex语法笔记

研一下,已经是开始写论文的阶段了。Latex相比于Word,在编写的时候不那么直观,但是胜在省事,不用纠结格式。

那么老规矩,完整的教学网上都到处都是,小坷这里只是小坷自己常用的指令+自己在学习过程中的思考。


LaTeX 伪代码算法

在编写工科论文的伪代码时,通常使用 algorithmalgorithmic (或 algorithmicx)宏包。

  • 环境包裹
    • \begin{algorithm}[htbp]:定义浮动体环境,包裹整个算法块。
    • \begin{algorithmic}[1]:定义伪代码环境,参数 [1] 表示自动添加行号。
  • 标题与引用
    • \caption{...}:设置算法标题。
    • \label{...}:设置标签,便于正文中使用 \ref{...} 进行交叉引用。
  • 常用排版与数学符号
    • \State:声明算法中的一个新语句/新行。
    • \text{...}:在数学公式中强制使用正体(Roman)显示文本,防止变量名(如 ee_pos)被渲染成难看的斜体乘积形式。
    • \boldsymbol{...}:将数学符号加粗,常用于表示向量或矩阵(如 $\boldsymbol{p}_{\text{init}}$、$\boldsymbol{\epsilon}$)。
    • \gets:渲染为左箭头 $\gets$,表示赋值。

排版避坑:为什么用 [htbp] 而不是 根据需求单独指定[h]

在 LaTeX 中,表格、图片和算法属于“浮动体(Float)”,引擎会自动寻找最美观的位置进行排版。

  • [htbp] 的优先级逻辑
    h (here):优先尝试放在代码当前准确位置。
    t (top):当前页放不下,则放在当前页或下一页的顶部。
    b (bottom):顶部不合适,尝试放在页面底部。
    p (page):实在太大,单独放在只有浮动体的一页上。
  • 为什么慎用单独的 [h]
    如果只指定 [h],一旦当前页底部空间不足以放下整个算法,LaTeX 可能会强制将其推到下一页,导致当前页底部出现极不美观的大面积留白。

LaTeX 与 Markdown 标题语法的核心区别

虽然 Markdown 和 LaTeX 本质上都是通过“标签”控制格式的标记语言,但你不能在标准的 LaTeX 中使用 # 来表示标题。具体原因和替换规则如下:

  • # 在 LaTeX 中是保留的参数占位符
    就像代码里的保留字一样,LaTeX 将 # 专门用于定义自定义命令(宏)时的参数(例如用 #1 表示第一个参数)。直接在正文中敲 # 会导致编译报错;如果只是想单纯显示井号符号,必须加上反斜杠进行转义(写成 \#)。
  • LaTeX 拥有严谨的专属标题命令
    相比于 Markdown 用井号数量区分层级,LaTeX 更加学术化,使用明确的结构化命令来定义标题。它们的对应关系为:
    • 一级标题:Markdown # → 对应 LaTeX \section{你的标题}(若是书籍排版则对应 \chapter{你的标题}
    • 二级标题:Markdown ## → 对应 LaTeX \subsection{你的标题}
    • 三级标题:Markdown ### → 对应 LaTeX \subsubsection{你的标题}