为什么LaTeX/pdflatex编译器如此';时髦的';与c++;?
对于latex/pdflatex编译器为何在以下两个方面很时髦,是否有一个简单的解释: 1) N在达到“稳定状态”版本之前,需要多次编译。如果我使用许多软件包和参考资料,N似乎会增长到5或6个左右 2) 错误消息几乎总是毫无价值的。未标记实际错误。例如:为什么LaTeX/pdflatex编译器如此';时髦的';与c++;?,pdf,compiler-construction,latex,compiler-errors,pdf-generation,Pdf,Compiler Construction,Latex,Compiler Errors,Pdf Generation,对于latex/pdflatex编译器为何在以下两个方面很时髦,是否有一个简单的解释: 1) N在达到“稳定状态”版本之前,需要多次编译。如果我使用许多软件包和参考资料,N似乎会增长到5或6个左右 2) 错误消息几乎总是毫无价值的。未标记实际错误。例如: \begin{itemize} % Line 499 \begin{enumerate} % Comment: error: forgot to close the enumerate block \item Thi
\begin{itemize} % Line 499
\begin{enumerate}
% Comment: error: forgot to close the enumerate block
\item This is a bullet point.
\end{itemize} % Line 503
结果:“扫描\begin{document}时第1行出错”,不是很有用
<>我意识到有一个单独的“TEX Exchange”,但我想知道如果有人对C++、java或其他编译器有知识,可以提供一些关于如何支持单编译和正确错误定位的见解。p>
编辑:这篇文档看起来像是在为latex实现中的黑客行为辩护,但是latex的语法/语言属性如何使得奇怪的实现成为必要 从乳胶的角度来看:
\end{itemize}
,它实际上也被转换为一系列其他/不同的(原始)宏,从而消除了显而易见的人类结构,从而也消除了奇怪的错误消息。这就是为什么有些错误消息很难解释不过,如果它们更明确一点,这将是有用的://我知道多重编译是必要的,因为它能够在标记中标记方程式、页面等,并在以后引用它们。该文件必须编译一次,对所有方程进行编号,然后再次将这些编号替换到参考文献中。这是一个好问题。考虑到Don Knuth发明了LR(1)解析……许多编译器都会对其源代码进行多次传递。并不是所有的编译器都能说明这一点。你不应该将LaTeX或其他文档编译器与软件编译器进行比较。他们的任务截然不同。LaTeX在第一次运行中写入某些信息,如标签的值和位置,然后在第二次运行中包含它们。目录是通过将剖切宏中的所有信息写入
.toc
文件生成的,该文件随后将包含在下一次运行中。如果没有多次运行,LaTeX将不得不缓冲整个文档,以便在开始时包含TOC,并在最后提供信息。啊,没有阅读其他答案,似乎我只是重复了已经说过的内容