用途
该技能用于指导 LaTeX 文档的编写,帮助用户创建结构良好、语义正确的 LaTeX 文档,遵循既定的最佳实践。它会在以下场景主动介入:编写或编辑 .tex 文件时,以及进行 LaTeX 文档相关工作时。
核心原则:语义标记
使用与内容语义含义相匹配的 LaTeX 环境,而不仅仅是视觉外观。
主要能力
列表环境的选择
- description:用于术语-定义对。当有标签后跟解释、定义或描述时使用。例如 API 参数、配置选项、术语表条目、通过/失败示例、功能描述等。
- itemize:用于没有标签的统一列表项。
- enumerate:用于顺序重要的编号步骤或排名。
单条目列表是散文,不是列表
只有一个 \item 的列表永远不正确:它会渲染为没有同级项的孤立项目符号。应将内容写成散文句子。两个短句伪装成两个项目符号通常也最好写成散文。
语义环境内不以列表或代码块开头
即使真正的多条目列表也不能是语义环境(example、exercise、remark、definition、block)内的第一个元素。直接以 \begin{enumerate}、\begin{itemize} 或 \inputminted/\begin{minted} 开头会与环境的内联标签冲突。始终在列表或代码前至少加一句引导句。
在编号条目之间穿插评论
当枚举条目(调查/测验问题、需求、考试任务)各自需要解释性评论时,保持 \item 文本简洁,将评论作为散文放在单条目环境之间,使用 enumitem 的 resume 选项恢复编号。需要 \usepackage{enumitem};在双 beamer/article 构建中仅在 article 驱动中加载。
识别模式
审查或编写 LaTeX 时,查找以下表明应使用 description 的模式:
- \item \textbf{SomeLabel:} → 应使用 \item[SomeLabel]
- \item \emph{SomeLabel:} → 应使用 \item[SomeLabel]
- \item SomeLabel --- → 应使用 \item[SomeLabel]
- 每个条目都以粗体/强调文本开头的列表
修复常见反模式
- itemize 中的粗体标签:应改用 description 环境。
- 手动格式化而非语义结构:应改用语义 description。
文学编程(.nw 文件)
在 .nw 文件中编写 LaTeX 时,使用 noweb 的 [[code]] 记法引用代码,而非 \texttt 手动转义。[[code]] 会自动转义特殊字符(下划线、反斜杠等),使源代码更易读,遵循文学编程惯例,防止因忘记转义导致的 LaTeX 错误,并清晰区分代码与散文。
在 .nw 文件中使用 [[code]] 的场景:函数和方法名、变量名、类名、常量、模块名、任何带下划线或特殊字符的标识符。
在 .nw 文件中使用 \texttt 的场景:不带特殊字符的短非代码技术术语、文件扩展名、不带下划线的简单命令。
在常规 .tex 文件(非文学程序)中:使用 \texttt 并正确转义,因为 [[...]] 不可用;或使用 minted 或 listings 等包处理代码。
交叉引用
- 始终使用 \cref{...}(cleveref 包)进行所有交叉引用。
- 永远不要使用 \S\ref{...} 或手动输入章节/图表前缀。
- 使用描述性标签:\label{sec:introduction} 而非 \label{s1}。
引用
- 使用正确的引用命令(\cite、\citep、\citet),而非手动引用。
- 永远不要手动写 [1] 或 (Smith 2020)。
引号(csquotes 包)
- 始终使用 \enquote{...} 表示引号,永远不要手动引号标记。
- 自动处理嵌套引号。
- 语言感知。
- 块引用使用 \begin{displayquote}...\end{displayquote}。
引用引文与归属转述
- 从来源逐字复制的文本 → 使用集成的引用引文命令(\textcquote、\blockcquote),使引文自带引用。
- 转述、重构对话或叙述示例 → 不是引文。使用 \textcite/\autocite 整体归属,报告的话语保留在普通 \enquote 中。
- 其他情况使用普通 \enquote{...}:警示引号、提及词语、对已引用引文的回指。
强调
- 永远不要在正文中使用全大写表示强调。
- 使用 \emph{...} 强调词或短语。
- 强强调使用 \textbf{...} 或嵌套 \emph{\emph{...}}。
- 让 LaTeX 处理排版样式。
- 例外:按惯例大写的缩写和专有名词(如 NASA、USA、PDF)可以,不应强调。
浮动体:图和表
核心原则:图像不是图,但图可以包含图像。使用正确的 figure 和 table 环境,带标题和标签。
每个表和每个图都要有标题——没有例外。永远不要留下裸露的 tabular 或 \includegraphics 在 center 或正文中,无论多小:将其包裹在带标题和标签的 table/figure 浮动体中,并用 \cref 引用。标题说明读者应从表或图中得到什么,而不仅仅是其主题。
浮动体会移动,所以永远不要用位置指向它。
使用方式
该技能在编写或编辑 .tex 文件时主动使用,提供上述最佳实践指导。它通过识别反模式并建议正确的语义标记来帮助改进 LaTeX 文档。
适用场景
- 编写或编辑 .tex 文件
- 编写或编辑文学编程 .nw 文件
- 审查 LaTeX 文档的语义正确性
- 修复常见的 LaTeX 反模式
限制
- 该技能主要关注 LaTeX 语义标记和最佳实践,不涉及 LaTeX 安装或编译配置。
- 部分功能(如 enumitem 的 resume)需要额外的包支持。
- 在双 beamer/article 构建中,enumitem 与 beamer 的列表内部机制冲突,需仅在 article 驱动中加载。
- [[code]] 记法仅在 .nw 文件中可用,常规 .tex 文件中不可用。
- \textcquote/\blockcquote 断言花括号内的文本是来源的逐字内容,使用前需验证。