在编译 TeXmaker 时,满屏红色报错中常常出现“File not found”或“Undefined control sequence”,此时不要慌张——绝大多数情况下并非编辑器故障,也无需重装系统或卸载重来。本质上,这只是一个宏包缺失的问题,好比炒菜发现少了酱油:菜谱和锅具都没问题,只差一味配料。

TeXmaker 本身并不会凭空报错,它只是忠实地转述 LaTeX 引擎的反馈。双击编译窗口中的红色报错行,通常可以看到类似 ! LaTeX Error: File `ctex.sty` not found. 的提示——其中斜体部分的 ctex.sty 就是关键信息,务必一字不差地记录下来。
接下来观察宏包名的特征。以 .sty 结尾的是标准宏包;若报错涉及 fontspec.sty 或 xeCJK.sty,说明正在使用 XeLaTeX 编译中文文档,需优先安装中文支持包;而 subfigure.sty 或 algorithm2e.sty 则属于功能扩展类宏包。不要急于上网搜索,先判断是真正缺失还是已安装但未被识别——在命令行(Windows 按 Win+R → 输入 cmd → 回车)中执行 mpm --list-packages | findstr "ctex"(将 ctex 替换为实际宏包名),如果返回空白行,则说明确实缺失;若返回一堆信息,则表示宏包已存在,只是 LaTeX 未能找到它。
确认报错宏包名并判断来源
既然已经定位到报错行中的宏包名,接下来的步骤就非常清晰了。首先尝试最便捷的方案——不同操作系统下的首选方法略有差异。
首选:用 MiKTeX Console 一键安装(推荐 Windows 用户)
点击“开始”菜单 → 打开MiKTeX Console → 左侧选择“Packages” → 在右上角搜索框中输入宏包名(例如 ctex)→ 从结果列表中找到对应条目 → 点击右侧的“Install”按钮。整个过程会自动处理依赖关系、更新文件名数据库(FNDB)和格式文件(Formats),完全无需人工干预。安装完成后直接关闭 Console,返回 TeXmaker 重新编译即可。
但有一个常见陷阱:如果在 Console 中根本搜不到该宏包,说明它不在官方仓库内,或者你的拼写有误——此时不要反复点击“刷新”按钮,请立即切换到手动安装方案。
备选:手动安装宏包(适用于 CTAN 下载、旧版 MiKTeX 或离线环境)
手动安装有三种路径,选择最适合你的一种。
方法一:放入用户本地树(最安全,无需管理员权限)
① 在你的用户目录下创建路径:~/texmf/tex/latex/宏包名/(Windows 系统为 C:\Users\用户名\texmf\tex\latex\宏包名)
② 将下载好的 xxx.sty 文件(或解压后的整个文件夹)放入该目录
③ 打开命令行,执行 texhash %USERPROFILE%\texmf(Windows)或 texhash ~/texmf(Linux/macOS)——这一步绝不能省略,否则 TeX 永远找不到你放置的文件
方法二:放入 MiKTeX 安装目录(仅限管理员权限且明确路径)
将 .sty 文件复制到 D:\MiKTeX\tex\latex\宏包名(路径视实际安装位置而定)→ 打开 MiKTeX Console → 点击左下角“Tasks” → 选择“Refresh file name database” → 等待进度条走完。
方法三:项目级临时方案(仅调试用,不推荐长期使用)
直接将 xxx.sty 文件与你的 .tex 主文件放在同一文件夹下。TeXmaker 编译时会优先查找当前目录,能立即绕过路径问题。但一旦更换电脑或发送给他人就会失效,因此仅限应急使用,切勿依赖。
验证宏包是否真正可用
先不要急于编写大型文档,建议创建一个最小的测试文件,内容仅需三行:
\documentclass{article}
\usepackage{ctex}
\begin{document}你好\end{document}
保存为 test.tex,在 TeXmaker 中使用 XeLaTeX 编译。如果成功生成 PDF 并正常显示中文,说明宏包已正确安装;如果仍然报错,请检查是否误用了 pdfLaTeX 编译器——ctex、xeCJK 这类中文宏包必须搭配 XeLaTeX 或 LuaLaTeX 才能正常工作。在 TeXmaker 中点击 Options → Configure TeXmaker → Quick Build → 选择“XeLaTeX + View PDF”并设为默认,切勿混淆。
