LaTeX 报错有时候真感觉挺无力的

102 天前
 Cineray

论文写一半,latex 突然报错了,也没有加宏包什么的,后来发现模板也报错了,但之前都是好的。

19: Undefined control sequence. \ExplSyntaxOn
20: Undefined control sequence. \seq
20: Missing $ inserted. \seq_
20: Missing \begin{document}. \seq_
20: Undefined control sequence. \seq_new:N \g
20: Missing { inserted. \seq_new:N \g__
21: Undefined control sequence. \DeclareDocumentCommand
21: Undefined control sequence. \DeclareDocumentCommand \mathcolor
23: Undefined control sequence. \mode
23: \mathcolor allowed only in math mode. ...f_math:F { \non@alpherr {\mathcolor\space}
24: Undefined control sequence. \seq
24: Undefined control sequence. \seq_gpush:No \g
24: Missing { inserted. \seq_gpush:No \g__
25: Undefined control sequence. \group
25: Undefined control sequence. \group_insert_after:N \use
26: Undefined control sequence. \IfValueTF
26: You can't use `macro parameter character #' in math mode. \IfValueTF {#
26: Illegal parameter number in definition of \@@mod. \IfValueTF {#1} { \color[#1]{#2}
26: Undefined control sequence. \IfValueTF {#1} { \color[#1]{#2}
26: Package xcolor Error: Undefined color model `##1'. \IfValueTF {#1} { \color[#1]{#2}
26: Extra }, or forgotten \endgroup. \IfValueTF {#1} { \color[#1]{#2} }
26: Illegal parameter number in definition of \XC@@tmp. ...lueTF {#1} { \color[#1]{#2} } { \color{#2}
26: Undefined control sequence. ...lueTF {#1} { \color[#1]{#2} } { \color{#2}
26: Missing number, treated as zero. ...lueTF {#1} { \color[#1]{#2} } { \color{#2}
26: Undefined control sequence. ...lueTF {#1} { \color[#1]{#2} } { \color{#2}
26: Undefined control sequence. ...lueTF {#1} { \color[#1]{#2} } { \color{#2}
26: Missing } inserted. ...lueTF {#1} { \color[#1]{#2} } { \color{#2}
26: Undefined control sequence. ...lueTF {#1} { \color[#1]{#2} } { \color{#2}
26: Package xcolor Error: Undefined color model `##1'. ...lueTF {#1} { \color[#1]{#2} } { \color{#2}
26: Extra }, or forgotten \endgroup. ...eTF {#1} { \color[#1]{#2} } { \color{#2} }
27: You can't use `macro parameter character #' in math mode. #
29: Extra }, or forgotten \endgroup. }
30: Undefined control sequence. \cs
32: Undefined control sequence. \peek
34: Undefined control sequence. \group
35: Undefined control sequence. \token
37: Missing $ inserted. \c_
37: Missing { inserted. \c_
38: Missing $ inserted. \c_
38: Missing { inserted. \c_
39: Extra }, or forgotten $. }
42: Undefined control sequence. \token
44: Limit controls must follow a math operator. \limits
44: Limit controls must follow a math operator. \limits { \limits
45: Limit controls must follow a math operator. \nolimits
45: Limit controls must follow a math operator. \nolimits { \nolimits
46: Limit controls must follow a math operator. \displaylimits
46: Limit controls must follow a math operator. ... \displaylimits { \displaylimits
49: Undefined control sequence. \group
50: Undefined control sequence. ... \__mathcolor_scan_for_scripts:w \use
53: Undefined control sequence. \token
56: Missing { inserted. \c
56: Missing $ inserted. \c_
56: Missing { inserted. \c_
57: Extra }, or forgotten $. ... \exp_after:wN \prim@s \use
57: Undefined control sequence. ... \exp_after:wN \prim@s \use
58: Extra }, or forgotten $. }
60: Undefined control sequence. \group
62: Undefined control sequence. \seq
62: Undefined control sequence. \seq_gpop:NN \g
62: Missing { inserted. \seq_gpop:NN \g__
65: Extra }, or forgotten $. }
66: Extra }, or forgotten $. }
67: Extra }, or forgotten $. }
68: Undefined control sequence. \cs
68: You can't use `macro parameter character #' in math mode. ...ected:Npn \__mathcolor_handle_scripts:Nw #
70: You can't use `macro parameter character #' in math mode. #
70: Missing $ inserted. #1 \c_
70: Missing { inserted. #1 \c_
70: Missing $ inserted. #1 \c_group_begin_token \c_
70: Missing { inserted. #1 \c_group_begin_token \c_
71: Undefined control sequence. \seq
71: Undefined control sequence. \seq_get:NN \g
71: Missing { inserted. \seq_get:NN \g__
73: Undefined control sequence. \group
73: Missing $ inserted. \group_insert_after:N \c_
73: Missing { inserted. \group_insert_after:N \c_
74: Undefined control sequence. \group
75: Undefined control sequence. \peek
77: Undefined control sequence. \token
77: Missing $ inserted. ...token_if_eq_meaning:NNTF \l_peek_token \c_
77: Missing { inserted. ...token_if_eq_meaning:NNTF \l_peek_token \c_
79: Undefined control sequence. \group
80: Undefined control sequence. \peek
80: Missing $ inserted. \peek_catcode_remove:NT \c_
80: Missing { inserted. \peek_catcode_remove:NT \c_
81: Extra }, or forgotten $. }
83: Undefined control sequence. \exp_after:wN \group
84: Undefined control sequence. \use
84: Missing $ inserted. \use_ii_i:nn \c_
84: Missing { inserted. \use_ii_i:nn \c_
85: Extra }, or forgotten $. }
86: Extra }, or forgotten $. }
87: Extra }, or forgotten $. }
88: Undefined control sequence. \ExplSyntaxOff
802: Missing $ inserted.
6: Missing } inserted. \begin{document}
6: Missing $ inserted. \begin{document}
6: Missing } inserted. \begin{document}
6: Missing } inserted. \begin{document}
: No journal specified, using default cha.
35: Command \l invalid in math mode
37: Command \c invalid in math mode

