好吧,所以我必须用 java 编写一个 LaTeXParser,我将接收一个类似于下面这个的文件并读取它的有效性和错误。现在我不是真的在寻找帮助或代码,而是更多的概念理解,如何解决问题。我将使用 Stacks 来存储块并确保所有内容都正确排序。所以我的问题是,如何处理它?
例如,我是否应该首先获取所有“\begin{ _ }”并将它们放入堆栈,然后将它们与相应的“\end{}”一起弹出?我想知道使用基于字符串的大小写切换系统,当找到特定字符串时,它会在我的堆栈上根据该字符串执行必要的操作。
或者可能是 2 个相互抵消的堆栈,所有的 \begins 在一个中,\end 在另一个中,并且它们的 { _ _} 匹配,我开始将它们弹出等等。
所以,是的,只是想知道 SOF 的聪明头脑对我应该如何思考这个问题以及如何处理它有什么看法。感谢您的输入!
\documentclass{article}
\usepackage{amsmath, amssymb, amsthm}
\begin{document}
{\Large \begin{center} Homework Problems \end{center}}\begin{itemize}\item\end{itemize}
\begin{enumerate}
\item Prove: For all sets $A$ and $B$, $(A - B) \cup
(A \cap B) = A$.
\begin{proof}
\begin{align}
& (A - B) \cup (A \cap B) && \\
& = (A \cap B^c) \cup (A \cap B) && \text{by
Alternate Definition of Set Difference} \\
& = A \cap (B^c \cup B) && \text{by Distributive Law} \\
& = A \cap (B \cup B^c) && \text{by Commutative Law} \\
& = A \cap U && \text{by Union with the Complement Law} \\
& = A && \text{by Intersection with $U$ Law}
\end{align}
\end{proof}
\item If $n = 4k + 3$, does 8 divide $n^2 - 1$?
\begin{proof}
Let $n = 4k + 3$ for some integer $k$. Then
\begin{align}
n^2 - 1 & = (4k + 3)^2 - 1 \\
& = 16k^2 + 24k + 9 - 1 \\
& = 16k^2 + 24k + 8 \\
& = 8(2k^2 + 3k + 1) \text{,}
\end{align}
which is certainly divisible by 8.
\end{proof}
\end{enumerate}
\end{document}
编辑:大声笑我认为每个人都想太多了,我不是在寻找任何可以识别和编译代码的东西,或者实际上通过这个文件执行 LATEX 语言的操作。我只是希望能够编写一个文本文件,就像上面的那个,让我的程序打开它,阅读它,然后说“嘿!这会工作,因为每个开始的块也会结束!” 或者“嘿,第 10 行有错误!” 不多也不少。只是一个简单的验证器/错误检查器,它使用堆栈来包含块,然后在找到结束时弹出它们等等。同样,我不是在寻找代码或讲义!我想要的只是一些解决这个问题的好主意和方法,也许充其量是一些伪代码结构!
例如......我正在考虑将这一切都包含在我的主类中的 1 个类中,并制作一个堆栈来保存文件中的所有字符串,这些字符串被编码为这样的“\begin{ _ }”然后当我找到相应的“ \end{ } ”只是将其弹出并从列表或其他内容中检查它。如果在文件运行结束时弹出每个开始块,则我有一个有效的 .txt 文件。