编译错误如何解决?

编译错误如何解决?

我在编写论文时遇到问题。

我想知道错误发生在哪一行?

我怎样才能做到这一点?

答案1

例如,参见以下带有错误的 MWE:

% http://tex.stackexchange.com/questions/315916/how-to-solve-compiling-error
\documentclass{article}
\begin{document}
Hello \World!
\end{document}

编译后,您将获得一个log包含以下行的文件:

! Undefined control sequence.
l.4 Hello \World                   <========================================= error here===
                !
The control sequence at the end of the top line
of your error message was never \def'ed. If you have
misspelled it (e.g., `\hobx'), type `I' and the correct
spelling (e.g., `I\hbox'). Otherwise just continue,
and I'll forget about whatever was undefined.

[1

{C:/Users/Internet/AppData/Local/MiKTeX/2.9/pdftex/config/pdftex.map}] (315916-HelloWorld.aux) ) 

那里! Undefined control sequence.有一行错误信息。

该行l.4 Hello \World提到,在给定代码的第 4 行中,错误已认可

请注意,错误可能发生得更早,但在这个简单的例子中,错误被正确发现。

该线!表明该符号!不是错误的一部分。

接下来是错误描述,告诉您\World(最后显示的控制序列)未定义。

确实如此,因为对于HelloWorld示例,我们不需要命令,因此前导\只是一个拼写错误。如果应该有一个命令,\World则必须像这样定义\newcommand{\World}{World}或...

错误描述的结尾是行and I'll forget about whatever was undefined.

带有误差的 MWE 的结果 pdf 为

在此处输入图片描述

显示Hello!被打印出来,但World当然是缺失的。这可能是另一个提示,可以在不知道给定错误消息的完整含义的情况下找到错误...

[1顺便说一句:文件中的行log显示第 1 页已开始打印...

现在让我们看一个更复杂的例子:

% http://tex.stackexchange.com/questions/315916/how-to-solve-compiling-error
\documentclass{modernCV} % <============================================

\moderncvstyle{mycasual} % <============================================
\moderncvcolor{blue}


\name{Joe}{Doe} 

\begin{document}
\makecvtitle
\chapter{nonsens} % <===================================================
\section{Languages} 
\cvitemwithcomment{Language1}{Mother tongue}{}
\cvitemwithcomment{Language2}{Some text}{This text is located on the right} 
\cvitemwithcomment{Language3}{Some longer text}{This text is located on the right and it is longer}

\section{Languages 2} 
\mycvitemwithcomment{Language1}{Mother tongue}{}
\mycvitemwithcomment{Language2}{Some text}{This text is located on the right} 
\mycvitemwithcomment{Language3}{Some longer text}{This text is located on the right and it is longer}

\section{Languages 3} 
\mybcvitemwithcomment{Language1}{Mother tongue}{}{5cm}
\mybcvitemwithcomment{Language2}{Some text}{This text is located on the right}{5cm} 
\mybcvitemwithcomment{Language3}{Some longer text}{This text is located on the right and it is longer}{5cm}
\end{document}

我用 标记了这三个错误<===========。您将收到一条消息,指出有 3 个错误且没有写入任何页数(当然,文档类别是错误的!)。

如果出现多个错误,请始终检查文件log并找到第一的错误!为什么是第一个?因为通常第二个、第三个等错误都是由第一个错误引起的。

因此,通常可以通过以下方式找到错误

  1. 定位第一的日志文件中的错误。
  2. 纠正这个错误
  3. 重新编译并从点 1 开始。...

好的,日志文件中的第一个错误是一个警告,我们应该阅读并更正:

This is pdfTeX, Version 3.14159265-2.6-1.40.17 (MiKTeX 2.9 64-bit) (preloaded format=pdflatex 2016.5.24)  23 JUN 2016 01:34
entering extended mode
**./315916-Sample1.tex
(315916-Sample1.tex
LaTeX2e <2016/03/31>
Babel <3.9r> and hyphenation patterns for 75 language(s) loaded.
("C:\Program Files\MiKTeX 2.9\tex\latex\moderncv\modernCV.cls"

LaTeX Warning: You have requested document class `modernCV',
               but the document class provides `moderncv'.

我们使用的文档类中有一个拼写错误。请将其更正为moderncv(无大写 CV)!

我们遇到的第一个错误是:

! LaTeX Error: File `moderncvstylemycasual.sty' not found.

Type X to quit or <RETURN> to proceed,
or enter new name. (Default extension: sty)

这里你需要知道moderncv通过连接两部分来构建一些常用的文件名,这里moderncvstylemycasual。因为我们有不是定义后,mycasual我们收到错误消息,提示无法找到结果文件。更改mycasualcasual,此错误消失。

第二个错误是:

Enter file name: 
! Emergency stop.
<read *> 

这是由之前的错误引起的,在纠正第一个错误并重新编译后就会消失!

以下是之前的错误导致的,在纠正第一个错误并重新编译后就消失了:

l.5 \moderncvcolor
                  {blue}

*** (cannot \read from terminal in nonstop modes)

3. 错误是没有产生 pdf 输出...

所以您看到三个错误,请在我给出的第二个 MWE 中更正前两行并再编译三次。

现在我们得到 6 个错误,因为现在pdflatex识别出一个未定义的命令mycvitemwithcommentmybcvitemwithcomment。假设这是一个拼写错误,并将所有 3 个错误更改mycvitemwithcommentcvitemwithcomment。删除/注释“语言 3”的部分。

修正后的 MWE:

% http://tex.stackexchange.com/questions/315916/how-to-solve-compiling-error
\documentclass{moderncv} % <============================================ modernCV

\moderncvstyle{casual} % <============================================ mycasual
\moderncvcolor{blue}


\name{Joe}{Doe} 

\begin{document}
\makecvtitle
\chapter{nonsens} % <===================================================
\section{Languages} 
\cvitemwithcomment{Language1}{Mother tongue}{}
\cvitemwithcomment{Language2}{Some text}{This text is located on the right} 
\cvitemwithcomment{Language3}{Some longer text}{This text is located on the right and it is longer}

\section{Languages 2} 
\cvitemwithcomment{Language1}{Mother tongue}{}
\cvitemwithcomment{Language2}{Some text}{This text is located on the right} 
\cvitemwithcomment{Language3}{Some longer text}{This text is located on the right and it is longer}

\end{document}

现在看一下pdf。

结果校正 mwe

在那里你会看到一条nonsens来自生产线的印刷品\chapter{nonsense}。你会看到不是所有错误都必须由 LaTeX 发现……

相关内容