: You have requested, on input line 109, version `2018/09/10' of package pdftexcmds, but only version `2017/03/19 v0.25 Utility functions of pdfTeX for LuaTeX (HO)' is available.

根据最后一条我以为是 tex 或者 pdftex 或者 luatex 的版本问题,但我用的最新的 texlive2023 ,所有的宏包也是新的,然后即便我强制修改了 version 问题,其他的报错我也找不到解决方法。

TeX 3.141592653 (TeX Live 2023)
pdfTeX 3.141592653-2.6-1.40.25 (TeX Live 2023)
This is LuaTeX, Version 1.16.0 (TeX Live 2023)

环境设置也没有问题,overleaf 可以用,但是由于我文档太大了编译时间超过了免费版的时间,所以选择本地编译,也不应该这么难吧。。。

texhash && fmtutil-sys --all也试过了,没有用,包都是最新的。google 也搜不到相关资料,写一天论文 debug 半天也挺无力的。

2568 次点击
所在节点   TeX
26 条回复
barlogscc
102 天前
用不同的编译器试试
sunzhuo
102 天前
GPT4 pro 试了吗?
geelaw
102 天前
技巧是看第一个错误,说的是 \ExplSyntaxOn 是未定义的控制序列,这是 LaTeX 3 的 expl3 功能,于是目前有两种可能,一是你的 TeX 没有支持它,二是某段代码破坏了这个控制序列。

