SuperAPI AI 工具集

latex-writing

写作与研究

查看项目

更新于 10-15 18:05

技能介绍

用途

该技能用于指导 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 断言花括号内的文本是来源的逐字内容,使用前需验证。