それでは、LaTeXParser を Java で作成する必要があります。以下のようなファイルを取り込んで、有効性とエラーを確認します。今、私は実際に助けやコードを探しているのではなく、概念的な理解、つまり問題に対処する方法を探しています。スタックを使用してブロックを保存し、すべてが適切にソートされるようにします。だからあなたへの私の質問は、それをどのように処理するのですか?
たとえば、最初にすべての「\begin{ _ }」を取得してスタックに入れ、対応する「\end{}」でポップする必要がありますか? 特定の文字列が見つかったときに、スタック上でその文字列に基づいて必要なアクションを実行する、文字列ベースのケース スイッチ システムを使用することを考えていました。
または、互いに打ち消し合う 2 つのスタック、すべての \begins と \ends が別のものにあり、それらの { _ _} が一致している場合、それらをポップアウトし始めます。
そうそう、この問題について私がどのように考えるべきか、またどのように対処すべきかについて、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}
編集:笑誰もがこの方法を考えすぎていると思いますyyyyy、私はコードを認識してコンパイルしたり、このファイルを介して LATEX 言語のアクションを実際に実行したりするものを探していません。上記のようなテキスト ファイルを作成し、それをプログラムで開いて読み取らせ、「開始するすべてのブロックも終了するので、これでうまくいくだろう!」と言うことができるようにしたいだけです。または「10行目にエラーがあります!」それ以上でもそれ以下でもありません。スタックを使用してブロックを格納し、最後が見つかったときにブロックをポップする単純なバリデーター/エラー チェッカーです。繰り返しますが、私はコードや配布資料を探しているわけではありません! 私が望むのは、この問題に対処するための良いアイデアと方法、せいぜい疑似コードの構造化だけです!
たとえば...これをすべてメインの1つのクラスに含め、「 \begin{ _ }」のようにコード化されたファイル内のすべての文字列を保持するスタックを作成することを考えていました。対応する " \end{ } " を見つけて、それをポップアウトして、リストか何かからチェックアウトしました。ファイルの実行が終了するまでにすべての開始ブロックがポップされた場合、有効な .txt ファイルがあります。