我想提示到这里你可以继续尝试调试了。
ranaanna
102 天前
如果编译通过和通不过之间环境没有任何变动,那么多半是有语法错误。
如果有变动,那么可能是用了过时的宏包。因为查了一下即使是“version `2018/09/10' of package pdftexcmds”也是过时的。也有可能是需要安装 pdftexcmds ,因为之前 pdftexcmds 是包含在 oberdiek 的,大概 19 年前后从后者分离出来了。所以如果近期更新了 oberdiek ,必须要新装 pdftexcmds ,参见 https://github.com/ho-tex
passive
102 天前
不用去读错误报告,直接上 git bisect
A01514035
102 天前
现在都用 overleaf 了,本地 latex 编译太恶心了。
HongyuGao
102 天前
+1 ,第一次用,被报错给整麻了,效果也达不到预期。即使没有报错了还是会出现一些奇奇怪怪的表现,也不知道是哪里出的问题,问 gpt 也不知道该怎么描述
ranaanna
102 天前
@geelaw 哇,一针见血的答复。OP 的 TeX 不支持
ranaanna
102 天前
@geelaw 所以是 l3kernel?
Cineray
102 天前
@sunzhuo 试过了
@geelaw 我的 tex 是最新的版本应该支持 latex3 ?`某段代码破坏了这个控制序列`请问这个一般要怎么调试呀?现有的 log 文件没有更多的信息了。而且我没有改过除了我 tex 文件以外的代码。
Cineray
102 天前
@passive 没有上 git.应该是软件环境层的问题?我的 tex 代码是可以跑的。
@A01514035 overleaf 确实好用,可惜太长的文件无法编译。
@HongyuGao 对对对,写文章的时间一半要用来 debug ,资料也不多,难顶。
ranaanna
102 天前
@Cineray 没有 latex3 ,已经停止开发了。但是相关的约定和概念都在 l3kernel 和 l3package 里面。如果要想有关的宏命令,要安装这两个包
geelaw
102 天前
@A01514035 #6 我感到很困惑,因为 Overleaf 的在线编译用的是同一套软件,会出现的错误都是一样的。另外,由于通用性问题,在线每次都是全量重编译,比本地慢很多。

@ranaanna #9 我不知道,我个人使用的是 MiKTeX + 自动安装缺少的包,只会偶尔手动更新包到最新版,就没遇到过这种情况。

@Cineray #10 第一步是利用版本控制或者复制代码,不断删减直到得到较小的出错代码。

日志说第一个错误在第 19 行,后续包版本的问题却是第 109 行,并且中途显示 \begin{document} 是第 6 行,说明第一个错误不在 \begin{document} 所在的文件里面。

首先找到第一个错误所在的文件,然后找到你自己写的文件里面所有引用那个文件之前的内容并观察。
kenvix
102 天前
latex 这东西的垃圾编译器是真的恶心,除了写论文我现在能 md 则 md ,不能 md 则 word ,最后才考虑 latex
Cineray
101 天前
@geelaw 装了个 MiKTeX ,好像没问题了。texlive2023 什么鬼(捂脸
zhuangzhuang1988
101 天前
要不试试 Typst
虽然功能肯定没有 latex 强。
Cineray
101 天前
@zhuangzhuang1988 这种都是 paper 指定的 latex 模板。不然我觉得 word 也能写哈哈哈
petermu
101 天前
可以试试 TeXPage (www.texpage.com),免费版编译时长 1 分钟,大多数情况下 1 分钟够用了,TeXPage 提供 LaTeX 方面的技术支持服务,遇到问题可以通过发送邮件到 support@texpage.com 获取帮助。
RVRGnXxwawP5kwKW
101 天前
LaTeX 的 debug 确实非常麻烦,报错信息不直接,这是历史遗留问题基本上也无解了。

我的经验是,一步步把代码都注释了,直到不报错为止,然后一段段取消注释,应该就能定位到问题。

Overleaf 使用的 TeXlive ,所以 overleaf 能编译那么本地 texlive 应该也能编译。
dcoder
101 天前
不写论文的话, 真是不想折腾这垃圾东西

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1012225

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX