VSCode Latex 编译报错问题汇总

  1. 使用 pdflatex 四步编译,下载的 IEEE 期刊模版,报错:I found no \bibdata command

    原因是该 receipe 使用了 bibtex 可执行文件,会需要 bib 引用作为输入,因此解决方法就是在.tex 文件的\end{document}前面加两句

    1
    2
    \bibliographystyle{IEEEtran}
    \bibliography{refs.bib}

    然后创建 refs.bib, 看可否,不行的话,引用一个文献,就可以了

  2. pdflatex 和 xelatex 区别

    区别比较多,基本语言区别不大。比如字体方面,XeLaTeX 是可以直接调用操作系统字体的,多语言的场景,xelatex 使用比较方便,PDFLaTeX 是不行的。英文场景 pdflatex 足够用了。

  3. vscode latex 中 sort bib 的功能,按照作者年份等排序,并可配置是否去重等,但是一般用不到.

  4. latex 编译报错

    1. 杀掉 vscode 进程,重启 vscode
    2. 删除辅助文件,重新编译
    3. 检查 begin end {} 配对数目
    4. 检查公式的 _ 是否转义
    5. 换 overleaf 编译一下试试

LaTeX 报错容易找不到的地方

  1. 作者邮箱中含有 _ 等需要反斜杠转义的符号
  2. 作者的 bio 中含有 & 等需要反斜杠转义的符号

Latex no endif endfor

1
\usepackage[noend]{algorithmic}

伪代码 _ 要写成\_ 转义

Underfull hbox (badness 10000) in paragraph at lines

Underfull 是说该处排版内容太稀疏了(badness 10000) 是 TeX 衡量排版效果不好的一个尺度;可以通过使用空格符和换行符来进行处理。

Overfull 是说该处内容太多,超出了设定的印刷范围 49.88315 点。这多数是由于系统无法找到合适的自动换行点造成的。

不过这两个警告都不影响实际显示,若嫌麻烦,不处理也没事。造成 underfull 的原因有很多,最常见是在不该使用 \\ 的地方使用了 \\.

supplementary

supplementary 使用的包建议直接从主文件完全复制过来,然后加上以下两行:

1
2
3
\usepackage{xr}
\externaldocument{主文件名字}
\setcounter{equation}{设置 supplementary 的公式起始符号}

如果主文件使用了 hyperref 包来点击跳转和加 bookmark,那 supplementary 还需要加上以下两行:

1
2
\usepackage[breaklinks,colorlinks,linkcolor=black,citecolor=black,urlcolor=black]{hyperref}
\usepackage{xr-hyper}

最近使用的时候就因为主文件使用了 hyperref,然后 supplementary 没有加上这两行,导致引用主文件公式的时候名称多一些 section 名字,通过查看 aux 辅助文件,我料想应该是这个包的问题,尝试之后确实纠正了。

supplementary 使用 appendices 大片空白

当要把正文中的证明等换到 supplementary 中时,由于当时将正文的公式都使用了下面的命令进行空间压缩,因此 latex 的自动调整不合适了。因此去掉这些固定距离的代码,latex 自动调整就没有大片空白了。

1
2
\setlength{\abovedisplayskip}{1pt}
\setlength{\belowdisplayskip}{1pt}

\\\newline 前方需要有问题,否则报错 LaTeX Error: There's no line here to end.

参考资料

hyperref - {}\edef \Hy@tempb {cite.error when citing same bibtex entry in - TeX - LaTeX Stack Exchange