祝大家中秋国庆双节快乐!
回过头来,我们在编程过程中,经常会遇到各种各样的问题。然而,很多问题都无法解决,网上夹杂着各种冗余的回答,甚至需要看自己多年前的博客来解决。为更好地从事科学研究和编程学习,后续将撰写各类常见错误及解决方法的汇总笔记,希望对您有所帮助。
本文主要介绍LaTeX常见错误,包括Package pdftex.def Error: File `figures//4-eps-converted-to.pdf’ not found: using draft setting、参考文献未显示及越界问题、特殊符号引用总结等,并且将长期更新和完善。本文采用的工具为TeXLive 2022,操作系统为Windows 11。
文章目录
- 一.TexLive2022安装
- 二.Package pdftex.def Error: File `figures//4-eps-converted-to.pdf' not found: using draft setting.
- 三.Texlive参考文献Bib未显示
- 四.特殊符号引用总结
- 五.参考文献超链接太长越界
- 六.表格越界垂直居中和竖直显示问题
- 总结
一.TexLive2022安装
TeXLive安装过程比较简单,可以从清华大学开源软件镜像站下载资源,如下图所示:
- https://mirrors.tuna.tsinghua.edu.cn/CTAN/systems/texlive/Images/
第一步,解压IOS文件并以管理员权限运行“install-tl-windows.bat”文件。
第二步,傻瓜式安装TeX Live,包括安装路径等。
第三步,点击“Advanced”中的“Customize”,选择要安装的内容,保留常见的语言。
接着是傻瓜式安装。
第四步,右键“我的电脑”->“属性”,点击“高级系统设置”,添加TeXLive的系统环境变量。
- D:\texlive\2022\bin\win32
然后在运行(Win+R键)中输入CMD,输入“latex -v”查看版本信息,即安装成功。
第五步,尽管TeXLive自带Texworks editor,但很多读者习惯使用其它编辑器,如VS Code、TeXstudio等,因此介绍如何安装TeXstudio。下载后傻瓜式安装即可。
第六步,运行TeXstudio并在“选项”中设置TeXstudio,首先显示所有行号。
其次,在“构建”中设置编译器为“PdfLaTeX”。如果是中文,可以设置为“XeLaTeX”。
运行结果如下图所示:
二.Package pdftex.def Error: File `figures//4-eps-converted-to.pdf’ not found: using draft setting.
背景知识:
在使用Texlive对要提交的论文排版,通常要求图片为eps格式,并且LaTeX通常能自动转换为PDF文件(xx-eps-converted-to.pdf)。然而,eps图片在转换为PDF文件时会报错,如何解决该问题呢?
·
引用代码:
\begin{figure}[!ht]
\centering
\includegraphics[width=0.3\textwidth]{4.eps}
\caption{OFDM system}
\label{fig8}
\end{figure}
错误提示:
- ! Package pdftex.def Error: File `figures//4-eps-converted-to.pdf’ not found: using draft setting. See the pdftex.def package documentation for explanation. Type H for immediate help.
- !!! Error: Cannot open figures//4.eps: No such file or directory
- D:\texlive\texlive\2022\bin\win32\runscript.tlu:915: command failed with exit code 2: perl.exe d:\texlive\texlive\2022\texmf-dist\scripts\epstopdf\epstopdf.pl --restricted “–outfile=figures//4-eps converted-to.pdf” “figures//4.eps”
- [5.5]GPL Ghostscript 9.55.0: **** Could not open temporary file ‘’ **** Unable to open the initial device, quitting. epstopdf ($Id: epstopdf.pl 48681 2018-09-16 23:03:58Z karl $) 2.28 !!! Error: Writing to gswin32c failed, error code 1
解决方法:
第一步,检查图片命名规则。
- 注意:插入的图片命名不能留有空格,尽量是完整的英文字符串,分隔可以增加‘-’之类的符号。
- 如果命名不存在空格,继续检查。
第二步,增加宏包,注意顺序。
\usepackage{graphicx}
\usepackage{epstopdf}
\graphicspath{{figures/}}
第三步,用命令行编译。
pdflatex --shell-escape 具体文件名.tex
在需要编译tex文件夹下输入cmd,即可打开命令行。
然而仍然报错,提示“epstopdf 不是可执行文件”,怀疑是环境安装问题(最后一个错误)。
第四步,epstopdf需要安装ghostscript才能转换,重新下载Ghostscript和gswin32c.exe并进行安装,然而仍然失败。下载地址如下:
- https://www.ghostscript.com/releases/gsdnld.html
- https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs10020/gs10020w32.exe
安装后的文件如下所示:
- C:\Program Files (x86)\gs\gs10.02.0
可以看到TexLive以及添加了相关程序路径。
第五步,欲哭无泪 o(╥﹏╥)o,卸载软件重新安装还是报错。
第六步,本地转换PDF文件仍然报错,确认是下列问题导致。
- epstopdf --debug photo.eps photo.pdf
GPL Ghostscript 9.55.0: **** Could not open temporary file ‘’ **** Unable to open the initial device, quitting. epstopdf ($Id: epstopdf.pl 48681 2018-09-16 23:03:58Z karl $) 2.28 !!! Error: Writing to gswin32c failed, error code 1
网上有反馈该报错由于中文路径或用户名为中文导致,然后作者电脑均为英文路径。
第七步,最后只能在线手动将EPS图片转为PDF文件,等以后再解决该问题,难受。
- https://convertio.co/zh/eps-pdf/
- https://cloudconvert.com/eps-to-pdf(效果颇佳)
下面补充另一个常见错误及其解决方法。
epstopdf ($Id: epstopdf.pl 66407 2023-03-06 23:44:49Z karl $) 2.31
!!! Error: Input filename ‘fig/Fig1.eps’ not allowed in restricted mode.
Package pdftex.def Error: File `fig/XXX-eps-converted-to.pdf’ not found: using draft setting. …
该错误属于restricted相关的系统Bug,需要修改texmf-dist\scripts\epstopdf\epstopdf.pl文件代码,如下图所示,将“$restricted = 1 if $::opt_restricted;”修改为“$restricted = 0 if $::opt_restricted;”。
如果该文件没有写入权限,则修改下权限即可。
参考资料:
- https://tex.stackexchange.com/questions/199225/package-pdftex-def-error/536664
- https://stackoverflow.com/questions/46272914/textext-inkscape-ghostscript-and-matex-mathematica-compatibility
- https://blog.csdn.net/xyx2999/article/details/129715573
三.Texlive参考文献Bib未显示
在Texlive中,通常有两种格式的引用参考文献。
(1)第一种方式直接在main.tex文件中撰写,以thebibliography的形式。
\begin{thebibliography}{49}
\bibitem{b1} Microsoft, ``What is PowerShell? - PowerShell | Microsoft Docs,''
Website: https://docs.microsoft.com/en-us/powershell/scripting/overview, 2022.
\bibitem{b2} D. Hendler, S. Kels, et al., ``AMSI-Based Detection of Malicious PowerShell
Code Using Contextual Embeddings,'' in 15th ACM Asia Conference on Computer and
Communications Security (AsiaCCS). ACM, 2020, pp. 679-693.
\bibitem{b49} M. Ring, D. Schlor, et al., ``Malware detection on windows audit logs using
LSTMs,'' Computers \& Security, vol.109, 2021, p. 102389.
\end{thebibliography}
(2)第二种方式将参考文献写在myref.bib,以 \bibliography{myref} 的形式添加。
@misc{b1,
title = {What is PowerShell? - PowerShell | Microsoft Docs},
url = {https://docs.microsoft.com/en-us/powershell/scripting/overview},
author = {Microsoft},
year = {2022}
}
@inproceedings{b2,
title={Amsi-based detection of malicious powershell code using contextual embeddings},
author={Hendler, Danny and Kels, Shay and Rubin, Amir},
booktitle={Proceedings of the 15th ACM Asia Conference on Computer and Communications Security (AsiaCCS)},
pages={679--693},
year={2020},
organization = {ACM}
}
@article{b49,
title={Malware detection on windows audit logs using LSTMs},
author={Ring, Markus and Schl{\"o}r, Daniel and Wunderlich, Sarah and Landes, Dieter and Hotho, Andreas},
journal={Computers \& Security},
volume={109},
pages={102389},
year={2021},
publisher={Elsevier}
}
参考文献BIB格式可以通过谷歌学术下载。同样,ChatGPT能够修改对应的格式,如百度的文心一言。参考文献格式推荐:
- https://www.jianshu.com/p/f335e75487cb
然后在生成参考文献时,总会遇到文献未显示的现象,如下图所示。
解决方法通常包括三个步骤:
- 第一步,采用pdfLaTex编译“main.tex”,将会生成main.aux文件;
- 第二步,采用BibTex编译“main.aux”文件,并生成main.bbl文件;
- 第三步,采用pdfLaTex编译“main.tex” 2 次即可,第一次生成文献无标号,第二次则正常显示。
参考资料:
- https://blog.csdn.net/b_b1949/article/details/127333067
四.特殊符号引用总结
1.半圆
导入引用包和代码:
\usepackage{tikz}
\newcommand*\emptycirc[1][1ex]{\tikz\draw (0,0) circle (#1);}
\newcommand*\halfcirc[1][1ex]{%
\begin{tikzpicture}
\draw[fill] (0,0)-- (90:#1) arc (90:270:#1) -- cycle ;
\draw (0,0) circle (#1);
\end{tikzpicture}}
\newcommand*\fullcirc[1][1ex]{\tikz\fill (0,0) circle (#1);}
使用如下:
\fullcirc
\halfcirc
\emptycirc
参考文献:https://blog.csdn.net/weixin_43846270/article/details/108202031
2.勾叉
导入引用包和代码:
\usepackage{pifont} % \ding{xx}
\usepackage{bbding} % \Checkmark,\XSolid,... (需要和pifont宏包共同使用)
使用如下:
\checkmark
\Checkmark
\CheckmarkBold
\XSolid
\XSolidBold
\XSolidBrush
其它参见的符号参考Xovee老师的文章,详见参考文献。
参考文献:
- https://blog.csdn.net/hyk_1996/article/details/124486173
- https://blog.csdn.net/xovee/article/details/122179352
3.纸牌
引用代码如下:
$\clubsuit$
$\spadesuit$
$\heartsuit$
$\diamondsuit$
其它常见的符号推荐如下所示的博客。
- https://blog.csdn.net/ying_xu/article/details/51240291
- https://blog.csdn.net/YEN_CSDN/article/details/79966985
五.参考文献超链接太长越界
在LaTeX中,通常引用在线文章时,会出现参考文献太长的情况,尤其是URL。如下图所示:
@misc{30,
title = {Practical behavioral profiling of PowerShell scripts through static analysis (Part2)},
url = {https://unit42.paloaltonetworks.com/practical-behavioral-profiling-of-powershell-scripts-through-static-analysis-part-2},
author = {Jeff White},
year = {2017}
}
解决方法是导入如下包即可。
\usepackage{url}
\def\UrlBreaks{\do\A\do\B\do\C\do\D\do\E\do\F\do\G\do\H\do\I\do\J
\do\K\do\L\do\M\do\N\do\O\do\P\do\Q\do\R\do\S\do\T\do\U\do\V
\do\W\do\X\do\Y\do\Z\do\[\do\\\do\]\do\^\do\_\do\`\do\a\do\b
\do\c\do\d\do\e\do\f\do\g\do\h\do\i\do\j\do\k\do\l\do\m\do\n
\do\o\do\p\do\q\do\r\do\s\do\t\do\u\do\v\do\w\do\x\do\y\do\z
\do\.\do\@\do\\\do\/\do\!\do\_\do\|\do\;\do\>\do\]\do\)\do\,
\do\?\do\'\do+\do\=\do\#}
导入后的效果如下图所示,而且对齐美观。
另一种解决方法说是调用breakurl包实现,而URL通常利用“-”连接。
\usepackage{hyperref}
\usepackage[hyphenbreaks]{breakurl}
六.表格越界垂直居中和竖直显示问题
(持续更新中)
总结
写到这里,希望这篇文章对您有所帮助,后续也将继续更新内容,并将一些LaTeX使用技巧进行总结,比如表格、算法、图片等排版内容。
月是故乡明,伟大祖国母亲生日快乐。见过各地山水,最清澈的还是家乡施秉的杉木河;吃过很多酸汤,最正宗的还是家乡黔东南的红酸白酸。难得这两天回老家看看,看到了家乡的发展和变化;看到了自己零几年的读书笔记;看到了小学中学的奖状和证件,值得纪念的是全县中考第一和那两张全国物理和数学竞赛获奖;看到了父亲为自己包好的各类文学书,以及父亲九几年手写的书法和绘画,并刻在自家的桌椅上(图3),父爱母爱伟大。
回首,人生犹如贵州连绵的青山绿水,总是起起伏伏,从小学到初中是上升期;紧接着到高中又直线下降;到大学初学程序又波折起伏;硕士毕业初为老师又缓慢下降;到发改借调又短暂回升;读博又起伏波折,如今又直线下降。然而,家乡的大山总能让我们养成质朴的性格,正如女神总笑我去哪都要背着个电脑,陪伴之余还是要敲敲代码,看看这平凡的世界。脚踏实地,知行合一,见笑见笑,爱你们喔!祝大家双节快乐。
(By:Eastmount 2023-10-03 夜于黔东南 http://blog.csdn.net/eastmount/ )